diff --git a/.bazelversion b/.bazelversion
index 0062ac971805f..ac14c3dfaa865 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-5.0.0
+5.1.1
diff --git a/.buildkite/pipelines/flaky_tests/groups.json b/.buildkite/pipelines/flaky_tests/groups.json
index aa061af00bd6c..0a5d0d488cd5d 100644
--- a/.buildkite/pipelines/flaky_tests/groups.json
+++ b/.buildkite/pipelines/flaky_tests/groups.json
@@ -25,6 +25,10 @@
"key": "xpack/cypress/fleet_cypress",
"name": "Fleet - Cypress"
},
+ {
+ "key": "xpack/cypress/apm_cypress",
+ "name": "APM - Cypress"
+ },
{
"key": "xpack/cigroup",
"name": "Default CI Group",
@@ -43,4 +47,4 @@
"name": "Default Accessibility"
}
]
-}
+}
\ No newline at end of file
diff --git a/.buildkite/pipelines/pull_request/base.yml b/.buildkite/pipelines/pull_request/base.yml
index 21f324ed12780..a88799d785f06 100644
--- a/.buildkite/pipelines/pull_request/base.yml
+++ b/.buildkite/pipelines/pull_request/base.yml
@@ -44,12 +44,14 @@ steps:
label: 'OSS CI Group'
parallelism: 11
agents:
- queue: ci-group-4d
+ queue: n2-4-spot
depends_on: build
timeout_in_minutes: 120
key: oss-cigroup
retry:
automatic:
+ - exit_status: '-1'
+ limit: 3
- exit_status: '*'
limit: 1
@@ -61,6 +63,8 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
+ - exit_status: '-1'
+ limit: 3
- exit_status: '*'
limit: 1
@@ -72,6 +76,8 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
+ - exit_status: '-1'
+ limit: 3
- exit_status: '*'
limit: 1
@@ -83,6 +89,8 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
+ - exit_status: '-1'
+ limit: 3
- exit_status: '*'
limit: 1
@@ -94,6 +102,8 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
+ - exit_status: '-1'
+ limit: 3
- exit_status: '*'
limit: 1
@@ -105,6 +115,8 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
+ - exit_status: '-1'
+ limit: 3
- exit_status: '*'
limit: 1
@@ -116,6 +128,8 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
+ - exit_status: '-1'
+ limit: 3
- exit_status: '*'
limit: 1
@@ -123,17 +137,25 @@ steps:
label: 'Jest Tests'
parallelism: 8
agents:
- queue: n2-4
+ queue: n2-4-spot
timeout_in_minutes: 90
key: jest
+ retry:
+ automatic:
+ - exit_status: '-1'
+ limit: 3
- command: .buildkite/scripts/steps/test/jest_integration.sh
label: 'Jest Integration Tests'
parallelism: 3
agents:
- queue: n2-4
+ queue: n2-4-spot
timeout_in_minutes: 120
key: jest-integration
+ retry:
+ automatic:
+ - exit_status: '-1'
+ limit: 3
- command: .buildkite/scripts/steps/test/api_integration.sh
label: 'API Integration Tests'
@@ -141,6 +163,10 @@ steps:
queue: n2-2-spot
timeout_in_minutes: 120
key: api-integration
+ retry:
+ automatic:
+ - exit_status: '-1'
+ limit: 3
- command: .buildkite/scripts/steps/lint.sh
label: 'Linting'
@@ -176,6 +202,10 @@ steps:
queue: n2-4-spot
key: build_api_docs
timeout_in_minutes: 60
+ retry:
+ automatic:
+ - exit_status: '-1'
+ limit: 3
- command: .buildkite/scripts/steps/webpack_bundle_analyzer/build_and_upload.sh
label: 'Build Webpack Bundle Analyzer reports'
diff --git a/.buildkite/pipelines/pull_request/response_ops.yml b/.buildkite/pipelines/pull_request/response_ops.yml
new file mode 100644
index 0000000000000..846477170409b
--- /dev/null
+++ b/.buildkite/pipelines/pull_request/response_ops.yml
@@ -0,0 +1,11 @@
+steps:
+ - command: .buildkite/scripts/steps/functional/response_ops_cases.sh
+ label: 'Cases Cypress Tests on Security Solution'
+ agents:
+ queue: ci-group-6
+ depends_on: build
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '*'
+ limit: 1
diff --git a/.buildkite/scripts/pipelines/pull_request/pipeline.js b/.buildkite/scripts/pipelines/pull_request/pipeline.js
index 2d3befd00a890..fa167d9f324b4 100644
--- a/.buildkite/scripts/pipelines/pull_request/pipeline.js
+++ b/.buildkite/scripts/pipelines/pull_request/pipeline.js
@@ -65,7 +65,6 @@ const uploadPipeline = (pipelineContent) => {
if (
(await doAnyChangesMatch([
/^x-pack\/plugins\/security_solution/,
- /^x-pack\/plugins\/cases/,
/^x-pack\/plugins\/lists/,
/^x-pack\/plugins\/timelines/,
/^x-pack\/test\/security_solution_cypress/,
@@ -77,6 +76,13 @@ const uploadPipeline = (pipelineContent) => {
pipeline.push(getPipeline('.buildkite/pipelines/pull_request/security_solution.yml'));
}
+ if (
+ (await doAnyChangesMatch([/^x-pack\/plugins\/cases/])) ||
+ process.env.GITHUB_PR_LABELS.includes('ci:all-cypress-suites')
+ ) {
+ pipeline.push(getPipeline('.buildkite/pipelines/pull_request/response_ops.yml'));
+ }
+
if (
(await doAnyChangesMatch([/^x-pack\/plugins\/apm/])) ||
process.env.GITHUB_PR_LABELS.includes('ci:all-cypress-suites')
diff --git a/.buildkite/scripts/steps/code_coverage/ingest.sh b/.buildkite/scripts/steps/code_coverage/ingest.sh
index a9b95cccb533c..f806b6fa149c2 100755
--- a/.buildkite/scripts/steps/code_coverage/ingest.sh
+++ b/.buildkite/scripts/steps/code_coverage/ingest.sh
@@ -52,4 +52,4 @@ echo "--- Upload coverage static site"
.buildkite/scripts/steps/code_coverage/reporting/uploadStaticSite.sh
echo "--- Ingest results to Kibana stats cluster"
-.buildkite/scripts/steps/code_coverage/reporting/ingestData.sh 'elastic+kibana+code-coverage' ${BUILDKITE_BUILD_ID} ${BUILDKITE_BUILD_URL} ${previousSha} 'src/dev/code_coverage/ingest_coverage/team_assignment/team_assignments.txt'
+.buildkite/scripts/steps/code_coverage/reporting/ingestData.sh 'elastic+kibana+code-coverage' ${BUILDKITE_BUILD_NUMBER} ${BUILDKITE_BUILD_URL} ${previousSha} 'src/dev/code_coverage/ingest_coverage/team_assignment/team_assignments.txt'
diff --git a/.buildkite/scripts/steps/functional/performance_playwright.sh b/.buildkite/scripts/steps/functional/performance_playwright.sh
index 596304d156cf0..d739f136992e7 100644
--- a/.buildkite/scripts/steps/functional/performance_playwright.sh
+++ b/.buildkite/scripts/steps/functional/performance_playwright.sh
@@ -20,10 +20,7 @@ sleep 120
cd "$XPACK_DIR"
-jobId=$(npx uuid)
-export TEST_JOB_ID="$jobId"
-
-journeys=("ecommerce_dashboard" "flight_dashboard" "web_logs_dashboard" "promotion_tracking_dashboard")
+journeys=("login" "ecommerce_dashboard" "flight_dashboard" "web_logs_dashboard" "promotion_tracking_dashboard")
for i in "${journeys[@]}"; do
echo "JOURNEY[${i}] is running"
diff --git a/.buildkite/scripts/steps/functional/response_ops_cases.sh b/.buildkite/scripts/steps/functional/response_ops_cases.sh
new file mode 100755
index 0000000000000..13d0ef52130a3
--- /dev/null
+++ b/.buildkite/scripts/steps/functional/response_ops_cases.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+source .buildkite/scripts/steps/functional/common.sh
+
+export JOB=kibana-security-solution-chrome
+
+echo "--- Response Ops Cases Cypress Tests on Security Solution"
+
+cd "$XPACK_DIR"
+
+checks-reporter-with-killswitch "Response Ops Cases Cypress Tests on Security Solution" \
+ node scripts/functional_tests \
+ --debug --bail \
+ --kibana-install-dir "$KIBANA_BUILD_LOCATION" \
+ --config test/security_solution_cypress/cases_cli_config.ts
diff --git a/.eslintrc.js b/.eslintrc.js
index b12dc63066370..08af34d24e7f5 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1242,132 +1242,6 @@ module.exports = {
},
},
- /**
- * Metrics entities overrides. These rules below are maintained and owned by
- * the people within the security-solution-platform team. Please see ping them
- * or check with them if you are encountering issues, have suggestions, or would
- * like to add, change, or remove any particular rule. Linters, Typescript, and rules
- * evolve and change over time just like coding styles, so please do not hesitate to
- * reach out.
- */
- {
- // front end and common typescript and javascript files only
- files: [
- 'x-pack/plugins/metrics_entities/public/**/*.{js,mjs,ts,tsx}',
- 'x-pack/plugins/metrics_entities/common/**/*.{js,mjs,ts,tsx}',
- ],
- rules: {
- 'import/no-nodejs-modules': 'error',
- 'no-restricted-imports': [
- 'error',
- {
- // prevents UI code from importing server side code and then webpack including it when doing builds
- patterns: ['**/server/*'],
- },
- ],
- },
- },
- {
- // typescript and javascript for front and back end
- files: ['x-pack/plugins/metrics_entities/**/*.{js,mjs,ts,tsx}'],
- plugins: ['eslint-plugin-node'],
- env: {
- jest: true,
- },
- rules: {
- 'accessor-pairs': 'error',
- 'array-callback-return': 'error',
- 'no-array-constructor': 'error',
- complexity: 'error',
- 'consistent-return': 'error',
- 'func-style': ['error', 'expression'],
- 'import/order': [
- 'error',
- {
- groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],
- 'newlines-between': 'always',
- },
- ],
- 'sort-imports': [
- 'error',
- {
- ignoreDeclarationSort: true,
- },
- ],
- 'node/no-deprecated-api': 'error',
- 'no-bitwise': 'error',
- 'no-continue': 'error',
- 'no-dupe-keys': 'error',
- 'no-duplicate-case': 'error',
- 'no-duplicate-imports': 'error',
- 'no-empty-character-class': 'error',
- 'no-empty-pattern': 'error',
- 'no-ex-assign': 'error',
- 'no-extend-native': 'error',
- 'no-extra-bind': 'error',
- 'no-extra-boolean-cast': 'error',
- 'no-extra-label': 'error',
- 'no-func-assign': 'error',
- 'no-implicit-globals': 'error',
- 'no-implied-eval': 'error',
- 'no-invalid-regexp': 'error',
- 'no-inner-declarations': 'error',
- 'no-lone-blocks': 'error',
- 'no-multi-assign': 'error',
- 'no-misleading-character-class': 'error',
- 'no-new-symbol': 'error',
- 'no-obj-calls': 'error',
- 'no-param-reassign': ['error', { props: true }],
- 'no-process-exit': 'error',
- 'no-prototype-builtins': 'error',
- 'no-return-await': 'error',
- 'no-self-compare': 'error',
- 'no-shadow-restricted-names': 'error',
- 'no-sparse-arrays': 'error',
- 'no-this-before-super': 'error',
- // rely on typescript
- 'no-undef': 'off',
- 'no-unreachable': 'error',
- 'no-unsafe-finally': 'error',
- 'no-useless-call': 'error',
- 'no-useless-catch': 'error',
- 'no-useless-concat': 'error',
- 'no-useless-computed-key': 'error',
- 'no-useless-escape': 'error',
- 'no-useless-rename': 'error',
- 'no-useless-return': 'error',
- 'no-void': 'error',
- 'one-var-declaration-per-line': 'error',
- 'prefer-object-spread': 'error',
- 'prefer-promise-reject-errors': 'error',
- 'prefer-rest-params': 'error',
- 'prefer-spread': 'error',
- 'prefer-template': 'error',
- 'require-atomic-updates': 'error',
- 'symbol-description': 'error',
- 'vars-on-top': 'error',
- '@typescript-eslint/explicit-member-accessibility': 'error',
- '@typescript-eslint/no-this-alias': 'error',
- '@typescript-eslint/no-explicit-any': 'error',
- '@typescript-eslint/no-useless-constructor': 'error',
- '@typescript-eslint/unified-signatures': 'error',
- '@typescript-eslint/explicit-function-return-type': 'error',
- '@typescript-eslint/no-non-null-assertion': 'error',
- '@typescript-eslint/no-unused-vars': 'error',
- 'no-template-curly-in-string': 'error',
- 'sort-keys': 'error',
- 'prefer-destructuring': 'error',
- 'no-restricted-imports': [
- 'error',
- {
- // prevents code from importing files that contain the name "legacy" within their name. This is a mechanism
- // to help deprecation and prevent accidental re-use/continued use of code we plan on removing. If you are
- // finding yourself turning this off a lot for "new code" consider renaming the file and functions if it has valid uses.
- patterns: ['*legacy*'],
- },
- ],
- },
- },
/**
* Alerting Services overrides
*/
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 3c991e6a61d53..a06ddaf49822f 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -88,7 +88,6 @@
### Observability Plugins
# Observability Shared
-/x-pack/plugins/observability/ @elastic/observability-ui
/x-pack/plugins/observability/public/components/shared/date_picker/ @elastic/uptime
# Unified Observability
@@ -103,6 +102,7 @@
/x-pack/plugins/observability/public/rules @elastic/actionable-observability
/x-pack/plugins/observability/public/pages/alerts @elastic/actionable-observability
/x-pack/plugins/observability/public/pages/cases @elastic/actionable-observability
+/x-pack/plugins/observability/public/pages/rules @elastic/actionable-observability
# Infra Monitoring
/x-pack/plugins/infra/ @elastic/infra-monitoring-ui
@@ -394,7 +394,6 @@
/x-pack/test/plugin_functional/plugins/resolver_test/ @elastic/security-solution
/x-pack/test/plugin_functional/test_suites/resolver/ @elastic/security-solution
/x-pack/plugins/security_solution/ @elastic/security-solution
-/x-pack/plugins/metrics_entities/ @elastic/security-solution
/x-pack/test/detection_engine_api_integration @elastic/security-solution
/x-pack/test/lists_api_integration @elastic/security-solution
/x-pack/test/api_integration/apis/security_solution @elastic/security-solution
diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel
index ff9014214d4c0..8100e93bcd4df 100644
--- a/WORKSPACE.bazel
+++ b/WORKSPACE.bazel
@@ -10,8 +10,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
# Fetch Node.js rules
http_archive(
name = "build_bazel_rules_nodejs",
- sha256 = "523da2d6b50bc00eaf14b00ed28b1a366b3ab456e14131e9812558b26599125c",
- urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.3.1/rules_nodejs-5.3.1.tar.gz"],
+ sha256 = "2b2004784358655f334925e7eadc7ba80f701144363df949b3293e1ae7a2fb7b",
+ urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.4.0/rules_nodejs-5.4.0.tar.gz"],
)
# Build Node.js rules dependencies
diff --git a/docs/api/cases.asciidoc b/docs/api/cases.asciidoc
index 6342d3c4b8d2f..3b5bfaeceaff4 100644
--- a/docs/api/cases.asciidoc
+++ b/docs/api/cases.asciidoc
@@ -17,7 +17,7 @@ these APIs:
* <>
* <>
* {security-guide}/cases-get-connector.html[Get current connector]
-* {security-guide}/cases-api-get-reporters.html[Get reporters]
+* <>
* <>
* {security-guide}/cases-api-push.html[Push case]
* {security-guide}/assign-connector.html[Set default Elastic Security UI connector]
@@ -40,6 +40,7 @@ include::cases/cases-api-get-case-activity.asciidoc[leveloffset=+1]
include::cases/cases-api-get-case.asciidoc[leveloffset=+1]
include::cases/cases-api-get-status.asciidoc[leveloffset=+1]
include::cases/cases-api-get-comments.asciidoc[leveloffset=+1]
+include::cases/cases-api-get-reporters.asciidoc[leveloffset=+1]
include::cases/cases-api-get-tags.asciidoc[leveloffset=+1]
//UPDATE
include::cases/cases-api-update.asciidoc[leveloffset=+1]
diff --git a/docs/api/cases/cases-api-get-reporters.asciidoc b/docs/api/cases/cases-api-get-reporters.asciidoc
new file mode 100644
index 0000000000000..eca8d3e45173f
--- /dev/null
+++ b/docs/api/cases/cases-api-get-reporters.asciidoc
@@ -0,0 +1,60 @@
+[[cases-api-get-reporters]]
+== Get reporters API
+++++
+Get reporters
+++++
+
+Returns information about the users who opened cases.
+
+=== Request
+
+`GET :/api/cases/reporters`
+
+`GET :/s/api/cases/reporters`
+
+=== Prerequisite
+
+You must have `read` privileges for the *Cases* feature in the *Management*,
+*{observability}*, or *Security* section of the
+<>, depending on the
+`owner` of the cases you're seeking.
+
+=== Query parameters
+
+`owner`::
+(Optional, string or array of strings) A filter to limit the retrieved reporters
+to a specific set of applications. If this parameter is omitted, the response
+will contain all reporters from cases that the user has access to read.
+
+==== Response code
+
+`200`::
+ Indicates a successful call.
+
+==== Example
+
+Returns all case reporters:
+
+[source,sh]
+--------------------------------------------------
+GET api/cases/reporters
+--------------------------------------------------
+// KIBANA
+
+The API returns a JSON object with the retrieved reporters. For example:
+
+[source,json]
+--------------------------------------------------
+[
+ {
+ "full_name": "Alan Hunley",
+ "email": "ahunley@imf.usa.gov",
+ "username": "ahunley"
+ },
+ {
+ "full_name": "Rat Hustler",
+ "email": "jrhustler@aol.com",
+ "username": "rhustler"
+ }
+]
+--------------------------------------------------
diff --git a/docs/api/cases/cases-api-get-tags.asciidoc b/docs/api/cases/cases-api-get-tags.asciidoc
index b97fa23df06e8..426a7e91a0f47 100644
--- a/docs/api/cases/cases-api-get-tags.asciidoc
+++ b/docs/api/cases/cases-api-get-tags.asciidoc
@@ -32,9 +32,9 @@ default space is used.
=== Query parameters
`owner`::
-(Optional, string) Specifies the set of applications to limit the retrieved
-tags. If not specified, the response contains all tags that the user has access
-to read.
+(Optional, string or array of strings) Specifies the set of applications to
+limit the retrieved tags. If not specified, the response contains all tags from
+cases that the user has access to read.
==== Response code
@@ -51,7 +51,8 @@ GET api/cases/tags
--------------------------------------------------
// KIBANA
-The API returns a JSON object with all tags for all cases. For example:
+The API returns a JSON object with the names and email addresses of users who
+opened cases. For example:
[source,json]
--------------------------------------------------
diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc
index 04b21bf737815..e96f1cd819186 100644
--- a/docs/developer/plugin-list.asciidoc
+++ b/docs/developer/plugin-list.asciidoc
@@ -524,12 +524,6 @@ using the CURL scripts in the scripts folder.
|Visualize geo data from Elasticsearch or 3rd party geo-services.
-|{kib-repo}blob/{branch}/x-pack/plugins/metrics_entities/README.md[metricsEntities]
-|This is the metrics and entities plugin where you add can add transforms for your project
-and group those transforms into modules. You can also re-use existing transforms in your
-newly created modules as well.
-
-
|{kib-repo}blob/{branch}/x-pack/plugins/ml/readme.md[ml]
|This plugin provides access to the machine learning features provided by
Elastic.
diff --git a/docs/maps/map-settings.asciidoc b/docs/maps/map-settings.asciidoc
index 21582c3e0c67f..5f353f99da375 100644
--- a/docs/maps/map-settings.asciidoc
+++ b/docs/maps/map-settings.asciidoc
@@ -5,6 +5,12 @@
Maps offers settings that let you configure how a map is displayed.
To access these settings, click *Map settings* in the application toolbar.
+[float]
+[[maps-settings-custom-icons]]
+=== Custom icons
+
+Add, edit, or delete custom icons for the map. Icons added to the map can be used for <>.
+
[float]
[[maps-settings-display]]
=== Display
diff --git a/docs/maps/vector-style-properties.asciidoc b/docs/maps/vector-style-properties.asciidoc
index ac06ba32e6e40..5bedfba28ada0 100644
--- a/docs/maps/vector-style-properties.asciidoc
+++ b/docs/maps/vector-style-properties.asciidoc
@@ -61,6 +61,14 @@ Available icons
[role="screenshot"]
image::maps/images/maki-icons.png[]
+Custom Icons
+
+You can also use your own SVG icon to style Point features in your map. In **Layer settings** open the *icon* dropdown, and click the **Add custom icon** button. For best results, your SVG icon should be monochrome and have limited details.
+
+Dynamic styling in **Elastic Maps** requires rendering SVG icons as PNGs using a https://en.wikipedia.org/wiki/Signed_distance_function[signed distance function]. As a result, sharp corners and intricate details may not render correctly. Modifying the settings under **Advanced Options** in the **Add custom icon** modal may improve rendering.
+
+Manage your custom icons in <>.
+
[float]
[[polygon-style-properties]]
==== Polygon style properties
diff --git a/docs/setup/settings.asciidoc b/docs/setup/settings.asciidoc
index c0b37ba9ec6f3..f5dca28a7da1c 100644
--- a/docs/setup/settings.asciidoc
+++ b/docs/setup/settings.asciidoc
@@ -359,7 +359,7 @@ When `includeElasticMapsService` is turned off, only tile layer configured by <<
| Specifies the URL of a self hosted <>
| [[tilemap-settings]] `map.tilemap.options.attribution:` {ess-icon}
- | The map attribution string. Provide attributions in markdown and use '|' to delimit attributions, for example: `"[attribution 1](https://www.attribution1)|[attribution 2](https://www.attribution2)"`.
+ | The map attribution string. Provide attributions in markdown and use `\|` to delimit attributions, for example: `"[attribution 1](https://www.attribution1)\|[attribution 2](https://www.attribution2)"`.
*Default: `"© [Elastic Maps Service](https://www.elastic.co/elastic-maps-service)"`*
| [[tilemap-max-zoom]] `map.tilemap.options.maxZoom:` {ess-icon}
@@ -689,29 +689,29 @@ sources and images. When false, Vega can only get data from {es}. *Default: `fal
| Enables you to view the underlying documents in a data series from a dashboard panel. *Default: `false`*
| `xpack.ilm.ui.enabled`
-Set this value to false to disable the Index Lifecycle Policies UI.
+ | Set this value to false to disable the Index Lifecycle Policies UI.
*Default: `true`*
| `xpack.index_management.ui.enabled`
-Set this value to false to disable the Index Management UI.
+ | Set this value to false to disable the Index Management UI.
*Default: `true`*
| `xpack.license_management.ui.enabled`
-Set this value to false to disable the License Management UI.
+ | Set this value to false to disable the License Management UI.
*Default: `true`*
| `xpack.remote_clusters.ui.enabled`
-Set this value to false to disable the Remote Clusters UI.
+ | Set this value to false to disable the Remote Clusters UI.
*Default: `true`*
| `xpack.rollup.ui.enabled:`
-Set this value to false to disable the Rollup Jobs UI. *Default: true*
+ | Set this value to false to disable the Rollup Jobs UI. *Default: true*
| `xpack.snapshot_restore.ui.enabled:`
-Set this value to false to disable the Snapshot and Restore UI. *Default: true*
+ | Set this value to false to disable the Snapshot and Restore UI. *Default: true*
| `xpack.upgrade_assistant.ui.enabled:`
-Set this value to false to disable the Upgrade Assistant UI. *Default: true*
+ | Set this value to false to disable the Upgrade Assistant UI. *Default: true*
| `i18n.locale` {ess-icon}
| Set this value to change the {kib} interface language.
diff --git a/docs/user/dashboard/lens.asciidoc b/docs/user/dashboard/lens.asciidoc
index 513671dd51238..b062dcc3349ad 100644
--- a/docs/user/dashboard/lens.asciidoc
+++ b/docs/user/dashboard/lens.asciidoc
@@ -186,6 +186,8 @@ For a time shift example, refer to <>.
[[add-annotations]]
==== Add annotations
+preview::[]
+
Annotations allow you to call out specific points in your visualizations that are important, such as a major change in the data. You can add text and icons to annotations and customize the appearance, such as the line format and color.
[role="screenshot"]
diff --git a/docs/user/dashboard/make-dashboards-interactive.asciidoc b/docs/user/dashboard/make-dashboards-interactive.asciidoc
index 2cb750afbe7d5..06c6675bedba3 100644
--- a/docs/user/dashboard/make-dashboards-interactive.asciidoc
+++ b/docs/user/dashboard/make-dashboards-interactive.asciidoc
@@ -196,7 +196,7 @@ image::images/drilldown_on_panel.png[Drilldown on data table that navigates to a
[[url-drilldowns]]
==== Create URL drilldowns
-URL drilldowns enable you to navigate from a dashboard to external websites. Destination URLs can be dynamic, depending on the dashboard context or user interaction with a panel. To create URL drilldowns, you add <> to a URL template, which configures the behavior of the drilldown.
+URL drilldowns enable you to navigate from a dashboard to external websites. Destination URLs can be dynamic, depending on the dashboard context or user interaction with a panel. To create URL drilldowns, you add <> to a URL template, which configures the behavior of the drilldown. All panels that you create with the visualization editors support dashboard drilldowns.
[role="screenshot"]
image:images/url_drilldown_go_to_github.gif[Drilldown on pie chart that navigates to Github]
@@ -210,13 +210,6 @@ The <> you use to create a <Searched {res.hits.total} documents.;
diff --git a/examples/search_examples/public/search_sessions/app.tsx b/examples/search_examples/public/search_sessions/app.tsx
index fa9ec526e02f7..e3bd839f1f299 100644
--- a/examples/search_examples/public/search_sessions/app.tsx
+++ b/examples/search_examples/public/search_sessions/app.tsx
@@ -30,7 +30,7 @@ import {
EuiTitle,
} from '@elastic/eui';
import { catchError, map, tap } from 'rxjs/operators';
-import { of } from 'rxjs';
+import { lastValueFrom, of } from 'rxjs';
import { CoreStart } from '../../../../src/core/public';
import { mountReactNode } from '../../../../src/core/public/utils';
@@ -693,9 +693,8 @@ function doSearch(
const startTs = performance.now();
// Submit the search request using the `data.search` service.
- return data.search
- .search(req, { sessionId })
- .pipe(
+ return lastValueFrom(
+ data.search.search(req, { sessionId }).pipe(
tap((res) => {
if (isCompleteResponse(res)) {
const avgResult: number | undefined = res.rawResponse.aggregations
@@ -724,7 +723,7 @@ function doSearch(
return of({ request: req, response: e });
})
)
- .toPromise();
+ );
}
function getNumeric(fields?: DataViewField[]) {
diff --git a/package.json b/package.json
index 76948decf33a7..5d863bcc76e75 100644
--- a/package.json
+++ b/package.json
@@ -109,7 +109,7 @@
"@elastic/datemath": "5.0.3",
"@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.2.0-canary.2",
"@elastic/ems-client": "8.2.0",
- "@elastic/eui": "53.0.1",
+ "@elastic/eui": "54.0.0",
"@elastic/filesaver": "1.1.2",
"@elastic/node-crypto": "1.2.1",
"@elastic/numeral": "^2.5.1",
@@ -117,10 +117,10 @@
"@elastic/request-crypto": "2.0.1",
"@elastic/safer-lodash-set": "link:bazel-bin/packages/elastic-safer-lodash-set",
"@elastic/search-ui-app-search-connector": "^1.6.0",
- "@emotion/cache": "^11.4.0",
- "@emotion/css": "^11.4.0",
- "@emotion/react": "^11.4.0",
- "@emotion/serialize": "^1.0.2",
+ "@emotion/cache": "^11.7.1",
+ "@emotion/css": "^11.9.0",
+ "@emotion/react": "^11.9.0",
+ "@emotion/serialize": "^1.0.3",
"@hapi/accept": "^5.0.2",
"@hapi/boom": "^9.1.4",
"@hapi/cookie": "^11.0.2",
@@ -383,7 +383,7 @@
"redux-actions": "^2.6.5",
"redux-devtools-extension": "^2.13.8",
"redux-logger": "^3.0.6",
- "redux-observable": "^1.2.0",
+ "redux-observable": "2.0.0",
"redux-saga": "^1.1.3",
"redux-thunk": "^2.3.0",
"redux-thunks": "^1.0.0",
@@ -394,7 +394,7 @@
"reselect": "^4.0.0",
"resize-observer-polyfill": "^1.5.1",
"rison-node": "1.0.2",
- "rxjs": "^6.5.5",
+ "rxjs": "^7.5.5",
"safe-squel": "^5.12.5",
"seedrandom": "^3.0.5",
"semver": "^7.3.2",
@@ -456,7 +456,7 @@
"@babel/traverse": "^7.17.3",
"@babel/types": "^7.17.0",
"@bazel/ibazel": "^0.16.2",
- "@bazel/typescript": "5.3.1",
+ "@bazel/typescript": "5.4.0",
"@cypress/code-coverage": "^3.9.12",
"@cypress/snapshot": "^2.1.7",
"@cypress/webpack-preprocessor": "^5.6.0",
@@ -466,7 +466,7 @@
"@elastic/makelogs": "^6.0.0",
"@elastic/synthetics": "^1.0.0-beta.22",
"@emotion/babel-preset-css-prop": "^11.2.0",
- "@emotion/jest": "^11.3.0",
+ "@emotion/jest": "^11.9.0",
"@istanbuljs/nyc-config-typescript": "^1.0.2",
"@istanbuljs/schema": "^0.1.2",
"@jest/console": "^26.6.2",
diff --git a/packages/elastic-analytics/src/analytics_client/analytics_client.test.ts b/packages/elastic-analytics/src/analytics_client/analytics_client.test.ts
index 05b5f6c40dc7b..63e8e91e8a5ff 100644
--- a/packages/elastic-analytics/src/analytics_client/analytics_client.test.ts
+++ b/packages/elastic-analytics/src/analytics_client/analytics_client.test.ts
@@ -8,7 +8,7 @@
// eslint-disable-next-line max-classes-per-file
import type { Observable } from 'rxjs';
-import { BehaviorSubject, Subject } from 'rxjs';
+import { BehaviorSubject, lastValueFrom, Subject } from 'rxjs';
import type { MockedLogger } from '@kbn/logging-mocks';
import { loggerMock } from '@kbn/logging-mocks';
import { AnalyticsClient } from './analytics_client';
@@ -113,14 +113,14 @@ describe('AnalyticsClient', () => {
},
});
- // eslint-disable-next-line dot-notation
- const internalQueuePromise = analyticsClient['internalEventQueue$']
- .pipe(take(3), toArray())
- .toPromise();
+ const internalQueuePromise = lastValueFrom(
+ // eslint-disable-next-line dot-notation
+ analyticsClient['internalEventQueue$'].pipe(take(3), toArray())
+ );
- const telemetryCounterPromise = analyticsClient.telemetryCounter$
- .pipe(take(3), toArray())
- .toPromise();
+ const telemetryCounterPromise = lastValueFrom(
+ analyticsClient.telemetryCounter$.pipe(take(3), toArray())
+ );
analyticsClient.reportEvent('testEvent', { a_field: 'a' });
analyticsClient.reportEvent('testEvent', { a_field: 'b' });
@@ -259,7 +259,7 @@ describe('AnalyticsClient', () => {
// Typescript also helps with the config type inference <3
analyticsClient.registerShipper(MockedShipper, { telemetryCounter$: mockTelemetryCounter$ });
- const counterEventPromise = analyticsClient.telemetryCounter$.pipe(take(1)).toPromise();
+ const counterEventPromise = lastValueFrom(analyticsClient.telemetryCounter$.pipe(take(1)));
const counter: TelemetryCounter = {
type: TelemetryCounterType.succeeded,
@@ -383,7 +383,7 @@ describe('AnalyticsClient', () => {
context$,
});
- const globalContextPromise = globalContext$.pipe(take(2), toArray()).toPromise();
+ const globalContextPromise = lastValueFrom(globalContext$.pipe(take(2), toArray()));
context$.next({ a_field: true });
await expect(globalContextPromise).resolves.toEqual([
{}, // Original empty state
@@ -392,7 +392,7 @@ describe('AnalyticsClient', () => {
});
test('It does not break if context emits `undefined`', async () => {
- const context$ = new Subject<{ a_field: boolean }>();
+ const context$ = new Subject<{ a_field: boolean } | undefined | void>();
analyticsClient.registerContextProvider({
name: 'contextProviderA',
schema: {
@@ -406,7 +406,7 @@ describe('AnalyticsClient', () => {
context$,
});
- const globalContextPromise = globalContext$.pipe(take(3), toArray()).toPromise();
+ const globalContextPromise = lastValueFrom(globalContext$.pipe(take(3), toArray()));
context$.next();
context$.next(undefined);
await expect(globalContextPromise).resolves.toEqual([
@@ -431,7 +431,7 @@ describe('AnalyticsClient', () => {
context$,
});
- const globalContextPromise = globalContext$.pipe(take(1), toArray()).toPromise();
+ const globalContextPromise = lastValueFrom(globalContext$.pipe(take(1), toArray()));
await expect(globalContextPromise).resolves.toEqual([
{ a_field: true }, // No original empty state
]);
@@ -473,7 +473,7 @@ describe('AnalyticsClient', () => {
context$: contextB$,
});
- const globalContextPromise = globalContext$.pipe(take(6), toArray()).toPromise();
+ const globalContextPromise = lastValueFrom(globalContext$.pipe(take(6), toArray()));
contextA$.next({ a_field: true });
contextB$.next({ b_field: 1 });
contextB$.next({ a_field: false, b_field: 1 });
@@ -512,7 +512,7 @@ describe('AnalyticsClient', () => {
context$,
});
- const globalContextPromise = globalContext$.pipe(take(6), toArray()).toPromise();
+ const globalContextPromise = lastValueFrom(globalContext$.pipe(take(6), toArray()));
context$.next({ b_field: 1 });
context$.next({ a_field: false, b_field: 1 });
context$.next({ a_field: true, b_field: 1 });
@@ -582,7 +582,7 @@ describe('AnalyticsClient', () => {
context$,
});
- const globalContextPromise = globalContext$.pipe(take(4), toArray()).toPromise();
+ const globalContextPromise = lastValueFrom(globalContext$.pipe(take(4), toArray()));
context$.next({ a_field: true });
// The size of the registry grows on the first emission
expect(contextProvidersRegistry.size).toBe(1);
@@ -736,11 +736,11 @@ describe('AnalyticsClient', () => {
// eslint-disable-next-line dot-notation
const internalEventQueue$ = analyticsClient['internalEventQueue$'];
- const internalQueuePromise = internalEventQueue$.pipe(take(2), toArray()).toPromise();
+ const internalQueuePromise = lastValueFrom(internalEventQueue$.pipe(take(2), toArray()));
- const telemetryCounterPromise = analyticsClient.telemetryCounter$
- .pipe(take(2), toArray())
- .toPromise();
+ const telemetryCounterPromise = lastValueFrom(
+ analyticsClient.telemetryCounter$.pipe(take(2), toArray())
+ );
analyticsClient.reportEvent('event-type-a', { a_field: 'a' });
analyticsClient.reportEvent('event-type-b', { b_field: 100 });
@@ -781,9 +781,9 @@ describe('AnalyticsClient', () => {
});
test('Sends events from the internal queue when there are shippers and an opt-in response is true', async () => {
- const telemetryCounterPromise = analyticsClient.telemetryCounter$
- .pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events
- .toPromise();
+ const telemetryCounterPromise = lastValueFrom(
+ analyticsClient.telemetryCounter$.pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events
+ );
// Send multiple events of 1 type to test the grouping logic as well
analyticsClient.reportEvent('event-type-a', { a_field: 'a' });
@@ -862,9 +862,9 @@ describe('AnalyticsClient', () => {
});
test('Discards events from the internal queue when there are shippers and an opt-in response is false', async () => {
- const telemetryCounterPromise = analyticsClient.telemetryCounter$
- .pipe(take(3), toArray()) // Waiting for 3 enqueued
- .toPromise();
+ const telemetryCounterPromise = lastValueFrom(
+ analyticsClient.telemetryCounter$.pipe(take(3), toArray()) // Waiting for 3 enqueued
+ );
// Send multiple events of 1 type to test the grouping logic as well
analyticsClient.reportEvent('event-type-a', { a_field: 'a' });
@@ -904,9 +904,9 @@ describe('AnalyticsClient', () => {
});
test('Discards only one type of the enqueued events based on event_type config', async () => {
- const telemetryCounterPromise = analyticsClient.telemetryCounter$
- .pipe(take(3 + 1), toArray()) // Waiting for 3 enqueued + 1 batch-shipped events
- .toPromise();
+ const telemetryCounterPromise = lastValueFrom(
+ analyticsClient.telemetryCounter$.pipe(take(3 + 1), toArray()) // Waiting for 3 enqueued + 1 batch-shipped events
+ );
// Send multiple events of 1 type to test the grouping logic as well
analyticsClient.reportEvent('event-type-a', { a_field: 'a' });
@@ -965,9 +965,9 @@ describe('AnalyticsClient', () => {
});
test('Discards the event at the shipper level (for a specific event)', async () => {
- const telemetryCounterPromise = analyticsClient.telemetryCounter$
- .pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events
- .toPromise();
+ const telemetryCounterPromise = lastValueFrom(
+ analyticsClient.telemetryCounter$.pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events
+ );
// Send multiple events of 1 type to test the grouping logic as well
analyticsClient.reportEvent('event-type-a', { a_field: 'a' });
@@ -1061,9 +1061,9 @@ describe('AnalyticsClient', () => {
});
test('Discards all the events at the shipper level (globally disabled)', async () => {
- const telemetryCounterPromise = analyticsClient.telemetryCounter$
- .pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events
- .toPromise();
+ const telemetryCounterPromise = lastValueFrom(
+ analyticsClient.telemetryCounter$.pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events
+ );
// Send multiple events of 1 type to test the grouping logic as well
analyticsClient.reportEvent('event-type-a', { a_field: 'a' });
@@ -1154,9 +1154,9 @@ describe('AnalyticsClient', () => {
analyticsClient.registerShipper(MockedShipper1, { reportEventsMock });
analyticsClient.optIn({ global: { enabled: false } });
- const telemetryCounterPromise = analyticsClient.telemetryCounter$
- .pipe(take(3), toArray()) // Waiting for 3 enqueued
- .toPromise();
+ const telemetryCounterPromise = lastValueFrom(
+ analyticsClient.telemetryCounter$.pipe(take(3), toArray()) // Waiting for 3 enqueued
+ );
// Send multiple events of 1 type to test the non-grouping logic at this stage as well
analyticsClient.reportEvent('event-type-a', { a_field: 'a' });
@@ -1197,9 +1197,9 @@ describe('AnalyticsClient', () => {
analyticsClient.registerShipper(MockedShipper1, { reportEventsMock });
analyticsClient.optIn({ global: { enabled: true } });
- const telemetryCounterPromise = analyticsClient.telemetryCounter$
- .pipe(take(3 * 2), toArray()) // Waiting for 2 events per each reportEvent call: enqueued and sent_to_shipper
- .toPromise();
+ const telemetryCounterPromise = lastValueFrom(
+ analyticsClient.telemetryCounter$.pipe(take(3 * 2), toArray()) // Waiting for 2 events per each reportEvent call: enqueued and sent_to_shipper
+ );
// Send multiple events of 1 type to test the non-grouping logic at this stage as well
analyticsClient.reportEvent('event-type-a', { a_field: 'a' });
diff --git a/packages/kbn-cli-dev-mode/src/dev_server.ts b/packages/kbn-cli-dev-mode/src/dev_server.ts
index ca213b117ef34..750f93dd6c58c 100644
--- a/packages/kbn-cli-dev-mode/src/dev_server.ts
+++ b/packages/kbn-cli-dev-mode/src/dev_server.ts
@@ -6,8 +6,6 @@
* Side Public License, v 1.
*/
-import { EventEmitter } from 'events';
-
import * as Rx from 'rxjs';
import {
map,
@@ -60,9 +58,9 @@ export class DevServer {
this.script = options.script;
this.argv = options.argv;
this.gracefulTimeout = options.gracefulTimeout;
- this.processExit$ = options.processExit$ ?? Rx.fromEvent(process as EventEmitter, 'exit');
- this.sigint$ = options.sigint$ ?? Rx.fromEvent(process as EventEmitter, 'SIGINT');
- this.sigterm$ = options.sigterm$ ?? Rx.fromEvent(process as EventEmitter, 'SIGTERM');
+ this.processExit$ = options.processExit$ ?? Rx.fromEvent(process, 'exit');
+ this.sigint$ = options.sigint$ ?? Rx.fromEvent(process, 'SIGINT');
+ this.sigterm$ = options.sigterm$ ?? Rx.fromEvent(process, 'SIGTERM');
this.mapLogLine = options.mapLogLine;
}
@@ -117,7 +115,7 @@ export class DevServer {
*/
run$ = new Rx.Observable((subscriber) => {
// listen for SIGINT and forward to process if it's running, otherwise unsub
- const gracefulShutdown$ = new Rx.Subject();
+ const gracefulShutdown$ = new Rx.Subject();
subscriber.add(
this.sigint$
.pipe(
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 25bc59bf78458..12074bf493218 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
@@ -76,7 +76,6 @@ it('produces the right watch and ignore list', () => {
/x-pack/plugins/lists/server/scripts,
/x-pack/plugins/security_solution/scripts,
/x-pack/plugins/security_solution/server/lib/detection_engine/scripts,
- /x-pack/plugins/metrics_entities/server/scripts,
/x-pack/plugins/uptime/e2e,
]
`);
diff --git a/packages/kbn-cli-dev-mode/src/get_server_watch_paths.ts b/packages/kbn-cli-dev-mode/src/get_server_watch_paths.ts
index acfc9aeecdc80..8f2363b398d6e 100644
--- a/packages/kbn-cli-dev-mode/src/get_server_watch_paths.ts
+++ b/packages/kbn-cli-dev-mode/src/get_server_watch_paths.ts
@@ -66,7 +66,6 @@ export function getServerWatchPaths({ pluginPaths, pluginScanDirs }: Options) {
fromRoot('x-pack/plugins/lists/server/scripts'),
fromRoot('x-pack/plugins/security_solution/scripts'),
fromRoot('x-pack/plugins/security_solution/server/lib/detection_engine/scripts'),
- fromRoot('x-pack/plugins/metrics_entities/server/scripts'),
fromRoot('x-pack/plugins/uptime/e2e'),
];
diff --git a/packages/kbn-cli-dev-mode/src/optimizer.test.ts b/packages/kbn-cli-dev-mode/src/optimizer.test.ts
index e1763ab4c4756..c300b34d514d2 100644
--- a/packages/kbn-cli-dev-mode/src/optimizer.test.ts
+++ b/packages/kbn-cli-dev-mode/src/optimizer.test.ts
@@ -12,7 +12,6 @@ import * as Rx from 'rxjs';
import { toArray } from 'rxjs/operators';
import { OptimizerUpdate } from '@kbn/optimizer';
import { observeLines, createReplaceSerializer } from '@kbn/dev-utils';
-import { firstValueFrom } from '@kbn/std';
import { Optimizer, Options } from './optimizer';
@@ -130,7 +129,7 @@ it('uses options to create valid OptimizerConfig', () => {
it('is ready when optimizer phase is success or issue and logs in familiar format', async () => {
const writeLogTo = new PassThrough();
- const linesPromise = firstValueFrom(observeLines(writeLogTo).pipe(toArray()));
+ const linesPromise = Rx.firstValueFrom(observeLines(writeLogTo).pipe(toArray()));
const { update$, optimizer } = setup({
...defaultOptions,
diff --git a/packages/kbn-cli-dev-mode/src/watcher.test.ts b/packages/kbn-cli-dev-mode/src/watcher.test.ts
index b5bfab58a43c5..71839c5b27dd5 100644
--- a/packages/kbn-cli-dev-mode/src/watcher.test.ts
+++ b/packages/kbn-cli-dev-mode/src/watcher.test.ts
@@ -10,7 +10,6 @@ import { EventEmitter } from 'events';
import * as Rx from 'rxjs';
import { materialize, toArray } from 'rxjs/operators';
-import { firstValueFrom } from '@kbn/std';
import { TestLog } from './log';
import { Watcher, Options } from './watcher';
@@ -112,7 +111,7 @@ it('closes chokidar watcher when unsubscribed', () => {
it('rethrows chokidar errors', async () => {
const watcher = new Watcher(defaultOptions);
- const promise = firstValueFrom(watcher.run$.pipe(materialize(), toArray()));
+ const promise = Rx.firstValueFrom(watcher.run$.pipe(materialize(), toArray()));
isMock(mockChokidar);
mockChokidar.emit('error', new Error('foo bar'));
diff --git a/packages/kbn-config/src/config_service.ts b/packages/kbn-config/src/config_service.ts
index 08e16a9d2f44b..bb7bb54e75ce5 100644
--- a/packages/kbn-config/src/config_service.ts
+++ b/packages/kbn-config/src/config_service.ts
@@ -9,8 +9,8 @@
import type { PublicMethodsOf } from '@kbn/utility-types';
import { Type } from '@kbn/config-schema';
import { isEqual } from 'lodash';
-import { BehaviorSubject, combineLatest, Observable } from 'rxjs';
-import { distinctUntilChanged, first, map, shareReplay, take, tap } from 'rxjs/operators';
+import { BehaviorSubject, combineLatest, firstValueFrom, Observable } from 'rxjs';
+import { distinctUntilChanged, first, map, shareReplay, tap } from 'rxjs/operators';
import { Logger, LoggerFactory } from '@kbn/logging';
import { Config, ConfigPath, Env } from '.';
@@ -170,7 +170,7 @@ export class ConfigService {
const namespace = pathToString(path);
const hasSchema = this.schemas.has(namespace);
- const config = await this.config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(this.config$);
if (!hasSchema && config.has(path)) {
// Throw if there is no schema, but a config exists at the path.
throw new Error(`No validation schema has been defined for [${namespace}]`);
@@ -195,13 +195,13 @@ export class ConfigService {
}
public async getUnusedPaths() {
- const config = await this.config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(this.config$);
const handledPaths = [...this.handledPaths.values()].map(pathToString);
return config.getFlattenedPaths().filter((path) => !isPathHandled(path, handledPaths));
}
public async getUsedPaths() {
- const config = await this.config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(this.config$);
const handledPaths = [...this.handledPaths.values()].map(pathToString);
return config.getFlattenedPaths().filter((path) => isPathHandled(path, handledPaths));
}
@@ -211,8 +211,8 @@ export class ConfigService {
}
private async logDeprecation() {
- const rawConfig = await this.rawConfigProvider.getConfig$().pipe(take(1)).toPromise();
- const deprecations = await this.deprecations.pipe(take(1)).toPromise();
+ const rawConfig = await firstValueFrom(this.rawConfigProvider.getConfig$());
+ const deprecations = await firstValueFrom(this.deprecations);
const deprecationMessages: string[] = [];
const createAddDeprecation = (domainId: string) => (context: DeprecatedConfigDetails) => {
if (!context.silent) {
diff --git a/packages/kbn-config/src/raw/raw_config_service.test.ts b/packages/kbn-config/src/raw/raw_config_service.test.ts
index 41ca4c3cbf7bc..1e9139d2421ef 100644
--- a/packages/kbn-config/src/raw/raw_config_service.test.ts
+++ b/packages/kbn-config/src/raw/raw_config_service.test.ts
@@ -8,7 +8,7 @@
import { mockGetConfigFromFiles } from './raw_config_service.test.mocks';
-import { first } from 'rxjs/operators';
+import { firstValueFrom } from 'rxjs';
import { RawConfigService } from './raw_config_service';
const configFile = '/config/kibana.yml';
@@ -72,7 +72,7 @@ test('returns config at path as observable', async () => {
configService.loadConfig();
- const exampleConfig = await configService.getConfig$().pipe(first()).toPromise();
+ const exampleConfig = await firstValueFrom(configService.getConfig$());
expect(exampleConfig.key).toEqual('value');
expect(Object.keys(exampleConfig)).toEqual(['key']);
diff --git a/packages/kbn-dev-utils/src/tooling_log/tooling_log.test.ts b/packages/kbn-dev-utils/src/tooling_log/tooling_log.test.ts
index 8d8ef81e613fd..54ac750332c5f 100644
--- a/packages/kbn-dev-utils/src/tooling_log/tooling_log.test.ts
+++ b/packages/kbn-dev-utils/src/tooling_log/tooling_log.test.ts
@@ -14,6 +14,7 @@ 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());
@@ -146,8 +147,8 @@ describe('#getWritten$()', () => {
const log = new ToolingLog();
log.setWriters(writers);
- const done$ = new Rx.Subject();
- const promise = log.getWritten$().pipe(takeUntil(done$), toArray()).toPromise();
+ const done$ = new Rx.Subject();
+ const promise = lastValueFrom(log.getWritten$().pipe(takeUntil(done$), toArray()));
log.debug('foo');
log.info('bar');
diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts
index 122486a1d0e9d..80760520da27f 100644
--- a/packages/kbn-doc-links/src/get_doc_links.ts
+++ b/packages/kbn-doc-links/src/get_doc_links.ts
@@ -67,6 +67,9 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => {
discover: {
guide: `${KIBANA_DOCS}discover.html`,
fieldStatistics: `${KIBANA_DOCS}show-field-statistics.html`,
+ fieldTypeHelp: `${ELASTICSEARCH_DOCS}mapping-types.html`,
+ dateFieldTypeDocs: `${ELASTICSEARCH_DOCS}date.html`,
+ dateFormatsDocs: `${ELASTICSEARCH_DOCS}mapping-date-format.html`,
documentExplorer: `${KIBANA_DOCS}document-explorer.html`,
},
filebeat: {
@@ -325,10 +328,12 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => {
detectionsReq: `${SECURITY_SOLUTION_DOCS}detections-permissions-section.html`,
networkMap: `${SECURITY_SOLUTION_DOCS}conf-map-ui.html`,
troubleshootGaps: `${SECURITY_SOLUTION_DOCS}alerts-ui-monitor.html#troubleshoot-gaps`,
+ ruleApiOverview: `${SECURITY_SOLUTION_DOCS}rule-api-overview.html`,
},
securitySolution: {
trustedApps: `${ELASTIC_WEBSITE_URL}guide/en/security/${DOC_LINK_VERSION}/trusted-apps-ov.html`,
eventFilters: `${ELASTIC_WEBSITE_URL}guide/en/security/${DOC_LINK_VERSION}/event-filters.html`,
+ blocklist: `${ELASTIC_WEBSITE_URL}guide/en/security/${DOC_LINK_VERSION}/blocklist.html`,
},
query: {
eql: `${ELASTICSEARCH_DOCS}eql.html`,
diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts
index 5e85d01c22ce2..57a48219b973c 100644
--- a/packages/kbn-doc-links/src/types.ts
+++ b/packages/kbn-doc-links/src/types.ts
@@ -233,10 +233,12 @@ export interface DocLinks {
readonly detectionsReq: string;
readonly networkMap: string;
readonly troubleshootGaps: string;
+ readonly ruleApiOverview: string;
};
readonly securitySolution: {
readonly trustedApps: string;
readonly eventFilters: string;
+ readonly blocklist: string;
};
readonly query: {
readonly eql: string;
diff --git a/packages/kbn-optimizer/src/cli.ts b/packages/kbn-optimizer/src/cli.ts
index 41ca656259fc6..5dba6305d5bb2 100644
--- a/packages/kbn-optimizer/src/cli.ts
+++ b/packages/kbn-optimizer/src/cli.ts
@@ -9,7 +9,7 @@
import Path from 'path';
import { REPO_ROOT } from '@kbn/utils';
-import { lastValueFrom } from '@kbn/std';
+import { lastValueFrom } from 'rxjs';
import { run, createFlagError, Flags } from '@kbn/dev-utils';
import { logOptimizerState } from './log_optimizer_state';
diff --git a/packages/kbn-optimizer/src/common/bundle.test.ts b/packages/kbn-optimizer/src/common/bundle.test.ts
index 76488c1caab5e..5989489bb81ba 100644
--- a/packages/kbn-optimizer/src/common/bundle.test.ts
+++ b/packages/kbn-optimizer/src/common/bundle.test.ts
@@ -8,6 +8,7 @@
import { Bundle, BundleSpec, parseBundles } from './bundle';
import { Hashes } from './hashes';
+import { parseDllManifest } from './dll_manifest';
jest.mock('fs');
@@ -31,13 +32,31 @@ it('creates cache keys', () => {
].sort(() => (Math.random() > 0.5 ? 1 : -1));
const hashes = new Hashes(new Map(hashEntries));
+ const dllManifest = parseDllManifest({
+ name: 'manifest-name',
+ content: {
+ './some-foo.ts': {
+ id: 1,
+ buildMeta: {
+ a: 'b',
+ },
+ unknownField: 'hi',
+ },
+ },
+ });
+ const dllRefKeys = ['./some-foo.ts'];
- expect(bundle.createCacheKey(['/foo/bar/a', '/foo/bar/c'], hashes)).toMatchInlineSnapshot(`
+ expect(bundle.createCacheKey(['/foo/bar/a', '/foo/bar/c'], hashes, dllManifest, dllRefKeys))
+ .toMatchInlineSnapshot(`
Object {
"checksums": Object {
"/foo/bar/a": "123",
"/foo/bar/c": "789",
},
+ "dllName": "manifest-name",
+ "dllRefs": Object {
+ "./some-foo.ts": "1:ku/53aRMuAA+4TmQeCWA/w:GtuPW9agF2yecW0xAIHtUQ",
+ },
"spec": Object {
"banner": undefined,
"contextDir": "/foo/bar",
diff --git a/packages/kbn-optimizer/src/common/bundle.ts b/packages/kbn-optimizer/src/common/bundle.ts
index 7216fdcacf32a..a2f0653d23af7 100644
--- a/packages/kbn-optimizer/src/common/bundle.ts
+++ b/packages/kbn-optimizer/src/common/bundle.ts
@@ -14,6 +14,7 @@ import { UnknownVals } from './ts_helpers';
import { omit } from './obj_helpers';
import { includes } from './array_helpers';
import type { Hashes } from './hashes';
+import { ParsedDllManifest } from './dll_manifest';
const VALID_BUNDLE_TYPES = ['plugin' as const, 'entry' as const];
@@ -88,12 +89,19 @@ export class Bundle {
/**
* Calculate the cache key for this bundle based from current
- * mtime values.
+ * state determined by looking at files on disk.
*/
- createCacheKey(paths: string[], hashes: Hashes): unknown {
+ createCacheKey(
+ paths: string[],
+ hashes: Hashes,
+ dllManifest: ParsedDllManifest,
+ dllRefKeys: string[]
+ ): unknown {
return {
spec: omit(this.toSpec(), ['pageLoadAssetSizeLimit']),
checksums: Object.fromEntries(paths.map((p) => [p, hashes.getCached(p)] as const)),
+ dllName: dllManifest.name,
+ dllRefs: Object.fromEntries(dllRefKeys.map((k) => [k, dllManifest.content[k]] as const)),
};
}
diff --git a/packages/kbn-optimizer/src/common/bundle_cache.ts b/packages/kbn-optimizer/src/common/bundle_cache.ts
index 60a33929adc03..6a44504d875e2 100644
--- a/packages/kbn-optimizer/src/common/bundle_cache.ts
+++ b/packages/kbn-optimizer/src/common/bundle_cache.ts
@@ -19,6 +19,7 @@ export interface State {
workUnits?: number;
referencedPaths?: string[];
bundleRefExportIds?: string[];
+ dllRefKeys?: string[];
}
const DEFAULT_STATE: State = {};
@@ -90,6 +91,10 @@ export class BundleCache {
return this.get().bundleRefExportIds;
}
+ public getDllRefKeys() {
+ return this.get().dllRefKeys;
+ }
+
public getCacheKey() {
return this.get().cacheKey;
}
diff --git a/packages/kbn-optimizer/src/common/dll_manifest.ts b/packages/kbn-optimizer/src/common/dll_manifest.ts
new file mode 100644
index 0000000000000..6192e6cd4135a
--- /dev/null
+++ b/packages/kbn-optimizer/src/common/dll_manifest.ts
@@ -0,0 +1,45 @@
+/*
+ * 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 Crypto from 'crypto';
+
+export interface DllManifest {
+ name: string;
+ content: Record;
+}
+
+export interface ParsedDllManifest {
+ name: string;
+ content: Record;
+}
+
+const hash = (s: string) => {
+ return Crypto.createHash('md5').update(s).digest('base64').replace(/=+$/, '');
+};
+
+export function parseDllManifest(manifest: DllManifest): ParsedDllManifest {
+ return {
+ name: manifest.name,
+ content: Object.fromEntries(
+ Object.entries(manifest.content).map(([k, v]) => {
+ const { id, buildMeta, ...other } = v;
+ const metaJson = JSON.stringify(buildMeta) || '{}';
+ const otherJson = JSON.stringify(other) || '{}';
+
+ return [
+ k,
+ [
+ v.id,
+ ...(metaJson !== '{}' ? [hash(metaJson)] : []),
+ ...(otherJson !== '{}' ? [hash(otherJson)] : []),
+ ].join(':'),
+ ];
+ })
+ ),
+ };
+}
diff --git a/packages/kbn-optimizer/src/common/index.ts b/packages/kbn-optimizer/src/common/index.ts
index c3054ad02a84b..f516e5f84198f 100644
--- a/packages/kbn-optimizer/src/common/index.ts
+++ b/packages/kbn-optimizer/src/common/index.ts
@@ -20,3 +20,4 @@ export * from './parse_path';
export * from './theme_tags';
export * from './obj_helpers';
export * from './hashes';
+export * from './dll_manifest';
diff --git a/packages/kbn-optimizer/src/common/rxjs_helpers.test.ts b/packages/kbn-optimizer/src/common/rxjs_helpers.test.ts
index eb8b6472ebcc4..694a606883957 100644
--- a/packages/kbn-optimizer/src/common/rxjs_helpers.test.ts
+++ b/packages/kbn-optimizer/src/common/rxjs_helpers.test.ts
@@ -7,8 +7,7 @@
*/
import * as Rx from 'rxjs';
-import { toArray, map } from 'rxjs/operators';
-import { lastValueFrom } from '@kbn/std';
+import { fakeSchedulers } from 'rxjs-marbles/jest';
import { pipeClosure, debounceTimeBuffer, maybeMap, maybe } from './rxjs_helpers';
@@ -21,26 +20,26 @@ describe('pipeClosure()', () => {
const foo$ = Rx.of(1, 2, 3).pipe(
pipeClosure((source$) => {
const multiplier = ++counter;
- return source$.pipe(map((i) => i * multiplier));
+ return source$.pipe(Rx.map((i) => i * multiplier));
}),
- toArray()
+ Rx.toArray()
);
- await expect(lastValueFrom(foo$)).resolves.toMatchInlineSnapshot(`
+ await expect(Rx.lastValueFrom(foo$)).resolves.toMatchInlineSnapshot(`
Array [
1,
2,
3,
]
`);
- await expect(lastValueFrom(foo$)).resolves.toMatchInlineSnapshot(`
+ await expect(Rx.lastValueFrom(foo$)).resolves.toMatchInlineSnapshot(`
Array [
2,
4,
6,
]
`);
- await expect(lastValueFrom(foo$)).resolves.toMatchInlineSnapshot(`
+ await expect(Rx.lastValueFrom(foo$)).resolves.toMatchInlineSnapshot(`
Array [
3,
6,
@@ -52,9 +51,9 @@ describe('pipeClosure()', () => {
describe('maybe()', () => {
it('filters out undefined values from the stream', async () => {
- const foo$ = Rx.of(1, undefined, 2, undefined, 3).pipe(maybe(), toArray());
+ const foo$ = Rx.of(1, undefined, 2, undefined, 3).pipe(maybe(), Rx.toArray());
- await expect(lastValueFrom(foo$)).resolves.toEqual([1, 2, 3]);
+ await expect(Rx.lastValueFrom(foo$)).resolves.toEqual([1, 2, 3]);
});
});
@@ -62,10 +61,10 @@ describe('maybeMap()', () => {
it('calls map fn and filters out undefined values returned', async () => {
const foo$ = Rx.of(1, 2, 3, 4, 5).pipe(
maybeMap((i) => (i % 2 ? i : undefined)),
- toArray()
+ Rx.toArray()
);
- await expect(lastValueFrom(foo$)).resolves.toEqual([1, 3, 5]);
+ await expect(Rx.lastValueFrom(foo$)).resolves.toEqual([1, 3, 5]);
});
});
@@ -78,39 +77,42 @@ describe('debounceTimeBuffer()', () => {
jest.useRealTimers();
});
- it('buffers items until there is n milliseconds of silence, then flushes buffer to stream', async () => {
- const foo$ = new Rx.Subject();
- const dest = new Rx.BehaviorSubject(undefined);
- foo$
- .pipe(
- debounceTimeBuffer(100),
- map((items) => items.reduce((sum, n) => sum + n))
- )
- .subscribe(dest);
-
- foo$.next(1);
- expect(dest.getValue()).toBe(undefined);
-
- // only wait 99 milliseconds before sending the next value
- jest.advanceTimersByTime(99);
- foo$.next(1);
- expect(dest.getValue()).toBe(undefined);
-
- // only wait 99 milliseconds before sending the next value
- jest.advanceTimersByTime(99);
- foo$.next(1);
- expect(dest.getValue()).toBe(undefined);
-
- // send the next value after 100 milliseconds and observe that it was forwarded
- jest.advanceTimersByTime(100);
- foo$.next(1);
- expect(dest.getValue()).toBe(3);
-
- foo$.complete();
- if (!dest.isStopped) {
- throw new Error('Expected destination to stop as soon as the source is completed');
- }
- });
+ it(
+ 'buffers items until there is n milliseconds of silence, then flushes buffer to stream',
+ fakeSchedulers(async (advance) => {
+ const foo$ = new Rx.Subject();
+ const dest = new Rx.BehaviorSubject(undefined);
+ foo$
+ .pipe(
+ debounceTimeBuffer(100),
+ Rx.map((items) => items.reduce((sum, n) => sum + n))
+ )
+ .subscribe(dest);
+
+ foo$.next(1);
+ expect(dest.getValue()).toBe(undefined);
+
+ // only wait 50 milliseconds before sending the next value
+ advance(50);
+ foo$.next(1);
+ expect(dest.getValue()).toBe(undefined);
+
+ // only wait 99 milliseconds before sending the next value
+ advance(99);
+ foo$.next(1);
+ expect(dest.getValue()).toBe(undefined);
+
+ // send the next value after 100 milliseconds and observe that it was forwarded
+ advance(500);
+ foo$.next(1);
+ expect(dest.getValue()).toBe(3);
+
+ foo$.complete();
+ if (!dest.isStopped) {
+ throw new Error('Expected destination to stop as soon as the source is completed');
+ }
+ })
+ );
it('clears queue as soon as source completes if source completes before time is up', () => {
const foo$ = new Rx.Subject();
@@ -118,7 +120,7 @@ describe('debounceTimeBuffer()', () => {
foo$
.pipe(
debounceTimeBuffer(100),
- map((items) => items.reduce((sum, n) => sum + n))
+ Rx.map((items) => items.reduce((sum, n) => sum + n))
)
.subscribe(dest);
diff --git a/packages/kbn-optimizer/src/common/rxjs_helpers.ts b/packages/kbn-optimizer/src/common/rxjs_helpers.ts
index 71e6ea4b5c1b1..7d5a63f3c9396 100644
--- a/packages/kbn-optimizer/src/common/rxjs_helpers.ts
+++ b/packages/kbn-optimizer/src/common/rxjs_helpers.ts
@@ -7,8 +7,6 @@
*/
import * as Rx from 'rxjs';
-import { mergeMap, tap, debounceTime, map, toArray } from 'rxjs/operators';
-import { firstValueFrom } from '@kbn/std';
type Operator = (source: Rx.Observable) => Rx.Observable;
type MapFn = (item: T1, index: number) => T2;
@@ -29,7 +27,7 @@ export const pipeClosure = (fn: Operator): Operator => {
* supporting TypeScript
*/
export const maybe = (): Operator => {
- return mergeMap((item) => (item === undefined ? Rx.EMPTY : [item]));
+ return Rx.mergeMap((item) => (item === undefined ? Rx.EMPTY : [item]));
};
/**
@@ -39,7 +37,7 @@ export const maybe = (): Operator => {
* the filter.
*/
export const maybeMap = (fn: MapFn): Operator => {
- return mergeMap((item, index) => {
+ return Rx.mergeMap((item, index) => {
const result = fn(item, index);
return result === undefined ? Rx.EMPTY : [result];
});
@@ -54,9 +52,9 @@ export const debounceTimeBuffer = (ms: number) =>
pipeClosure((source$: Rx.Observable) => {
const buffer: T[] = [];
return source$.pipe(
- tap((item) => buffer.push(item)),
- debounceTime(ms),
- map(() => {
+ Rx.tap((item) => buffer.push(item)),
+ Rx.debounceTime(ms),
+ Rx.map(() => {
const items = Array.from(buffer);
buffer.length = 0;
return items;
@@ -65,4 +63,4 @@ export const debounceTimeBuffer = (ms: number) =>
});
export const allValuesFrom = (observable: Rx.Observable) =>
- firstValueFrom(observable.pipe(toArray()));
+ Rx.firstValueFrom(observable.pipe(Rx.toArray()));
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 55f2c08ed0e34..99f0c0bd9696e 100644
--- a/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts
+++ b/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts
@@ -10,20 +10,31 @@ import Path from 'path';
import cpy from 'cpy';
import del from 'del';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer, createStripAnsiSerializer } from '@kbn/dev-utils';
import { OptimizerConfig } from '../optimizer/optimizer_config';
-import { allValuesFrom, Bundle, Hashes } from '../common';
+import { allValuesFrom, Bundle, Hashes, ParsedDllManifest } from '../common';
import { getBundleCacheEvent$ } from '../optimizer/bundle_cache';
const TMP_DIR = Path.resolve(__dirname, '../__fixtures__/__tmp__');
const MOCK_REPO_SRC = Path.resolve(__dirname, '../__fixtures__/mock_repo');
const MOCK_REPO_DIR = Path.resolve(TMP_DIR, 'mock_repo');
+jest.mock('../common/dll_manifest', () => ({
+ parseDllManifest: jest.fn(),
+}));
+
+const EMPTY_DLL_MANIFEST: ParsedDllManifest = {
+ name: 'foo',
+ content: {},
+};
+jest.requireMock('../common/dll_manifest').parseDllManifest.mockReturnValue(EMPTY_DLL_MANIFEST);
+
expect.addSnapshotSerializer({
print: () => '',
test: (v) => v instanceof Bundle,
});
+expect.addSnapshotSerializer(createStripAnsiSerializer());
expect.addSnapshotSerializer(createAbsolutePathSerializer(MOCK_REPO_DIR));
beforeEach(async () => {
@@ -55,7 +66,7 @@ it('emits "bundle cached" event when everything is updated', async () => {
Path.resolve(MOCK_REPO_DIR, 'plugins/foo/public/lib.ts'),
];
const hashes = await Hashes.ofFiles(referencedPaths);
- const cacheKey = bundle.createCacheKey(referencedPaths, hashes);
+ const cacheKey = bundle.createCacheKey(referencedPaths, hashes, EMPTY_DLL_MANIFEST, []);
bundle.cache.set({
cacheKey,
@@ -63,6 +74,7 @@ it('emits "bundle cached" event when everything is updated', async () => {
referencedPaths,
moduleCount: referencedPaths.length,
bundleRefExportIds: [],
+ dllRefKeys: [],
});
const cacheEvents = await allValuesFrom(getBundleCacheEvent$(config, optimizerCacheKey));
@@ -94,7 +106,7 @@ it('emits "bundle not cached" event when cacheKey is up to date but caching is d
Path.resolve(MOCK_REPO_DIR, 'plugins/foo/public/lib.ts'),
];
const hashes = await Hashes.ofFiles(referencedPaths);
- const cacheKey = bundle.createCacheKey(referencedPaths, hashes);
+ const cacheKey = bundle.createCacheKey(referencedPaths, hashes, EMPTY_DLL_MANIFEST, []);
bundle.cache.set({
cacheKey,
@@ -102,6 +114,7 @@ it('emits "bundle not cached" event when cacheKey is up to date but caching is d
referencedPaths,
moduleCount: referencedPaths.length,
bundleRefExportIds: [],
+ dllRefKeys: [],
});
const cacheEvents = await allValuesFrom(getBundleCacheEvent$(config, optimizerCacheKey));
@@ -133,7 +146,7 @@ it('emits "bundle not cached" event when optimizerCacheKey is missing', async ()
Path.resolve(MOCK_REPO_DIR, 'plugins/foo/public/lib.ts'),
];
const hashes = await Hashes.ofFiles(referencedPaths);
- const cacheKey = bundle.createCacheKey(referencedPaths, hashes);
+ const cacheKey = bundle.createCacheKey(referencedPaths, hashes, EMPTY_DLL_MANIFEST, []);
bundle.cache.set({
cacheKey,
@@ -141,6 +154,7 @@ it('emits "bundle not cached" event when optimizerCacheKey is missing', async ()
referencedPaths,
moduleCount: referencedPaths.length,
bundleRefExportIds: [],
+ dllRefKeys: [],
});
const cacheEvents = await allValuesFrom(getBundleCacheEvent$(config, optimizerCacheKey));
@@ -172,7 +186,7 @@ it('emits "bundle not cached" event when optimizerCacheKey is outdated, includes
Path.resolve(MOCK_REPO_DIR, 'plugins/foo/public/lib.ts'),
];
const hashes = await Hashes.ofFiles(referencedPaths);
- const cacheKey = bundle.createCacheKey(referencedPaths, hashes);
+ const cacheKey = bundle.createCacheKey(referencedPaths, hashes, EMPTY_DLL_MANIFEST, []);
bundle.cache.set({
cacheKey,
@@ -180,6 +194,7 @@ it('emits "bundle not cached" event when optimizerCacheKey is outdated, includes
referencedPaths,
moduleCount: referencedPaths.length,
bundleRefExportIds: [],
+ dllRefKeys: [],
});
const cacheEvents = await allValuesFrom(getBundleCacheEvent$(config, optimizerCacheKey));
@@ -188,11 +203,11 @@ it('emits "bundle not cached" event when optimizerCacheKey is outdated, includes
Array [
Object {
"bundle": ,
- "diff": "[32m- Expected[39m
- [31m+ Received[39m
+ "diff": "- Expected
+ + Received
- [32m- \\"old\\"[39m
- [31m+ \\"optimizerCacheKey\\"[39m",
+ - \\"old\\"
+ + \\"optimizerCacheKey\\"",
"reason": "optimizer cache key mismatch",
"type": "bundle not cached",
},
@@ -216,7 +231,7 @@ it('emits "bundle not cached" event when bundleRefExportIds is outdated, include
Path.resolve(MOCK_REPO_DIR, 'plugins/foo/public/lib.ts'),
];
const hashes = await Hashes.ofFiles(referencedPaths);
- const cacheKey = bundle.createCacheKey(referencedPaths, hashes);
+ const cacheKey = bundle.createCacheKey(referencedPaths, hashes, EMPTY_DLL_MANIFEST, []);
bundle.cache.set({
cacheKey,
@@ -224,6 +239,7 @@ it('emits "bundle not cached" event when bundleRefExportIds is outdated, include
referencedPaths,
moduleCount: referencedPaths.length,
bundleRefExportIds: ['plugin/bar/public'],
+ dllRefKeys: [],
});
const cacheEvents = await allValuesFrom(getBundleCacheEvent$(config, optimizerCacheKey));
@@ -232,12 +248,12 @@ it('emits "bundle not cached" event when bundleRefExportIds is outdated, include
Array [
Object {
"bundle": ,
- "diff": "[32m- Expected[39m
- [31m+ Received[39m
+ "diff": "- Expected
+ + Received
- [2m [[22m
- [31m+ \\"plugin/bar/public\\"[39m
- [2m ][22m",
+ [
+ + \\"plugin/bar/public\\"
+ ]",
"reason": "bundle references outdated",
"type": "bundle not cached",
},
@@ -267,6 +283,7 @@ it('emits "bundle not cached" event when cacheKey is missing', async () => {
referencedPaths,
moduleCount: referencedPaths.length,
bundleRefExportIds: [],
+ dllRefKeys: [],
});
const cacheEvents = await allValuesFrom(getBundleCacheEvent$(config, optimizerCacheKey));
@@ -304,6 +321,7 @@ it('emits "bundle not cached" event when cacheKey is outdated', async () => {
referencedPaths,
moduleCount: referencedPaths.length,
bundleRefExportIds: [],
+ dllRefKeys: [],
});
jest.spyOn(bundle, 'createCacheKey').mockImplementation(() => 'new');
@@ -314,14 +332,53 @@ it('emits "bundle not cached" event when cacheKey is outdated', async () => {
Array [
Object {
"bundle": ,
- "diff": "[32m- Expected[39m
- [31m+ Received[39m
+ "diff": "- Expected
+ + Received
- [32m- \\"old\\"[39m
- [31m+ \\"new\\"[39m",
+ - \\"old\\"
+ + \\"new\\"",
"reason": "cache key mismatch",
"type": "bundle not cached",
},
]
`);
});
+
+it('emits "dll references missing" when cacheKey has no dllRefs', async () => {
+ const config = OptimizerConfig.create({
+ repoRoot: MOCK_REPO_DIR,
+ pluginScanDirs: [],
+ pluginPaths: [Path.resolve(MOCK_REPO_DIR, 'plugins/foo')],
+ maxWorkerCount: 1,
+ });
+ const [bundle] = config.bundles;
+
+ const optimizerCacheKey = 'optimizerCacheKey';
+ const referencedPaths = [
+ Path.resolve(MOCK_REPO_DIR, 'plugins/foo/public/ext.ts'),
+ Path.resolve(MOCK_REPO_DIR, 'plugins/foo/public/index.ts'),
+ Path.resolve(MOCK_REPO_DIR, 'plugins/foo/public/lib.ts'),
+ ];
+
+ bundle.cache.set({
+ cacheKey: 'correct',
+ optimizerCacheKey,
+ referencedPaths,
+ moduleCount: referencedPaths.length,
+ bundleRefExportIds: [],
+ });
+
+ jest.spyOn(bundle, 'createCacheKey').mockImplementation(() => 'correct');
+
+ const cacheEvents = await allValuesFrom(getBundleCacheEvent$(config, optimizerCacheKey));
+
+ expect(cacheEvents).toMatchInlineSnapshot(`
+ Array [
+ Object {
+ "bundle": ,
+ "reason": "dll references missing",
+ "type": "bundle not cached",
+ },
+ ]
+ `);
+});
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 db3819d78156d..c5ac22e2faa9b 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
@@ -22,6 +22,7 @@ it(`finds all the optimizer files relative to it's path`, async () => {
/node_modules/@kbn/optimizer/target_node/common/bundle_refs.js,
/node_modules/@kbn/optimizer/target_node/common/bundle.js,
/node_modules/@kbn/optimizer/target_node/common/compiler_messages.js,
+ /node_modules/@kbn/optimizer/target_node/common/dll_manifest.js,
/node_modules/@kbn/optimizer/target_node/common/event_stream_helpers.js,
/node_modules/@kbn/optimizer/target_node/common/hashes.js,
/node_modules/@kbn/optimizer/target_node/common/index.js,
diff --git a/packages/kbn-optimizer/src/integration_tests/watch_bundles_for_changes.test.ts b/packages/kbn-optimizer/src/integration_tests/watch_bundles_for_changes.test.ts
index 4ba0a19fc3f5b..91a2f7324806a 100644
--- a/packages/kbn-optimizer/src/integration_tests/watch_bundles_for_changes.test.ts
+++ b/packages/kbn-optimizer/src/integration_tests/watch_bundles_for_changes.test.ts
@@ -8,8 +8,8 @@
import * as Rx from 'rxjs';
import { map } from 'rxjs/operators';
+import { fakeSchedulers } from 'rxjs-marbles/jest';
import ActualWatchpack from 'watchpack';
-import { lastValueFrom } from '@kbn/std';
import { Bundle, ascending } from '../common';
import { watchBundlesForChanges$ } from '../optimizer/watch_bundles_for_changes';
@@ -65,69 +65,72 @@ afterEach(async () => {
jest.useRealTimers();
});
-it('notifies of changes and completes once all bundles have changed', async () => {
- expect.assertions(18);
-
- const promise = lastValueFrom(
- watchBundlesForChanges$(bundleCacheEvent$, Date.now()).pipe(
- map((event, i) => {
- // each time we trigger a change event we get a 'changed detected' event
- if (i === 0 || i === 2 || i === 4 || i === 6) {
- expect(event).toHaveProperty('type', 'changes detected');
- return;
- }
-
- expect(event).toHaveProperty('type', 'changes');
- // to teach TS what we're doing
- if (event.type !== 'changes') {
- return;
- }
-
- // first we change foo and bar, after 1 second that change comes though
- if (i === 1) {
- expect(event.bundles).toHaveLength(2);
- const [bar, foo] = event.bundles.sort(ascending((b) => b.id));
- expect(bar).toHaveProperty('id', 'bar');
- expect(foo).toHaveProperty('id', 'foo');
- }
-
- // next we change just the baz package and it's represented on its own
- if (i === 3) {
- expect(event.bundles).toHaveLength(1);
- expect(event.bundles[0]).toHaveProperty('id', 'baz');
- }
-
- // finally we change box and car together
- if (i === 5) {
- expect(event.bundles).toHaveLength(2);
- const [bar, foo] = event.bundles.sort(ascending((b) => b.id));
- expect(bar).toHaveProperty('id', 'box');
- expect(foo).toHaveProperty('id', 'car');
- }
- })
- )
- );
-
- expect(MockWatchPack.mock.instances).toHaveLength(1);
- const [watcher] = MockWatchPack.mock.instances as any as Array>;
- expect(watcher.on).toHaveBeenCalledTimes(1);
- expect(watcher.on).toHaveBeenCalledWith('change', expect.any(Function));
- const [, changeListener] = watcher.on.mock.calls[0];
-
- // foo and bar are changes without 1sec so they are batched
- changeListener(bundleEntryPath(FOO_BUNDLE), 'modified');
- jest.advanceTimersByTime(900);
- changeListener(bundleEntryPath(BAR_BUNDLE), 'modified');
- jest.advanceTimersByTime(1000);
-
- // baz is the only change in 1sec so it is on its own
- changeListener(bundleEntryPath(BAZ_BUNDLE), 'modified');
- jest.advanceTimersByTime(1000);
-
- // finish by changing box and car
- changeListener(bundleEntryPath(BOX_BUNDLE), 'deleted');
- changeListener(bundleEntryPath(CAR_BUNDLE), 'deleted');
- jest.advanceTimersByTime(1000);
-
- await expect(promise).resolves.toEqual(undefined);
-});
+it(
+ 'notifies of changes and completes once all bundles have changed',
+ fakeSchedulers(async (advance) => {
+ expect.assertions(18);
+
+ const promise = Rx.lastValueFrom(
+ watchBundlesForChanges$(bundleCacheEvent$, Date.now()).pipe(
+ map((event, i) => {
+ // each time we trigger a change event we get a 'changed detected' event
+ if (i === 0 || i === 2 || i === 4 || i === 6) {
+ expect(event).toHaveProperty('type', 'changes detected');
+ return;
+ }
+
+ expect(event).toHaveProperty('type', 'changes');
+ // to teach TS what we're doing
+ if (event.type !== 'changes') {
+ return;
+ }
+
+ // first we change foo and bar, after 1 second that change comes though
+ if (i === 1) {
+ expect(event.bundles).toHaveLength(2);
+ const [bar, foo] = event.bundles.sort(ascending((b) => b.id));
+ expect(bar).toHaveProperty('id', 'bar');
+ expect(foo).toHaveProperty('id', 'foo');
+ }
+
+ // next we change just the baz package and it's represented on its own
+ if (i === 3) {
+ expect(event.bundles).toHaveLength(1);
+ expect(event.bundles[0]).toHaveProperty('id', 'baz');
+ }
+
+ // finally we change box and car together
+ if (i === 5) {
+ expect(event.bundles).toHaveLength(2);
+ const [bar, foo] = event.bundles.sort(ascending((b) => b.id));
+ expect(bar).toHaveProperty('id', 'box');
+ expect(foo).toHaveProperty('id', 'car');
+ }
+ })
+ )
+ );
+
+ expect(MockWatchPack.mock.instances).toHaveLength(1);
+ const [watcher] = MockWatchPack.mock.instances as any as Array>;
+ expect(watcher.on).toHaveBeenCalledTimes(1);
+ expect(watcher.on).toHaveBeenCalledWith('change', expect.any(Function));
+ const [, changeListener] = watcher.on.mock.calls[0];
+
+ // foo and bar are changes without 1sec so they are batched
+ changeListener(bundleEntryPath(FOO_BUNDLE), 'modified');
+ advance(900);
+ changeListener(bundleEntryPath(BAR_BUNDLE), 'modified');
+ advance(1000);
+
+ // baz is the only change in 1sec so it is on its own
+ changeListener(bundleEntryPath(BAZ_BUNDLE), 'modified');
+ advance(1000);
+
+ // finish by changing box and car
+ changeListener(bundleEntryPath(BOX_BUNDLE), 'deleted');
+ changeListener(bundleEntryPath(CAR_BUNDLE), 'deleted');
+ advance(1000);
+
+ await expect(promise).resolves.toEqual(undefined);
+ })
+);
diff --git a/packages/kbn-optimizer/src/optimizer/bundle_cache.ts b/packages/kbn-optimizer/src/optimizer/bundle_cache.ts
index 78b0cf7a437e5..68bfa9e4de778 100644
--- a/packages/kbn-optimizer/src/optimizer/bundle_cache.ts
+++ b/packages/kbn-optimizer/src/optimizer/bundle_cache.ts
@@ -6,10 +6,13 @@
* Side Public License, v 1.
*/
+import Fs from 'fs';
+
import * as Rx from 'rxjs';
import { mergeAll } from 'rxjs/operators';
+import { dllManifestPath } from '@kbn/ui-shared-deps-npm';
-import { Bundle, BundleRefs, Hashes } from '../common';
+import { Bundle, BundleRefs, Hashes, parseDllManifest } from '../common';
import { OptimizerConfig } from './optimizer_config';
import { diffCacheKey } from './diff_cache_key';
@@ -25,7 +28,8 @@ export interface BundleNotCachedEvent {
| 'cache key mismatch'
| 'cache disabled'
| 'bundle references missing'
- | 'bundle references outdated';
+ | 'bundle references outdated'
+ | 'dll references missing';
diff?: string;
bundle: Bundle;
}
@@ -95,7 +99,6 @@ export function getBundleCacheEvent$(
}
const refs = bundleRefs.filterByExportIds(bundleRefExportIds);
-
const bundleRefsDiff = diffCacheKey(
refs.map((r) => r.exportId).sort((a, b) => a.localeCompare(b)),
bundleRefExportIds
@@ -110,15 +113,28 @@ export function getBundleCacheEvent$(
continue;
}
+ if (!bundle.cache.getDllRefKeys()) {
+ events.push({
+ type: 'bundle not cached',
+ reason: 'dll references missing',
+ bundle,
+ });
+ continue;
+ }
+
eligibleBundles.push(bundle);
}
+ const dllManifest = parseDllManifest(JSON.parse(Fs.readFileSync(dllManifestPath, 'utf8')));
const hashes = new Hashes();
for (const bundle of eligibleBundles) {
const paths = bundle.cache.getReferencedPaths() ?? [];
await hashes.populate(paths);
- const diff = diffCacheKey(bundle.cache.getCacheKey(), bundle.createCacheKey(paths, hashes));
+ const diff = diffCacheKey(
+ bundle.cache.getCacheKey(),
+ bundle.createCacheKey(paths, hashes, dllManifest, bundle.cache.getDllRefKeys() ?? [])
+ );
if (diff) {
events.push({
diff --git a/packages/kbn-optimizer/src/optimizer/observe_worker.ts b/packages/kbn-optimizer/src/optimizer/observe_worker.ts
index 9f0ed9af556fb..338f64a63b3d7 100644
--- a/packages/kbn-optimizer/src/optimizer/observe_worker.ts
+++ b/packages/kbn-optimizer/src/optimizer/observe_worker.ts
@@ -159,7 +159,7 @@ export function observeWorker(
let lastMsg: WorkerMsg;
const worker$: Rx.Observable = Rx.merge(
Rx.of({
- type: 'worker started',
+ type: 'worker started' as const,
bundles,
}),
// TypeScript note: As long as the proc stdio[1] is 'pipe', then stdout will not be null
diff --git a/packages/kbn-optimizer/src/worker/populate_bundle_cache_plugin.ts b/packages/kbn-optimizer/src/worker/populate_bundle_cache_plugin.ts
index 2c6569ef62321..cfa165d11a1fe 100644
--- a/packages/kbn-optimizer/src/worker/populate_bundle_cache_plugin.ts
+++ b/packages/kbn-optimizer/src/worker/populate_bundle_cache_plugin.ts
@@ -12,7 +12,14 @@ import { inspect } from 'util';
import webpack from 'webpack';
-import { Bundle, WorkerConfig, ascending, parseFilePath, Hashes } from '../common';
+import {
+ Bundle,
+ WorkerConfig,
+ ascending,
+ parseFilePath,
+ Hashes,
+ ParsedDllManifest,
+} from '../common';
import { BundleRefModule } from './bundle_ref_module';
import {
isExternalModule,
@@ -47,7 +54,11 @@ function isBazelPackage(pkgJsonPath: string) {
}
export class PopulateBundleCachePlugin {
- constructor(private readonly workerConfig: WorkerConfig, private readonly bundle: Bundle) {}
+ constructor(
+ private readonly workerConfig: WorkerConfig,
+ private readonly bundle: Bundle,
+ private readonly dllManifest: ParsedDllManifest
+ ) {}
public apply(compiler: webpack.Compiler) {
const { bundle, workerConfig } = this;
@@ -80,6 +91,8 @@ export class PopulateBundleCachePlugin {
return rawHashes.set(path, Hashes.hash(content));
};
+ const dllRefKeys = new Set();
+
if (bundle.manifestPath) {
addReferenced(bundle.manifestPath);
}
@@ -136,7 +149,13 @@ export class PopulateBundleCachePlugin {
continue;
}
- if (isExternalModule(module) || isIgnoredModule(module) || isDelegatedModule(module)) {
+ if (isDelegatedModule(module)) {
+ // delegated modules are the references to the ui-shared-deps-npm dll
+ dllRefKeys.add(module.userRequest);
+ continue;
+ }
+
+ if (isExternalModule(module) || isIgnoredModule(module)) {
continue;
}
@@ -144,14 +163,21 @@ export class PopulateBundleCachePlugin {
}
const referencedPaths = Array.from(paths).sort(ascending((p) => p));
+ const sortedDllRefKeys = Array.from(dllRefKeys).sort(ascending((p) => p));
bundle.cache.set({
bundleRefExportIds: bundleRefExportIds.sort(ascending((p) => p)),
optimizerCacheKey: workerConfig.optimizerCacheKey,
- cacheKey: bundle.createCacheKey(referencedPaths, new Hashes(rawHashes)),
+ cacheKey: bundle.createCacheKey(
+ referencedPaths,
+ new Hashes(rawHashes),
+ this.dllManifest,
+ sortedDllRefKeys
+ ),
moduleCount,
workUnits,
referencedPaths,
+ dllRefKeys: sortedDllRefKeys,
});
// write the cache to the compilation so that it isn't cleaned by clean-webpack-plugin
diff --git a/packages/kbn-optimizer/src/worker/run_compilers.ts b/packages/kbn-optimizer/src/worker/run_compilers.ts
index 4f5bb23c3550d..6578e5fed5738 100644
--- a/packages/kbn-optimizer/src/worker/run_compilers.ts
+++ b/packages/kbn-optimizer/src/worker/run_compilers.ts
@@ -27,7 +27,7 @@ const observeCompiler = (
compiler: webpack.Compiler
): Rx.Observable => {
const compilerMsgs = new CompilerMsgs(bundle.id);
- const done$ = new Rx.Subject();
+ const done$ = new Rx.Subject();
const { beforeRun, watchRun, done } = compiler.hooks;
/**
diff --git a/packages/kbn-optimizer/src/worker/webpack.config.ts b/packages/kbn-optimizer/src/worker/webpack.config.ts
index e420b4ea65947..422fe12f11b28 100644
--- a/packages/kbn-optimizer/src/worker/webpack.config.ts
+++ b/packages/kbn-optimizer/src/worker/webpack.config.ts
@@ -7,6 +7,7 @@
*/
import Path from 'path';
+import Fs from 'fs';
import { stringifyRequest } from 'loader-utils';
import webpack from 'webpack';
@@ -18,7 +19,7 @@ import CompressionPlugin from 'compression-webpack-plugin';
import UiSharedDepsNpm from '@kbn/ui-shared-deps-npm';
import * as UiSharedDepsSrc from '@kbn/ui-shared-deps-src';
-import { Bundle, BundleRefs, WorkerConfig } from '../common';
+import { Bundle, BundleRefs, WorkerConfig, parseDllManifest } from '../common';
import { BundleRefsPlugin } from './bundle_refs_plugin';
import { BundleMetricsPlugin } from './bundle_metrics_plugin';
import { EmitStatsPlugin } from './emit_stats_plugin';
@@ -27,6 +28,7 @@ import { PopulateBundleCachePlugin } from './populate_bundle_cache_plugin';
const IS_CODE_COVERAGE = !!process.env.CODE_COVERAGE;
const ISTANBUL_PRESET_PATH = require.resolve('@kbn/babel-preset/istanbul_preset');
const BABEL_PRESET_PATH = require.resolve('@kbn/babel-preset/webpack_preset');
+const DLL_MANIFEST = JSON.parse(Fs.readFileSync(UiSharedDepsNpm.dllManifestPath, 'utf8'));
const nodeModulesButNotKbnPackages = (path: string) => {
if (!path.includes('node_modules')) {
@@ -79,11 +81,11 @@ export function getWebpackConfig(bundle: Bundle, bundleRefs: BundleRefs, worker:
plugins: [
new CleanWebpackPlugin(),
new BundleRefsPlugin(bundle, bundleRefs),
- new PopulateBundleCachePlugin(worker, bundle),
+ new PopulateBundleCachePlugin(worker, bundle, parseDllManifest(DLL_MANIFEST)),
new BundleMetricsPlugin(bundle),
new webpack.DllReferencePlugin({
context: worker.repoRoot,
- manifest: require(UiSharedDepsNpm.dllManifestPath),
+ manifest: DLL_MANIFEST,
}),
...(worker.profileWebpack ? [new EmitStatsPlugin(bundle)] : []),
...(bundle.banner ? [new webpack.BannerPlugin({ banner: bundle.banner, raw: true })] : []),
diff --git a/packages/kbn-optimizer/src/worker/webpack_helpers.ts b/packages/kbn-optimizer/src/worker/webpack_helpers.ts
index 1c01faf207400..4bae5035c9a06 100644
--- a/packages/kbn-optimizer/src/worker/webpack_helpers.ts
+++ b/packages/kbn-optimizer/src/worker/webpack_helpers.ts
@@ -156,6 +156,8 @@ export interface WebpackDelegatedModule {
type: string;
id: number;
dependencies: unknown[];
+ /** The ID of the module in the DLL manifest */
+ userRequest: string;
}
export function isDelegatedModule(module: any): module is WebpackDelegatedModule {
diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js
index 0d731fd936507..84e8b95e6ad1c 100644
--- a/packages/kbn-pm/dist/index.js
+++ b/packages/kbn-pm/dist/index.js
@@ -94,21 +94,21 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _cli__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "run", function() { return _cli__WEBPACK_IMPORTED_MODULE_0__["run"]; });
-/* harmony import */ var _production__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(565);
+/* harmony import */ var _production__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(591);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildBazelProductionProjects", function() { return _production__WEBPACK_IMPORTED_MODULE_1__["buildBazelProductionProjects"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildNonBazelProductionProjects", function() { return _production__WEBPACK_IMPORTED_MODULE_1__["buildNonBazelProductionProjects"]; });
-/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(340);
+/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(461);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjects", function() { return _utils_projects__WEBPACK_IMPORTED_MODULE_2__["getProjects"]; });
-/* harmony import */ var _utils_project__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(342);
+/* harmony import */ var _utils_project__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(463);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Project", function() { return _utils_project__WEBPACK_IMPORTED_MODULE_3__["Project"]; });
-/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(343);
+/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(464);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transformDependencies", function() { return _utils_package_json__WEBPACK_IMPORTED_MODULE_4__["transformDependencies"]; });
-/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(564);
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(590);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjectPaths", function() { return _config__WEBPACK_IMPORTED_MODULE_5__["getProjectPaths"]; });
/*
@@ -140,9 +140,9 @@ __webpack_require__.r(__webpack_exports__);
/* 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__(5);
/* 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 _commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(129);
-/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(559);
-/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(220);
+/* harmony import */ var _commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(250);
+/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(585);
+/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(341);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
@@ -569,11 +569,11 @@ Object.defineProperty(exports, "pickLevelFromFlags", {
var _tooling_log = __webpack_require__(6);
-var _tooling_log_text_writer = __webpack_require__(112);
+var _tooling_log_text_writer = __webpack_require__(233);
-var _log_levels = __webpack_require__(127);
+var _log_levels = __webpack_require__(248);
-var _tooling_log_collecting_writer = __webpack_require__(128);
+var _tooling_log_collecting_writer = __webpack_require__(249);
/***/ }),
/* 6 */
@@ -593,7 +593,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(8));
var Rx = _interopRequireWildcard(__webpack_require__(9));
-var _tooling_log_text_writer = __webpack_require__(112);
+var _tooling_log_text_writer = __webpack_require__(233);
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); }
@@ -788,59 +788,59 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__["ConnectableObservable"]; });
-/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(32);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__["GroupedObservable"]; });
+/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_2__["observable"]; });
-/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__["observable"]; });
+/* harmony import */ var _internal_observable_dom_animationFrames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(31);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrames", function() { return _internal_observable_dom_animationFrames__WEBPACK_IMPORTED_MODULE_3__["animationFrames"]; });
-/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(28);
+/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(34);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return _internal_Subject__WEBPACK_IMPORTED_MODULE_4__["Subject"]; });
-/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(33);
+/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(36);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__["BehaviorSubject"]; });
-/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(34);
+/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(37);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__["ReplaySubject"]; });
-/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(51);
+/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(39);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__["AsyncSubject"]; });
-/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(52);
+/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(40);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["asap"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["asapScheduler"]; });
-/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(56);
+/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(50);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "async", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["async"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["asyncScheduler"]; });
-/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(35);
+/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(51);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["queue"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["queueScheduler"]; });
-/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(57);
+/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(54);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["animationFrame"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["animationFrameScheduler"]; });
-/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(60);
+/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(57);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["VirtualTimeScheduler"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["VirtualAction"]; });
-/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(41);
+/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(49);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__["Scheduler"]; });
-/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(18);
+/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(14);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__["Subscription"]; });
-/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(12);
+/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(11);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__["Subscriber"]; });
-/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(43);
+/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(58);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["Notification"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["NotificationKind"]; });
@@ -848,116 +848,464 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(25);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__["pipe"]; });
-/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(61);
+/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(21);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__["noop"]; });
/* harmony import */ var _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(26);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__["identity"]; });
-/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(62);
+/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(84);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__["isObservable"]; });
-/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(63);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__["ArgumentOutOfRangeError"]; });
+/* harmony import */ var _internal_lastValueFrom__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(85);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lastValueFrom", function() { return _internal_lastValueFrom__WEBPACK_IMPORTED_MODULE_21__["lastValueFrom"]; });
-/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(64);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__["EmptyError"]; });
+/* harmony import */ var _internal_firstValueFrom__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(87);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "firstValueFrom", function() { return _internal_firstValueFrom__WEBPACK_IMPORTED_MODULE_22__["firstValueFrom"]; });
-/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(29);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__["ObjectUnsubscribedError"]; });
+/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(88);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_23__["ArgumentOutOfRangeError"]; });
-/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(21);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__["UnsubscriptionError"]; });
+/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(86);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_24__["EmptyError"]; });
-/* harmony import */ var _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(65);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__["TimeoutError"]; });
+/* harmony import */ var _internal_util_NotFoundError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(89);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NotFoundError", function() { return _internal_util_NotFoundError__WEBPACK_IMPORTED_MODULE_25__["NotFoundError"]; });
-/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(66);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__["bindCallback"]; });
+/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(35);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_26__["ObjectUnsubscribedError"]; });
-/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(68);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__["bindNodeCallback"]; });
+/* harmony import */ var _internal_util_SequenceError__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(90);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SequenceError", function() { return _internal_util_SequenceError__WEBPACK_IMPORTED_MODULE_27__["SequenceError"]; });
-/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(69);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__["combineLatest"]; });
+/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(91);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_28__["TimeoutError"]; });
-/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(80);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__["concat"]; });
+/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(15);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_29__["UnsubscriptionError"]; });
-/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(92);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__["defer"]; });
+/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(93);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_30__["bindCallback"]; });
-/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(44);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__["empty"]; });
+/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(97);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_31__["bindNodeCallback"]; });
-/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(93);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__["forkJoin"]; });
+/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(98);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_32__["combineLatest"]; });
-/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(84);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "from", function() { return _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__["from"]; });
+/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(101);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_observable_concat__WEBPACK_IMPORTED_MODULE_33__["concat"]; });
-/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(94);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__["fromEvent"]; });
+/* harmony import */ var _internal_observable_connectable__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(106);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "connectable", function() { return _internal_observable_connectable__WEBPACK_IMPORTED_MODULE_34__["connectable"]; });
-/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(95);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__["fromEventPattern"]; });
+/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(107);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return _internal_observable_defer__WEBPACK_IMPORTED_MODULE_35__["defer"]; });
-/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(96);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__["generate"]; });
+/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(59);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_36__["empty"]; });
-/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(97);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__["iif"]; });
+/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(108);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_37__["forkJoin"]; });
-/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(98);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__["interval"]; });
+/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(63);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "from", function() { return _internal_observable_from__WEBPACK_IMPORTED_MODULE_38__["from"]; });
+
+/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(109);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_39__["fromEvent"]; });
+
+/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(110);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_40__["fromEventPattern"]; });
+
+/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(111);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return _internal_observable_generate__WEBPACK_IMPORTED_MODULE_41__["generate"]; });
+
+/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(112);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return _internal_observable_iif__WEBPACK_IMPORTED_MODULE_42__["iif"]; });
+
+/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(113);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return _internal_observable_interval__WEBPACK_IMPORTED_MODULE_43__["interval"]; });
+
+/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(115);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_observable_merge__WEBPACK_IMPORTED_MODULE_44__["merge"]; });
+
+/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(116);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "never", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_45__["never"]; });
+
+/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(60);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "of", function() { return _internal_observable_of__WEBPACK_IMPORTED_MODULE_46__["of"]; });
+
+/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(117);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_47__["onErrorResumeNext"]; });
+
+/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(120);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_48__["pairs"]; });
+
+/* harmony import */ var _internal_observable_partition__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(121);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_observable_partition__WEBPACK_IMPORTED_MODULE_49__["partition"]; });
+
+/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(124);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_observable_race__WEBPACK_IMPORTED_MODULE_50__["race"]; });
+
+/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(125);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _internal_observable_range__WEBPACK_IMPORTED_MODULE_51__["range"]; });
+
+/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(83);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_52__["throwError"]; });
+
+/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(114);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return _internal_observable_timer__WEBPACK_IMPORTED_MODULE_53__["timer"]; });
+
+/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(126);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "using", function() { return _internal_observable_using__WEBPACK_IMPORTED_MODULE_54__["using"]; });
+
+/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(127);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_observable_zip__WEBPACK_IMPORTED_MODULE_55__["zip"]; });
+
+/* harmony import */ var _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(64);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_56__["scheduled"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_36__["EMPTY"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_45__["NEVER"]; });
+
+/* harmony import */ var _internal_types__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(128);
+/* empty/unused harmony star reexport *//* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(18);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "config", function() { return _internal_config__WEBPACK_IMPORTED_MODULE_58__["config"]; });
+
+/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(129);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_59__["audit"]; });
+
+/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(130);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_60__["auditTime"]; });
+
+/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(131);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_61__["buffer"]; });
+
+/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(132);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_62__["bufferCount"]; });
+
+/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(133);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_63__["bufferTime"]; });
+
+/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(134);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_64__["bufferToggle"]; });
+
+/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(135);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_65__["bufferWhen"]; });
+
+/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(136);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_66__["catchError"]; });
+
+/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(137);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_67__["combineAll"]; });
+
+/* harmony import */ var _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(138);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestAll", function() { return _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_68__["combineLatestAll"]; });
+
+/* harmony import */ var _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(143);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestWith", function() { return _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_69__["combineLatestWith"]; });
+
+/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(102);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_70__["concatAll"]; });
+
+/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(145);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_71__["concatMap"]; });
+
+/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(146);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_72__["concatMapTo"]; });
+
+/* harmony import */ var _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(147);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatWith", function() { return _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_73__["concatWith"]; });
+
+/* harmony import */ var _internal_operators_connect__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(149);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "connect", function() { return _internal_operators_connect__WEBPACK_IMPORTED_MODULE_74__["connect"]; });
+
+/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(151);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_75__["count"]; });
+
+/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(152);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_76__["debounce"]; });
+
+/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(153);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_77__["debounceTime"]; });
+
+/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(154);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_78__["defaultIfEmpty"]; });
+
+/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(155);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_79__["delay"]; });
+
+/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(156);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_80__["delayWhen"]; });
+
+/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(160);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_81__["dematerialize"]; });
+
+/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(161);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_82__["distinct"]; });
+
+/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(162);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_83__["distinctUntilChanged"]; });
+
+/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(163);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_84__["distinctUntilKeyChanged"]; });
+
+/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(164);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_85__["elementAt"]; });
+
+/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(166);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_86__["endWith"]; });
+
+/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(167);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_87__["every"]; });
+
+/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(168);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_88__["exhaust"]; });
+
+/* harmony import */ var _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(169);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustAll", function() { return _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_89__["exhaustAll"]; });
+
+/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(170);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_90__["exhaustMap"]; });
+
+/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(171);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_91__["expand"]; });
+
+/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(123);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_92__["filter"]; });
+
+/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(172);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_93__["finalize"]; });
+
+/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(173);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_94__["find"]; });
+
+/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(174);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_95__["findIndex"]; });
+
+/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(175);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_96__["first"]; });
+
+/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(176);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_97__["groupBy"]; });
+
+/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(158);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_98__["ignoreElements"]; });
+
+/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(177);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_99__["isEmpty"]; });
+
+/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(178);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_100__["last"]; });
+
+/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(96);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_101__["map"]; });
+
+/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(159);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_102__["mapTo"]; });
+
+/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(180);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_103__["materialize"]; });
+
+/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(181);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_104__["max"]; });
+
+/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(103);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_105__["mergeAll"]; });
+
+/* harmony import */ var _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(182);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_106__["flatMap"]; });
+
+/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(104);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_107__["mergeMap"]; });
+
+/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(183);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_108__["mergeMapTo"]; });
+
+/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(184);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_109__["mergeScan"]; });
+
+/* harmony import */ var _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(185);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeWith", function() { return _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_110__["mergeWith"]; });
+
+/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(187);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_111__["min"]; });
+
+/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(188);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_112__["multicast"]; });
+
+/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(75);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_113__["observeOn"]; });
+
+/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(189);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_114__["pairwise"]; });
+
+/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(190);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_115__["pluck"]; });
+
+/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(191);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_116__["publish"]; });
+
+/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(192);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_117__["publishBehavior"]; });
+
+/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(193);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_118__["publishLast"]; });
+
+/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(194);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_119__["publishReplay"]; });
+
+/* harmony import */ var _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(195);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "raceWith", function() { return _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_120__["raceWith"]; });
+
+/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(141);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_121__["reduce"]; });
+
+/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(196);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_122__["repeat"]; });
+
+/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(197);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_123__["repeatWhen"]; });
+
+/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(198);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_124__["retry"]; });
+
+/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(199);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_125__["retryWhen"]; });
+
+/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(28);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_126__["refCount"]; });
+
+/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(200);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_127__["sample"]; });
+
+/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(201);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_128__["sampleTime"]; });
+
+/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(202);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_129__["scan"]; });
+
+/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(203);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_130__["sequenceEqual"]; });
+
+/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(204);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_131__["share"]; });
+
+/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(205);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_132__["shareReplay"]; });
+
+/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(206);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_133__["single"]; });
+
+/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(207);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_134__["skip"]; });
+
+/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(208);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_135__["skipLast"]; });
+
+/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(209);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_136__["skipUntil"]; });
+
+/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(210);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_137__["skipWhile"]; });
+
+/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(211);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_138__["startWith"]; });
+
+/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(77);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_139__["subscribeOn"]; });
+
+/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(212);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_140__["switchAll"]; });
+
+/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(213);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_141__["switchMap"]; });
+
+/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(214);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_142__["switchMapTo"]; });
+
+/* harmony import */ var _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(215);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchScan", function() { return _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_143__["switchScan"]; });
+
+/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(157);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_144__["take"]; });
+
+/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(179);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_145__["takeLast"]; });
+
+/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(216);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_146__["takeUntil"]; });
+
+/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(217);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_147__["takeWhile"]; });
+
+/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(218);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_148__["tap"]; });
+
+/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(219);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_149__["throttle"]; });
+
+/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(220);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_150__["throttleTime"]; });
+
+/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(165);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_151__["throwIfEmpty"]; });
+
+/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(221);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_152__["timeInterval"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_28__["timeout"]; });
+
+/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(222);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_153__["timeoutWith"]; });
+
+/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(223);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_154__["timestamp"]; });
+
+/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(140);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_155__["toArray"]; });
+
+/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(224);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_156__["window"]; });
+
+/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(225);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_157__["windowCount"]; });
+
+/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(226);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_158__["windowTime"]; });
+
+/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(227);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_159__["windowToggle"]; });
+
+/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(228);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_160__["windowWhen"]; });
+
+/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(229);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_161__["withLatestFrom"]; });
+
+/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(230);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_162__["zipAll"]; });
+
+/* harmony import */ var _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(231);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipWith", function() { return _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_163__["zipWith"]; });
-/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(100);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__["merge"]; });
-/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(101);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "never", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__["never"]; });
-/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(45);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "of", function() { return _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__["of"]; });
-/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(102);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__["onErrorResumeNext"]; });
-/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(103);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__["pairs"]; });
-/* harmony import */ var _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(104);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__["partition"]; });
-/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(107);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__["race"]; });
-/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(108);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__["range"]; });
-/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(50);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__["throwError"]; });
-/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(109);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__["timer"]; });
-/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(110);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "using", function() { return _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__["using"]; });
-/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(111);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__["zip"]; });
-/* harmony import */ var _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(85);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__["scheduled"]; });
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__["EMPTY"]; });
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__["NEVER"]; });
-/* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(16);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "config", function() { return _internal_config__WEBPACK_IMPORTED_MODULE_52__["config"]; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
@@ -1013,9 +1361,104 @@ __webpack_require__.r(__webpack_exports__);
-//# sourceMappingURL=index.js.map
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//# sourceMappingURL=index.js.map
+
/***/ }),
/* 10 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -1023,20 +1466,22 @@ __webpack_require__.r(__webpack_exports__);
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return Observable; });
-/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
-/* harmony import */ var _util_toSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
+/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(25);
-/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16);
-/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13);
+/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(23);
-var Observable = /*@__PURE__*/ (function () {
+
+
+var Observable = (function () {
function Observable(subscribe) {
- this._isScalar = false;
if (subscribe) {
this._subscribe = subscribe;
}
@@ -1048,64 +1493,52 @@ var Observable = /*@__PURE__*/ (function () {
return observable;
};
Observable.prototype.subscribe = function (observerOrNext, error, complete) {
- var operator = this.operator;
- var sink = Object(_util_toSubscriber__WEBPACK_IMPORTED_MODULE_1__["toSubscriber"])(observerOrNext, error, complete);
- if (operator) {
- sink.add(operator.call(sink, this.source));
- }
- else {
- sink.add(this.source || (_config__WEBPACK_IMPORTED_MODULE_4__["config"].useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?
- this._subscribe(sink) :
- this._trySubscribe(sink));
- }
- if (_config__WEBPACK_IMPORTED_MODULE_4__["config"].useDeprecatedSynchronousErrorHandling) {
- if (sink.syncErrorThrowable) {
- sink.syncErrorThrowable = false;
- if (sink.syncErrorThrown) {
- throw sink.syncErrorValue;
- }
- }
- }
- return sink;
+ var _this = this;
+ var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new _Subscriber__WEBPACK_IMPORTED_MODULE_0__["SafeSubscriber"](observerOrNext, error, complete);
+ Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_6__["errorContext"])(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) {
- if (_config__WEBPACK_IMPORTED_MODULE_4__["config"].useDeprecatedSynchronousErrorHandling) {
- sink.syncErrorThrown = true;
- sink.syncErrorValue = err;
- }
- if (Object(_util_canReportError__WEBPACK_IMPORTED_MODULE_0__["canReportError"])(sink)) {
- sink.error(err);
- }
- else {
- console.warn(err);
- }
+ sink.error(err);
}
};
Observable.prototype.forEach = function (next, promiseCtor) {
var _this = this;
promiseCtor = getPromiseCtor(promiseCtor);
return new promiseCtor(function (resolve, reject) {
- var subscription;
- subscription = _this.subscribe(function (value) {
- try {
- next(value);
- }
- catch (err) {
- reject(err);
- if (subscription) {
- subscription.unsubscribe();
+ var subscriber = new _Subscriber__WEBPACK_IMPORTED_MODULE_0__["SafeSubscriber"]({
+ next: function (value) {
+ try {
+ next(value);
}
- }
- }, reject, resolve);
+ catch (err) {
+ reject(err);
+ subscriber.unsubscribe();
+ }
+ },
+ error: reject,
+ complete: resolve,
+ });
+ _this.subscribe(subscriber);
});
};
Observable.prototype._subscribe = function (subscriber) {
- var source = this.source;
- return source && source.subscribe(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"]] = function () {
return this;
@@ -1115,9 +1548,6 @@ var Observable = /*@__PURE__*/ (function () {
for (var _i = 0; _i < arguments.length; _i++) {
operations[_i] = arguments[_i];
}
- if (operations.length === 0) {
- return this;
- }
return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__["pipeFromArray"])(operations)(this);
};
Observable.prototype.toPromise = function (promiseCtor) {
@@ -1125,7 +1555,7 @@ var Observable = /*@__PURE__*/ (function () {
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); });
+ _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });
});
};
Observable.create = function (subscribe) {
@@ -1135,61 +1565,36 @@ var Observable = /*@__PURE__*/ (function () {
}());
function getPromiseCtor(promiseCtor) {
- if (!promiseCtor) {
- promiseCtor = _config__WEBPACK_IMPORTED_MODULE_4__["config"].Promise || Promise;
- }
- if (!promiseCtor) {
- throw new Error('no Promise impl found');
- }
- return promiseCtor;
+ var _a;
+ return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : _config__WEBPACK_IMPORTED_MODULE_4__["config"].Promise) !== null && _a !== void 0 ? _a : Promise;
+}
+function isObserver(value) {
+ return value && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__["isFunction"])(value.next) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__["isFunction"])(value.error) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__["isFunction"])(value.complete);
+}
+function isSubscriber(value) {
+ return (value && value instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"]) || (isObserver(value) && Object(_Subscription__WEBPACK_IMPORTED_MODULE_1__["isSubscription"])(value));
}
//# sourceMappingURL=Observable.js.map
-
/***/ }),
/* 11 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "canReportError", function() { return canReportError; });
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
-/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */
-
-function canReportError(observer) {
- while (observer) {
- var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;
- if (closed_1 || isStopped) {
- return false;
- }
- else if (destination && destination instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"]) {
- observer = destination;
- }
- else {
- observer = null;
- }
- }
- return true;
-}
-//# sourceMappingURL=canReportError.js.map
-
-
-/***/ }),
-/* 12 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return Subscriber; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SafeSubscriber", function() { return SafeSubscriber; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
-/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
-/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(22);
-/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(16);
-/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(17);
-/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EMPTY_OBSERVER", function() { return EMPTY_OBSERVER; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
+/* harmony import */ var _util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(19);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21);
+/* harmony import */ var _NotificationFactories__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(22);
+/* harmony import */ var _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(20);
+/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(23);
+
@@ -1197,235 +1602,185 @@ __webpack_require__.r(__webpack_exports__);
-var Subscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](Subscriber, _super);
- function Subscriber(destinationOrNext, error, complete) {
+
+var Subscriber = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(Subscriber, _super);
+ function Subscriber(destination) {
var _this = _super.call(this) || this;
- _this.syncErrorValue = null;
- _this.syncErrorThrown = false;
- _this.syncErrorThrowable = false;
_this.isStopped = false;
- switch (arguments.length) {
- case 0:
- _this.destination = _Observer__WEBPACK_IMPORTED_MODULE_2__["empty"];
- break;
- case 1:
- if (!destinationOrNext) {
- _this.destination = _Observer__WEBPACK_IMPORTED_MODULE_2__["empty"];
- break;
- }
- if (typeof destinationOrNext === 'object') {
- if (destinationOrNext instanceof Subscriber) {
- _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;
- _this.destination = destinationOrNext;
- destinationOrNext.add(_this);
- }
- else {
- _this.syncErrorThrowable = true;
- _this.destination = new SafeSubscriber(_this, destinationOrNext);
- }
- break;
- }
- default:
- _this.syncErrorThrowable = true;
- _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);
- break;
+ if (destination) {
+ _this.destination = destination;
+ if (Object(_Subscription__WEBPACK_IMPORTED_MODULE_2__["isSubscription"])(destination)) {
+ destination.add(_this);
+ }
+ }
+ else {
+ _this.destination = EMPTY_OBSERVER;
}
return _this;
}
- Subscriber.prototype[_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__["rxSubscriber"]] = function () { return this; };
Subscriber.create = function (next, error, complete) {
- var subscriber = new Subscriber(next, error, complete);
- subscriber.syncErrorThrowable = false;
- return subscriber;
+ return new SafeSubscriber(next, error, complete);
};
Subscriber.prototype.next = function (value) {
- if (!this.isStopped) {
+ if (this.isStopped) {
+ handleStoppedNotification(Object(_NotificationFactories__WEBPACK_IMPORTED_MODULE_6__["nextNotification"])(value), this);
+ }
+ else {
this._next(value);
}
};
Subscriber.prototype.error = function (err) {
- if (!this.isStopped) {
+ if (this.isStopped) {
+ handleStoppedNotification(Object(_NotificationFactories__WEBPACK_IMPORTED_MODULE_6__["errorNotification"])(err), this);
+ }
+ else {
this.isStopped = true;
this._error(err);
}
};
Subscriber.prototype.complete = function () {
- if (!this.isStopped) {
+ if (this.isStopped) {
+ handleStoppedNotification(_NotificationFactories__WEBPACK_IMPORTED_MODULE_6__["COMPLETE_NOTIFICATION"], this);
+ }
+ else {
this.isStopped = true;
this._complete();
}
};
Subscriber.prototype.unsubscribe = function () {
- if (this.closed) {
- return;
+ if (!this.closed) {
+ this.isStopped = true;
+ _super.prototype.unsubscribe.call(this);
+ this.destination = null;
}
- this.isStopped = true;
- _super.prototype.unsubscribe.call(this);
};
Subscriber.prototype._next = function (value) {
this.destination.next(value);
};
Subscriber.prototype._error = function (err) {
- this.destination.error(err);
- this.unsubscribe();
+ try {
+ this.destination.error(err);
+ }
+ finally {
+ this.unsubscribe();
+ }
};
Subscriber.prototype._complete = function () {
- this.destination.complete();
- this.unsubscribe();
- };
- Subscriber.prototype._unsubscribeAndRecycle = function () {
- var _parentOrParents = this._parentOrParents;
- this._parentOrParents = null;
- this.unsubscribe();
- this.closed = false;
- this.isStopped = false;
- this._parentOrParents = _parentOrParents;
- return this;
+ try {
+ this.destination.complete();
+ }
+ finally {
+ this.unsubscribe();
+ }
};
return Subscriber;
-}(_Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"]));
+}(_Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"]));
-var SafeSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SafeSubscriber, _super);
- function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {
- var _this = _super.call(this) || this;
- _this._parentSubscriber = _parentSubscriber;
- var next;
- var context = _this;
- if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(observerOrNext)) {
- next = observerOrNext;
- }
- else if (observerOrNext) {
- next = observerOrNext.next;
- error = observerOrNext.error;
- complete = observerOrNext.complete;
- if (observerOrNext !== _Observer__WEBPACK_IMPORTED_MODULE_2__["empty"]) {
- context = Object.create(observerOrNext);
- if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(context.unsubscribe)) {
- _this.add(context.unsubscribe.bind(context));
- }
- context.unsubscribe = _this.unsubscribe.bind(_this);
- }
- }
- _this._context = context;
- _this._next = next;
- _this._error = error;
- _this._complete = complete;
- return _this;
+var _bind = Function.prototype.bind;
+function bind(fn, thisArg) {
+ return _bind.call(fn, thisArg);
+}
+var ConsumerObserver = (function () {
+ function ConsumerObserver(partialObserver) {
+ this.partialObserver = partialObserver;
}
- SafeSubscriber.prototype.next = function (value) {
- if (!this.isStopped && this._next) {
- var _parentSubscriber = this._parentSubscriber;
- if (!_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {
- this.__tryOrUnsub(this._next, value);
+ ConsumerObserver.prototype.next = function (value) {
+ var partialObserver = this.partialObserver;
+ if (partialObserver.next) {
+ try {
+ partialObserver.next(value);
}
- else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {
- this.unsubscribe();
+ catch (error) {
+ handleUnhandledError(error);
}
}
};
- SafeSubscriber.prototype.error = function (err) {
- if (!this.isStopped) {
- var _parentSubscriber = this._parentSubscriber;
- var useDeprecatedSynchronousErrorHandling = _config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling;
- if (this._error) {
- if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {
- this.__tryOrUnsub(this._error, err);
- this.unsubscribe();
- }
- else {
- this.__tryOrSetError(_parentSubscriber, this._error, err);
- this.unsubscribe();
- }
- }
- else if (!_parentSubscriber.syncErrorThrowable) {
- this.unsubscribe();
- if (useDeprecatedSynchronousErrorHandling) {
- throw err;
- }
- Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err);
+ ConsumerObserver.prototype.error = function (err) {
+ var partialObserver = this.partialObserver;
+ if (partialObserver.error) {
+ try {
+ partialObserver.error(err);
}
- else {
- if (useDeprecatedSynchronousErrorHandling) {
- _parentSubscriber.syncErrorValue = err;
- _parentSubscriber.syncErrorThrown = true;
- }
- else {
- Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err);
- }
- this.unsubscribe();
+ catch (error) {
+ handleUnhandledError(error);
}
}
- };
- SafeSubscriber.prototype.complete = function () {
- var _this = this;
- if (!this.isStopped) {
- var _parentSubscriber = this._parentSubscriber;
- if (this._complete) {
- var wrappedComplete = function () { return _this._complete.call(_this._context); };
- if (!_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {
- this.__tryOrUnsub(wrappedComplete);
- this.unsubscribe();
- }
- else {
- this.__tryOrSetError(_parentSubscriber, wrappedComplete);
- this.unsubscribe();
- }
- }
- else {
- this.unsubscribe();
- }
+ else {
+ handleUnhandledError(err);
}
};
- SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {
- try {
- fn.call(this._context, value);
- }
- catch (err) {
- this.unsubscribe();
- if (_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling) {
- throw err;
+ ConsumerObserver.prototype.complete = function () {
+ var partialObserver = this.partialObserver;
+ if (partialObserver.complete) {
+ try {
+ partialObserver.complete();
}
- else {
- Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err);
+ catch (error) {
+ handleUnhandledError(error);
}
}
};
- SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {
- if (!_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling) {
- throw new Error('bad call');
- }
- try {
- fn.call(this._context, value);
+ return ConsumerObserver;
+}());
+var SafeSubscriber = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(SafeSubscriber, _super);
+ function SafeSubscriber(observerOrNext, error, complete) {
+ var _this = _super.call(this) || this;
+ var partialObserver;
+ if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(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,
+ };
}
- catch (err) {
- if (_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling) {
- parent.syncErrorValue = err;
- parent.syncErrorThrown = true;
- return true;
+ else {
+ var context_1;
+ if (_this && _config__WEBPACK_IMPORTED_MODULE_3__["config"].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 {
- Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err);
- return true;
+ partialObserver = observerOrNext;
}
}
- return false;
- };
- SafeSubscriber.prototype._unsubscribe = function () {
- var _parentSubscriber = this._parentSubscriber;
- this._context = null;
- this._parentSubscriber = null;
- _parentSubscriber.unsubscribe();
- };
+ _this.destination = new ConsumerObserver(partialObserver);
+ return _this;
+ }
return SafeSubscriber;
}(Subscriber));
+function handleUnhandledError(error) {
+ if (_config__WEBPACK_IMPORTED_MODULE_3__["config"].useDeprecatedSynchronousErrorHandling) {
+ Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_8__["captureError"])(error);
+ }
+ else {
+ Object(_util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_4__["reportUnhandledError"])(error);
+ }
+}
+function defaultErrorHandler(err) {
+ throw err;
+}
+function handleStoppedNotification(notification, subscriber) {
+ var onStoppedNotification = _config__WEBPACK_IMPORTED_MODULE_3__["config"].onStoppedNotification;
+ onStoppedNotification && _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_7__["timeoutProvider"].setTimeout(function () { return onStoppedNotification(notification, subscriber); });
+}
+var EMPTY_OBSERVER = {
+ closed: true,
+ next: _util_noop__WEBPACK_IMPORTED_MODULE_5__["noop"],
+ error: defaultErrorHandler,
+ complete: _util_noop__WEBPACK_IMPORTED_MODULE_5__["noop"],
+};
//# sourceMappingURL=Subscriber.js.map
-
/***/ }),
-/* 13 */
+/* 12 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -1444,6 +1799,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArrays", function() { return __spreadArrays; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArray", function() { return __spreadArray; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; });
@@ -1472,11 +1828,13 @@ PERFORMANCE OF THIS SOFTWARE.
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]; };
+ 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 __());
@@ -1558,13 +1916,16 @@ function __generator(thisArg, body) {
}
}
-function __createBinding(o, m, k, k2) {
+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, exports) {
- for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p];
+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) {
@@ -1596,19 +1957,31 @@ function __read(o, n) {
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);
@@ -1645,11 +2018,17 @@ function __makeTemplateObject(cooked, 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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result.default = mod;
+ 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;
}
@@ -1657,357 +2036,386 @@ function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { default: mod };
}
-function __classPrivateFieldGet(receiver, privateMap) {
- if (!privateMap.has(receiver)) {
- throw new TypeError("attempted to get private field on non-instance");
- }
- return privateMap.get(receiver);
+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, privateMap, value) {
- if (!privateMap.has(receiver)) {
- throw new TypeError("attempted to set private field on non-instance");
- }
- privateMap.set(receiver, value);
- return value;
+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;
}
/***/ }),
-/* 14 */
+/* 13 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return isFunction; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-function isFunction(x) {
- return typeof x === 'function';
+function isFunction(value) {
+ return typeof value === 'function';
}
//# sourceMappingURL=isFunction.js.map
-
-/***/ }),
-/* 15 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; });
-/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16);
-/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17);
-/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */
-
-
-var empty = {
- closed: true,
- next: function (value) { },
- error: function (err) {
- if (_config__WEBPACK_IMPORTED_MODULE_0__["config"].useDeprecatedSynchronousErrorHandling) {
- throw err;
- }
- else {
- Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_1__["hostReportError"])(err);
- }
- },
- complete: function () { }
-};
-//# sourceMappingURL=Observer.js.map
-
-
/***/ }),
-/* 16 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return config; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var _enable_super_gross_mode_that_will_cause_bad_things = false;
-var config = {
- Promise: undefined,
- set useDeprecatedSynchronousErrorHandling(value) {
- if (value) {
- var error = /*@__PURE__*/ new Error();
- /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n' + error.stack);
- }
- else if (_enable_super_gross_mode_that_will_cause_bad_things) {
- /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');
- }
- _enable_super_gross_mode_that_will_cause_bad_things = value;
- },
- get useDeprecatedSynchronousErrorHandling() {
- return _enable_super_gross_mode_that_will_cause_bad_things;
- },
-};
-//# sourceMappingURL=config.js.map
-
-
-/***/ }),
-/* 17 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hostReportError", function() { return hostReportError; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-function hostReportError(err) {
- setTimeout(function () { throw err; }, 0);
-}
-//# sourceMappingURL=hostReportError.js.map
-
-
-/***/ }),
-/* 18 */
+/* 14 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return Subscription; });
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19);
-/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
-/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
-/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
-/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EMPTY_SUBSCRIPTION", function() { return EMPTY_SUBSCRIPTION; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSubscription", function() { return isSubscription; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
+/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
+/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17);
-var Subscription = /*@__PURE__*/ (function () {
- function Subscription(unsubscribe) {
+var Subscription = (function () {
+ function Subscription(initialTeardown) {
+ this.initialTeardown = initialTeardown;
this.closed = false;
- this._parentOrParents = null;
- this._subscriptions = null;
- if (unsubscribe) {
- this._ctorUnsubscribe = true;
- this._unsubscribe = unsubscribe;
- }
+ this._parentage = null;
+ this._finalizers = null;
}
Subscription.prototype.unsubscribe = function () {
+ var e_1, _a, e_2, _b;
var errors;
- if (this.closed) {
- return;
- }
- var _a = this, _parentOrParents = _a._parentOrParents, _ctorUnsubscribe = _a._ctorUnsubscribe, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;
- this.closed = true;
- this._parentOrParents = null;
- this._subscriptions = null;
- if (_parentOrParents instanceof Subscription) {
- _parentOrParents.remove(this);
- }
- else if (_parentOrParents !== null) {
- for (var index = 0; index < _parentOrParents.length; ++index) {
- var parent_1 = _parentOrParents[index];
- parent_1.remove(this);
- }
- }
- if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(_unsubscribe)) {
- if (_ctorUnsubscribe) {
- this._unsubscribe = undefined;
- }
- try {
- _unsubscribe.call(this);
- }
- catch (e) {
- errors = e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"] ? flattenUnsubscriptionErrors(e.errors) : [e];
- }
- }
- if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(_subscriptions)) {
- var index = -1;
- var len = _subscriptions.length;
- while (++index < len) {
- var sub = _subscriptions[index];
- if (Object(_util_isObject__WEBPACK_IMPORTED_MODULE_1__["isObject"])(sub)) {
+ if (!this.closed) {
+ this.closed = true;
+ var _parentage = this._parentage;
+ if (_parentage) {
+ this._parentage = null;
+ if (Array.isArray(_parentage)) {
try {
- sub.unsubscribe();
- }
- catch (e) {
- errors = errors || [];
- if (e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"]) {
- errors = errors.concat(flattenUnsubscriptionErrors(e.errors));
+ for (var _parentage_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(_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);
}
- else {
- errors.push(e);
+ }
+ 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);
+ }
}
- }
- if (errors) {
- throw new _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"](errors);
- }
- };
- Subscription.prototype.add = function (teardown) {
- var subscription = teardown;
- if (!teardown) {
- return Subscription.EMPTY;
- }
- switch (typeof teardown) {
- case 'function':
- subscription = new Subscription(teardown);
- case 'object':
- if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {
- return subscription;
+ var initialFinalizer = this.initialTeardown;
+ if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(initialFinalizer)) {
+ try {
+ initialFinalizer();
+ }
+ catch (e) {
+ errors = e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_2__["UnsubscriptionError"] ? e.errors : [e];
}
- else if (this.closed) {
- subscription.unsubscribe();
- return subscription;
+ }
+ var _finalizers = this._finalizers;
+ if (_finalizers) {
+ this._finalizers = null;
+ try {
+ for (var _finalizers_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(_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"]) {
+ errors = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(errors)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(err.errors));
+ }
+ else {
+ errors.push(err);
+ }
+ }
+ }
}
- else if (!(subscription instanceof Subscription)) {
- var tmp = subscription;
- subscription = new Subscription();
- subscription._subscriptions = [tmp];
+ 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; }
}
- break;
- default: {
- throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');
}
- }
- var _parentOrParents = subscription._parentOrParents;
- if (_parentOrParents === null) {
- subscription._parentOrParents = this;
- }
- else if (_parentOrParents instanceof Subscription) {
- if (_parentOrParents === this) {
- return subscription;
+ if (errors) {
+ throw new _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_2__["UnsubscriptionError"](errors);
}
- subscription._parentOrParents = [_parentOrParents, this];
}
- else if (_parentOrParents.indexOf(this) === -1) {
- _parentOrParents.push(this);
- }
- else {
- return subscription;
+ };
+ 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);
+ }
}
- var subscriptions = this._subscriptions;
- if (subscriptions === null) {
- this._subscriptions = [subscription];
+ };
+ 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 {
- subscriptions.push(subscription);
+ else if (Array.isArray(_parentage)) {
+ Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_3__["arrRemove"])(_parentage, parent);
}
- return subscription;
};
- Subscription.prototype.remove = function (subscription) {
- var subscriptions = this._subscriptions;
- if (subscriptions) {
- var subscriptionIndex = subscriptions.indexOf(subscription);
- if (subscriptionIndex !== -1) {
- subscriptions.splice(subscriptionIndex, 1);
- }
+ Subscription.prototype.remove = function (teardown) {
+ var _finalizers = this._finalizers;
+ _finalizers && Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_3__["arrRemove"])(_finalizers, teardown);
+ if (teardown instanceof Subscription) {
+ teardown._removeParent(this);
}
};
- Subscription.EMPTY = (function (empty) {
+ Subscription.EMPTY = (function () {
+ var empty = new Subscription();
empty.closed = true;
return empty;
- }(new Subscription()));
+ })();
return Subscription;
}());
-function flattenUnsubscriptionErrors(errors) {
- return errors.reduce(function (errs, err) { return errs.concat((err instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"]) ? err.errors : err); }, []);
+var EMPTY_SUBSCRIPTION = Subscription.EMPTY;
+function isSubscription(value) {
+ return (value instanceof Subscription ||
+ (value && 'closed' in value && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(value.remove) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(value.add) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(value.unsubscribe)));
+}
+function execFinalizer(finalizer) {
+ if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(finalizer)) {
+ finalizer();
+ }
+ else {
+ finalizer.unsubscribe();
+ }
}
//# sourceMappingURL=Subscription.js.map
-
/***/ }),
-/* 19 */
+/* 15 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return isArray; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })();
-//# sourceMappingURL=isArray.js.map
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return UnsubscriptionError; });
+/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16);
+
+var UnsubscriptionError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__["createErrorClass"])(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
/***/ }),
-/* 20 */
+/* 16 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-function isObject(x) {
- return x !== null && typeof x === 'object';
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createErrorClass", 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=isObject.js.map
-
+//# sourceMappingURL=createErrorClass.js.map
/***/ }),
-/* 21 */
+/* 17 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return UnsubscriptionError; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var UnsubscriptionErrorImpl = /*@__PURE__*/ (function () {
- function UnsubscriptionErrorImpl(errors) {
- Error.call(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;
- return this;
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "arrRemove", function() { return arrRemove; });
+function arrRemove(arr, item) {
+ if (arr) {
+ var index = arr.indexOf(item);
+ 0 <= index && arr.splice(index, 1);
}
- UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);
- return UnsubscriptionErrorImpl;
-})();
-var UnsubscriptionError = UnsubscriptionErrorImpl;
-//# sourceMappingURL=UnsubscriptionError.js.map
+}
+//# sourceMappingURL=arrRemove.js.map
+
+/***/ }),
+/* 18 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return config; });
+var config = {
+ onUnhandledError: null,
+ onStoppedNotification: null,
+ Promise: undefined,
+ useDeprecatedSynchronousErrorHandling: false,
+ useDeprecatedNextContext: false,
+};
+//# sourceMappingURL=config.js.map
/***/ }),
-/* 22 */
+/* 19 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rxSubscriber", function() { return rxSubscriber; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$$rxSubscriber", function() { return $$rxSubscriber; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var rxSubscriber = /*@__PURE__*/ (function () {
- return typeof Symbol === 'function'
- ? /*@__PURE__*/ Symbol('rxSubscriber')
- : '@@rxSubscriber_' + /*@__PURE__*/ Math.random();
-})();
-var $$rxSubscriber = rxSubscriber;
-//# sourceMappingURL=rxSubscriber.js.map
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reportUnhandledError", function() { return reportUnhandledError; });
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
+/* harmony import */ var _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
+function reportUnhandledError(err) {
+ _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_1__["timeoutProvider"].setTimeout(function () {
+ var onUnhandledError = _config__WEBPACK_IMPORTED_MODULE_0__["config"].onUnhandledError;
+ if (onUnhandledError) {
+ onUnhandledError(err);
+ }
+ else {
+ throw err;
+ }
+ });
+}
+//# sourceMappingURL=reportUnhandledError.js.map
+
/***/ }),
-/* 23 */
+/* 20 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toSubscriber", function() { return toSubscriber; });
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
-/* harmony import */ var _symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22);
-/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
-/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeoutProvider", function() { return timeoutProvider; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+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"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(args)));
+ }
+ return setTimeout.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(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
+/***/ }),
+/* 21 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-function toSubscriber(nextOrObserver, error, complete) {
- if (nextOrObserver) {
- if (nextOrObserver instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"]) {
- return nextOrObserver;
- }
- if (nextOrObserver[_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__["rxSubscriber"]]) {
- return nextOrObserver[_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__["rxSubscriber"]]();
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return noop; });
+function noop() { }
+//# sourceMappingURL=noop.js.map
+
+/***/ }),
+/* 22 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "COMPLETE_NOTIFICATION", function() { return COMPLETE_NOTIFICATION; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "errorNotification", function() { return errorNotification; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nextNotification", function() { return nextNotification; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createNotification", function() { return 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
+
+/***/ }),
+/* 23 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "errorContext", function() { return errorContext; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "captureError", function() { return captureError; });
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
+
+var context = null;
+function errorContext(cb) {
+ if (_config__WEBPACK_IMPORTED_MODULE_0__["config"].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;
+ }
}
}
- if (!nextOrObserver && !error && !complete) {
- return new _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"](_Observer__WEBPACK_IMPORTED_MODULE_2__["empty"]);
+ else {
+ cb();
}
- return new _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"](nextOrObserver, error, complete);
}
-//# sourceMappingURL=toSubscriber.js.map
-
+function captureError(err) {
+ if (_config__WEBPACK_IMPORTED_MODULE_0__["config"].useDeprecatedSynchronousErrorHandling && context) {
+ context.errorThrown = true;
+ context.error = err;
+ }
+}
+//# sourceMappingURL=errorContext.js.map
/***/ }),
/* 24 */
@@ -2016,11 +2424,9 @@ function toSubscriber(nextOrObserver, error, complete) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return observable; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var observable = /*@__PURE__*/ (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })();
+var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();
//# sourceMappingURL=observable.js.map
-
/***/ }),
/* 25 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -2030,7 +2436,6 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return pipe; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipeFromArray", function() { return pipeFromArray; });
/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26);
-/** PURE_IMPORTS_START _identity PURE_IMPORTS_END */
function pipe() {
var fns = [];
@@ -2052,7 +2457,6 @@ function pipeFromArray(fns) {
}
//# sourceMappingURL=pipe.js.map
-
/***/ }),
/* 26 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -2060,13 +2464,11 @@ function pipeFromArray(fns) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return identity; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
function identity(x) {
return x;
}
//# sourceMappingURL=identity.js.map
-
/***/ }),
/* 27 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -2074,28 +2476,30 @@ function identity(x) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return ConnectableObservable; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "connectableObservableDescriptor", function() { return connectableObservableDescriptor; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28);
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
-/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(31);
-/** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
+/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(28);
+/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29);
-var ConnectableObservable = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ConnectableObservable, _super);
+var ConnectableObservable = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(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._isComplete = false;
+ _this._connection = null;
+ if (Object(_util_lift__WEBPACK_IMPORTED_MODULE_5__["hasLift"])(source)) {
+ _this.lift = source.lift;
+ }
return _this;
}
ConnectableObservable.prototype._subscribe = function (subscriber) {
@@ -2108,245 +2512,415 @@ var ConnectableObservable = /*@__PURE__*/ (function (_super) {
}
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) {
- this._isComplete = false;
- connection = this._connection = new _Subscription__WEBPACK_IMPORTED_MODULE_4__["Subscription"]();
- connection.add(this.source
- .subscribe(new ConnectableSubscriber(this.getSubject(), this)));
+ connection = this._connection = new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"]();
+ var subject_1 = this.getSubject();
+ connection.add(this.source.subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__["createOperatorSubscriber"])(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_4__["Subscription"].EMPTY;
+ connection = _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"].EMPTY;
}
}
return connection;
};
ConnectableObservable.prototype.refCount = function () {
- return Object(_operators_refCount__WEBPACK_IMPORTED_MODULE_5__["refCount"])()(this);
+ return Object(_operators_refCount__WEBPACK_IMPORTED_MODULE_3__["refCount"])()(this);
};
return ConnectableObservable;
-}(_Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"]));
+}(_Observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]));
-var connectableObservableDescriptor = /*@__PURE__*/ (function () {
- var connectableProto = ConnectableObservable.prototype;
- return {
- operator: { value: null },
- _refCount: { value: 0, writable: true },
- _subject: { value: null, writable: true },
- _connection: { value: null, writable: true },
- _subscribe: { value: connectableProto._subscribe },
- _isComplete: { value: connectableProto._isComplete, writable: true },
- getSubject: { value: connectableProto.getSubject },
- connect: { value: connectableProto.connect },
- refCount: { value: connectableProto.refCount }
- };
-})();
-var ConnectableSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ConnectableSubscriber, _super);
- function ConnectableSubscriber(destination, connectable) {
- var _this = _super.call(this, destination) || this;
- _this.connectable = connectable;
- return _this;
- }
- ConnectableSubscriber.prototype._error = function (err) {
- this._unsubscribe();
- _super.prototype._error.call(this, err);
- };
- ConnectableSubscriber.prototype._complete = function () {
- this.connectable._isComplete = true;
- this._unsubscribe();
- _super.prototype._complete.call(this);
- };
- ConnectableSubscriber.prototype._unsubscribe = function () {
- var connectable = this.connectable;
- if (connectable) {
- this.connectable = null;
- var connection = connectable._connection;
- connectable._refCount = 0;
- connectable._subject = null;
- connectable._connection = null;
- if (connection) {
- connection.unsubscribe();
+//# sourceMappingURL=ConnectableObservable.js.map
+
+/***/ }),
+/* 28 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return refCount; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
+
+
+function refCount() {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var connection = null;
+ source._refCount++;
+ var refCounter = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, undefined, undefined, undefined, function () {
+ if (!source || source._refCount <= 0 || 0 < --source._refCount) {
+ connection = null;
+ return;
}
- }
- };
- return ConnectableSubscriber;
-}(_Subject__WEBPACK_IMPORTED_MODULE_1__["SubjectSubscriber"]));
-var RefCountOperator = /*@__PURE__*/ (function () {
- function RefCountOperator(connectable) {
- this.connectable = connectable;
- }
- RefCountOperator.prototype.call = function (subscriber, source) {
- var connectable = this.connectable;
- connectable._refCount++;
- var refCounter = new RefCountSubscriber(subscriber, connectable);
- var subscription = source.subscribe(refCounter);
+ var sharedConnection = source._connection;
+ var conn = connection;
+ connection = null;
+ if (sharedConnection && (!conn || sharedConnection === conn)) {
+ sharedConnection.unsubscribe();
+ }
+ subscriber.unsubscribe();
+ });
+ source.subscribe(refCounter);
if (!refCounter.closed) {
- refCounter.connection = connectable.connect();
+ connection = source.connect();
}
- return subscription;
+ });
+}
+//# sourceMappingURL=refCount.js.map
+
+/***/ }),
+/* 29 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasLift", function() { return hasLift; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "operate", function() { return operate; });
+/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
+
+function hasLift(source) {
+ return Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__["isFunction"])(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');
};
- return RefCountOperator;
-}());
-var RefCountSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RefCountSubscriber, _super);
- function RefCountSubscriber(destination, connectable) {
+}
+//# sourceMappingURL=lift.js.map
+
+/***/ }),
+/* 30 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createOperatorSubscriber", function() { return createOperatorSubscriber; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OperatorSubscriber", function() { return OperatorSubscriber; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);
+
+
+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"])(OperatorSubscriber, _super);
+ function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {
var _this = _super.call(this, destination) || this;
- _this.connectable = connectable;
+ _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;
}
- RefCountSubscriber.prototype._unsubscribe = function () {
- var connectable = this.connectable;
- if (!connectable) {
- this.connection = null;
- return;
- }
- this.connectable = null;
- var refCount = connectable._refCount;
- if (refCount <= 0) {
- this.connection = null;
- return;
- }
- connectable._refCount = refCount - 1;
- if (refCount > 1) {
- this.connection = null;
- return;
- }
- var connection = this.connection;
- var sharedConnection = connectable._connection;
- this.connection = null;
- if (sharedConnection && (!connection || sharedConnection === connection)) {
- sharedConnection.unsubscribe();
+ 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 RefCountSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"]));
-//# sourceMappingURL=ConnectableObservable.js.map
+ return OperatorSubscriber;
+}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
+//# sourceMappingURL=OperatorSubscriber.js.map
/***/ }),
-/* 28 */
+/* 31 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrames", function() { return animationFrames; });
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
+/* harmony import */ var _scheduler_performanceTimestampProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(32);
+/* harmony import */ var _scheduler_animationFrameProvider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(33);
+
+
+
+
+function animationFrames(timestampProvider) {
+ return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;
+}
+function animationFramesFactory(timestampProvider) {
+ var schedule = _scheduler_animationFrameProvider__WEBPACK_IMPORTED_MODULE_3__["animationFrameProvider"].schedule;
+ return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
+ var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"]();
+ var provider = timestampProvider || _scheduler_performanceTimestampProvider__WEBPACK_IMPORTED_MODULE_2__["performanceTimestampProvider"];
+ 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
+
+/***/ }),
+/* 32 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "performanceTimestampProvider", function() { return performanceTimestampProvider; });
+var performanceTimestampProvider = {
+ now: function () {
+ return (performanceTimestampProvider.delegate || performance).now();
+ },
+ delegate: undefined,
+};
+//# sourceMappingURL=performanceTimestampProvider.js.map
+
+/***/ }),
+/* 33 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrameProvider", function() { return animationFrameProvider; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
+
+
+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"](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"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(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"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(args)));
+ },
+ delegate: undefined,
+};
+//# sourceMappingURL=animationFrameProvider.js.map
+
+/***/ }),
+/* 34 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscriber", function() { return SubjectSubscriber; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return Subject; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnonymousSubject", function() { return AnonymousSubject; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
-/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29);
-/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(30);
-/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(22);
-/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
+/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(35);
+/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17);
+/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(23);
-
-var SubjectSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubjectSubscriber, _super);
- function SubjectSubscriber(destination) {
- var _this = _super.call(this, destination) || this;
- _this.destination = destination;
- return _this;
- }
- return SubjectSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_2__["Subscriber"]));
-
-var Subject = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](Subject, _super);
+var Subject = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(Subject, _super);
function Subject() {
var _this = _super.call(this) || this;
- _this.observers = [];
_this.closed = false;
+ _this.currentObservers = null;
+ _this.observers = [];
_this.isStopped = false;
_this.hasError = false;
_this.thrownError = null;
return _this;
}
- Subject.prototype[_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__["rxSubscriber"]] = function () {
- return new SubjectSubscriber(this);
- };
Subject.prototype.lift = function (operator) {
var subject = new AnonymousSubject(this, this);
subject.operator = operator;
return subject;
};
- Subject.prototype.next = function (value) {
+ Subject.prototype._throwIfClosed = function () {
if (this.closed) {
- throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"]();
+ throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__["ObjectUnsubscribedError"]();
}
- if (!this.isStopped) {
- var observers = this.observers;
- var len = observers.length;
- var copy = observers.slice();
- for (var i = 0; i < len; i++) {
- copy[i].next(value);
+ };
+ Subject.prototype.next = function (value) {
+ var _this = this;
+ Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_5__["errorContext"])(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"])(_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) {
- if (this.closed) {
- throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"]();
- }
- this.hasError = true;
- this.thrownError = err;
- this.isStopped = true;
- var observers = this.observers;
- var len = observers.length;
- var copy = observers.slice();
- for (var i = 0; i < len; i++) {
- copy[i].error(err);
- }
- this.observers.length = 0;
+ var _this = this;
+ Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_5__["errorContext"])(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 () {
- if (this.closed) {
- throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"]();
- }
- this.isStopped = true;
- var observers = this.observers;
- var len = observers.length;
- var copy = observers.slice();
- for (var i = 0; i < len; i++) {
- copy[i].complete();
- }
- this.observers.length = 0;
+ var _this = this;
+ Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_5__["errorContext"])(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 = true;
- this.closed = true;
- this.observers = null;
+ 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) {
- if (this.closed) {
- throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"]();
- }
- else {
- return _super.prototype._trySubscribe.call(this, subscriber);
- }
+ this._throwIfClosed();
+ return _super.prototype._trySubscribe.call(this, subscriber);
};
Subject.prototype._subscribe = function (subscriber) {
- if (this.closed) {
- throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"]();
- }
- else if (this.hasError) {
- subscriber.error(this.thrownError);
- return _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY;
+ 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"];
+ }
+ this.currentObservers = null;
+ observers.push(subscriber);
+ return new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"](function () {
+ _this.currentObservers = null;
+ Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_4__["arrRemove"])(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 (this.isStopped) {
+ else if (isStopped) {
subscriber.complete();
- return _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY;
- }
- else {
- this.observers.push(subscriber);
- return new _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__["SubjectSubscription"](this, subscriber);
}
};
Subject.prototype.asObservable = function () {
@@ -2360,8 +2934,8 @@ var Subject = /*@__PURE__*/ (function (_super) {
return Subject;
}(_Observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]));
-var AnonymousSubject = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AnonymousSubject, _super);
+var AnonymousSubject = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(AnonymousSubject, _super);
function AnonymousSubject(destination, source) {
var _this = _super.call(this) || this;
_this.destination = destination;
@@ -2369,658 +2943,312 @@ var AnonymousSubject = /*@__PURE__*/ (function (_super) {
return _this;
}
AnonymousSubject.prototype.next = function (value) {
- var destination = this.destination;
- if (destination && destination.next) {
- destination.next(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 destination = this.destination;
- if (destination && destination.error) {
- this.destination.error(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 destination = this.destination;
- if (destination && destination.complete) {
- this.destination.complete();
- }
+ 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 source = this.source;
- if (source) {
- return this.source.subscribe(subscriber);
- }
- else {
- return _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY;
- }
+ 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"];
};
return AnonymousSubject;
}(Subject));
//# sourceMappingURL=Subject.js.map
-
/***/ }),
-/* 29 */
+/* 35 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return ObjectUnsubscribedError; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var ObjectUnsubscribedErrorImpl = /*@__PURE__*/ (function () {
- function ObjectUnsubscribedErrorImpl() {
- Error.call(this);
- this.message = 'object unsubscribed';
+/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16);
+
+var ObjectUnsubscribedError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__["createErrorClass"])(function (_super) {
+ return function ObjectUnsubscribedErrorImpl() {
+ _super(this);
this.name = 'ObjectUnsubscribedError';
- return this;
- }
- ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);
- return ObjectUnsubscribedErrorImpl;
-})();
-var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;
+ this.message = 'object unsubscribed';
+ };
+});
//# sourceMappingURL=ObjectUnsubscribedError.js.map
-
/***/ }),
-/* 30 */
+/* 36 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscription", function() { return SubjectSubscription; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
-/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return BehaviorSubject; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34);
-var SubjectSubscription = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubjectSubscription, _super);
- function SubjectSubscription(subject, subscriber) {
+var BehaviorSubject = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(BehaviorSubject, _super);
+ function BehaviorSubject(_value) {
var _this = _super.call(this) || this;
- _this.subject = subject;
- _this.subscriber = subscriber;
- _this.closed = false;
+ _this._value = _value;
return _this;
}
- SubjectSubscription.prototype.unsubscribe = function () {
- if (this.closed) {
- return;
- }
- this.closed = true;
- var subject = this.subject;
- var observers = subject.observers;
- this.subject = null;
- if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {
- return;
- }
- var subscriberIndex = observers.indexOf(this.subscriber);
- if (subscriberIndex !== -1) {
- observers.splice(subscriberIndex, 1);
+ 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;
};
- return SubjectSubscription;
-}(_Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"]));
-
-//# sourceMappingURL=SubjectSubscription.js.map
+ BehaviorSubject.prototype.next = function (value) {
+ _super.prototype.next.call(this, (this._value = value));
+ };
+ return BehaviorSubject;
+}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]));
+//# sourceMappingURL=BehaviorSubject.js.map
/***/ }),
-/* 31 */
+/* 37 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return refCount; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return ReplaySubject; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34);
+/* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(38);
-function refCount() {
- return function refCountOperatorFunction(source) {
- return source.lift(new RefCountOperator(source));
- };
-}
-var RefCountOperator = /*@__PURE__*/ (function () {
- function RefCountOperator(connectable) {
- this.connectable = connectable;
+
+var ReplaySubject = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(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"]; }
+ 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;
}
- RefCountOperator.prototype.call = function (subscriber, source) {
- var connectable = this.connectable;
- connectable._refCount++;
- var refCounter = new RefCountSubscriber(subscriber, connectable);
- var subscription = source.subscribe(refCounter);
- if (!refCounter.closed) {
- refCounter.connection = connectable.connect();
+ 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;
};
- return RefCountOperator;
-}());
-var RefCountSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RefCountSubscriber, _super);
- function RefCountSubscriber(destination, connectable) {
- var _this = _super.call(this, destination) || this;
- _this.connectable = connectable;
- return _this;
- }
- RefCountSubscriber.prototype._unsubscribe = function () {
- var connectable = this.connectable;
- if (!connectable) {
- this.connection = null;
- return;
- }
- this.connectable = null;
- var refCount = connectable._refCount;
- if (refCount <= 0) {
- this.connection = null;
- return;
- }
- connectable._refCount = refCount - 1;
- if (refCount > 1) {
- this.connection = null;
- return;
- }
- var connection = this.connection;
- var sharedConnection = connectable._connection;
- this.connection = null;
- if (sharedConnection && (!connection || sharedConnection === connection)) {
- sharedConnection.unsubscribe();
+ 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 RefCountSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=refCount.js.map
+ return ReplaySubject;
+}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]));
+//# sourceMappingURL=ReplaySubject.js.map
/***/ }),
-/* 32 */
+/* 38 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return groupBy; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return GroupedObservable; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18);
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(28);
-/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dateTimestampProvider", function() { return dateTimestampProvider; });
+var dateTimestampProvider = {
+ now: function () {
+ return (dateTimestampProvider.delegate || Date).now();
+ },
+ delegate: undefined,
+};
+//# sourceMappingURL=dateTimestampProvider.js.map
+/***/ }),
+/* 39 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return AsyncSubject; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34);
-function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) {
- return function (source) {
- return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));
- };
-}
-var GroupByOperator = /*@__PURE__*/ (function () {
- function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) {
- this.keySelector = keySelector;
- this.elementSelector = elementSelector;
- this.durationSelector = durationSelector;
- this.subjectSelector = subjectSelector;
- }
- GroupByOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector));
- };
- return GroupByOperator;
-}());
-var GroupBySubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](GroupBySubscriber, _super);
- function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) {
- var _this = _super.call(this, destination) || this;
- _this.keySelector = keySelector;
- _this.elementSelector = elementSelector;
- _this.durationSelector = durationSelector;
- _this.subjectSelector = subjectSelector;
- _this.groups = null;
- _this.attemptedToUnsubscribe = false;
- _this.count = 0;
+var AsyncSubject = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(AsyncSubject, _super);
+ function AsyncSubject() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this._value = null;
+ _this._hasValue = false;
+ _this._isComplete = false;
return _this;
}
- GroupBySubscriber.prototype._next = function (value) {
- var key;
- try {
- key = this.keySelector(value);
- }
- catch (err) {
- this.error(err);
- return;
- }
- this._group(value, key);
- };
- GroupBySubscriber.prototype._group = function (value, key) {
- var groups = this.groups;
- if (!groups) {
- groups = this.groups = new Map();
- }
- var group = groups.get(key);
- var element;
- if (this.elementSelector) {
- try {
- element = this.elementSelector(value);
- }
- catch (err) {
- this.error(err);
- }
- }
- else {
- element = value;
- }
- if (!group) {
- group = (this.subjectSelector ? this.subjectSelector() : new _Subject__WEBPACK_IMPORTED_MODULE_4__["Subject"]());
- groups.set(key, group);
- var groupedObservable = new GroupedObservable(key, group, this);
- this.destination.next(groupedObservable);
- if (this.durationSelector) {
- var duration = void 0;
- try {
- duration = this.durationSelector(new GroupedObservable(key, group));
- }
- catch (err) {
- this.error(err);
- return;
- }
- this.add(duration.subscribe(new GroupDurationSubscriber(key, group, 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);
}
- if (!group.closed) {
- group.next(element);
- }
- };
- GroupBySubscriber.prototype._error = function (err) {
- var groups = this.groups;
- if (groups) {
- groups.forEach(function (group, key) {
- group.error(err);
- });
- groups.clear();
- }
- this.destination.error(err);
- };
- GroupBySubscriber.prototype._complete = function () {
- var groups = this.groups;
- if (groups) {
- groups.forEach(function (group, key) {
- group.complete();
- });
- groups.clear();
- }
- this.destination.complete();
- };
- GroupBySubscriber.prototype.removeGroup = function (key) {
- this.groups.delete(key);
- };
- GroupBySubscriber.prototype.unsubscribe = function () {
- if (!this.closed) {
- this.attemptedToUnsubscribe = true;
- if (this.count === 0) {
- _super.prototype.unsubscribe.call(this);
- }
+ else if (isStopped || _isComplete) {
+ _hasValue && subscriber.next(_value);
+ subscriber.complete();
}
};
- return GroupBySubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-var GroupDurationSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](GroupDurationSubscriber, _super);
- function GroupDurationSubscriber(key, group, parent) {
- var _this = _super.call(this, group) || this;
- _this.key = key;
- _this.group = group;
- _this.parent = parent;
- return _this;
- }
- GroupDurationSubscriber.prototype._next = function (value) {
- this.complete();
- };
- GroupDurationSubscriber.prototype._unsubscribe = function () {
- var _a = this, parent = _a.parent, key = _a.key;
- this.key = this.parent = null;
- if (parent) {
- parent.removeGroup(key);
+ AsyncSubject.prototype.next = function (value) {
+ if (!this.isStopped) {
+ this._value = value;
+ this._hasValue = true;
}
};
- return GroupDurationSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-var GroupedObservable = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](GroupedObservable, _super);
- function GroupedObservable(key, groupSubject, refCountSubscription) {
- var _this = _super.call(this) || this;
- _this.key = key;
- _this.groupSubject = groupSubject;
- _this.refCountSubscription = refCountSubscription;
- return _this;
- }
- GroupedObservable.prototype._subscribe = function (subscriber) {
- var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"]();
- var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject;
- if (refCountSubscription && !refCountSubscription.closed) {
- subscription.add(new InnerRefCountSubscription(refCountSubscription));
+ 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);
}
- subscription.add(groupSubject.subscribe(subscriber));
- return subscription;
};
- return GroupedObservable;
-}(_Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"]));
+ return AsyncSubject;
+}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]));
-var InnerRefCountSubscription = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](InnerRefCountSubscription, _super);
- function InnerRefCountSubscription(parent) {
- var _this = _super.call(this) || this;
- _this.parent = parent;
- parent.count++;
- return _this;
- }
- InnerRefCountSubscription.prototype.unsubscribe = function () {
- var parent = this.parent;
- if (!parent.closed && !this.closed) {
- _super.prototype.unsubscribe.call(this);
- parent.count -= 1;
- if (parent.count === 0 && parent.attemptedToUnsubscribe) {
- parent.unsubscribe();
- }
- }
- };
- return InnerRefCountSubscription;
-}(_Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"]));
-//# sourceMappingURL=groupBy.js.map
+//# sourceMappingURL=AsyncSubject.js.map
+
+/***/ }),
+/* 40 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return asapScheduler; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return asap; });
+/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41);
+/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47);
+
+
+var asapScheduler = new _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__["AsapScheduler"](_AsapAction__WEBPACK_IMPORTED_MODULE_0__["AsapAction"]);
+var asap = asapScheduler;
+//# sourceMappingURL=asap.js.map
/***/ }),
-/* 33 */
+/* 41 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return BehaviorSubject; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28);
-/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
-/** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapAction", function() { return AsapAction; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
+/* harmony import */ var _immediateProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(45);
-var BehaviorSubject = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BehaviorSubject, _super);
- function BehaviorSubject(_value) {
- var _this = _super.call(this) || this;
- _this._value = _value;
+var AsapAction = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(AsapAction, _super);
+ function AsapAction(scheduler, work) {
+ var _this = _super.call(this, scheduler, work) || this;
+ _this.scheduler = scheduler;
+ _this.work = work;
return _this;
}
- Object.defineProperty(BehaviorSubject.prototype, "value", {
- get: function () {
- return this.getValue();
- },
- enumerable: true,
- configurable: true
- });
- BehaviorSubject.prototype._subscribe = function (subscriber) {
- var subscription = _super.prototype._subscribe.call(this, subscriber);
- if (subscription && !subscription.closed) {
- subscriber.next(this._value);
+ 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);
}
- return subscription;
+ scheduler.actions.push(this);
+ return scheduler._scheduled || (scheduler._scheduled = _immediateProvider__WEBPACK_IMPORTED_MODULE_2__["immediateProvider"].setImmediate(scheduler.flush.bind(scheduler, undefined)));
};
- BehaviorSubject.prototype.getValue = function () {
- if (this.hasError) {
- throw this.thrownError;
- }
- else if (this.closed) {
- throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__["ObjectUnsubscribedError"]();
+ 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);
}
- else {
- return this._value;
+ if (!scheduler.actions.some(function (action) { return action.id === id; })) {
+ _immediateProvider__WEBPACK_IMPORTED_MODULE_2__["immediateProvider"].clearImmediate(id);
+ scheduler._scheduled = undefined;
}
+ return undefined;
};
- BehaviorSubject.prototype.next = function (value) {
- _super.prototype.next.call(this, this._value = value);
- };
- return BehaviorSubject;
-}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]));
-
-//# sourceMappingURL=BehaviorSubject.js.map
+ return AsapAction;
+}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__["AsyncAction"]));
+//# sourceMappingURL=AsapAction.js.map
/***/ }),
-/* 34 */
+/* 42 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return ReplaySubject; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28);
-/* harmony import */ var _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(35);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
-/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
-/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29);
-/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(30);
-/** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */
-
-
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncAction", function() { return AsyncAction; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43);
+/* harmony import */ var _intervalProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
+/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17);
-var ReplaySubject = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ReplaySubject, _super);
- function ReplaySubject(bufferSize, windowTime, scheduler) {
- if (bufferSize === void 0) {
- bufferSize = Number.POSITIVE_INFINITY;
- }
- if (windowTime === void 0) {
- windowTime = Number.POSITIVE_INFINITY;
- }
- var _this = _super.call(this) || this;
+var AsyncAction = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(AsyncAction, _super);
+ function AsyncAction(scheduler, work) {
+ var _this = _super.call(this, scheduler, work) || this;
_this.scheduler = scheduler;
- _this._events = [];
- _this._infiniteTimeWindow = false;
- _this._bufferSize = bufferSize < 1 ? 1 : bufferSize;
- _this._windowTime = windowTime < 1 ? 1 : windowTime;
- if (windowTime === Number.POSITIVE_INFINITY) {
- _this._infiniteTimeWindow = true;
- _this.next = _this.nextInfiniteTimeWindow;
- }
- else {
- _this.next = _this.nextTimeWindow;
- }
+ _this.work = work;
+ _this.pending = false;
return _this;
}
- ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) {
- if (!this.isStopped) {
- var _events = this._events;
- _events.push(value);
- if (_events.length > this._bufferSize) {
- _events.shift();
- }
- }
- _super.prototype.next.call(this, value);
- };
- ReplaySubject.prototype.nextTimeWindow = function (value) {
- if (!this.isStopped) {
- this._events.push(new ReplayEvent(this._getNow(), value));
- this._trimBufferThenGetEvents();
- }
- _super.prototype.next.call(this, value);
- };
- ReplaySubject.prototype._subscribe = function (subscriber) {
- var _infiniteTimeWindow = this._infiniteTimeWindow;
- var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();
- var scheduler = this.scheduler;
- var len = _events.length;
- var subscription;
- if (this.closed) {
- throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__["ObjectUnsubscribedError"]();
- }
- else if (this.isStopped || this.hasError) {
- subscription = _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY;
- }
- else {
- this.observers.push(subscriber);
- subscription = new _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__["SubjectSubscription"](this, subscriber);
- }
- if (scheduler) {
- subscriber.add(subscriber = new _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__["ObserveOnSubscriber"](subscriber, scheduler));
- }
- if (_infiniteTimeWindow) {
- for (var i = 0; i < len && !subscriber.closed; i++) {
- subscriber.next(_events[i]);
- }
- }
- else {
- for (var i = 0; i < len && !subscriber.closed; i++) {
- subscriber.next(_events[i].value);
- }
- }
- if (this.hasError) {
- subscriber.error(this.thrownError);
- }
- else if (this.isStopped) {
- subscriber.complete();
- }
- return subscription;
- };
- ReplaySubject.prototype._getNow = function () {
- return (this.scheduler || _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__["queue"]).now();
- };
- ReplaySubject.prototype._trimBufferThenGetEvents = function () {
- var now = this._getNow();
- var _bufferSize = this._bufferSize;
- var _windowTime = this._windowTime;
- var _events = this._events;
- var eventsCount = _events.length;
- var spliceCount = 0;
- while (spliceCount < eventsCount) {
- if ((now - _events[spliceCount].time) < _windowTime) {
- break;
- }
- spliceCount++;
- }
- if (eventsCount > _bufferSize) {
- spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);
- }
- if (spliceCount > 0) {
- _events.splice(0, spliceCount);
- }
- return _events;
- };
- return ReplaySubject;
-}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]));
-
-var ReplayEvent = /*@__PURE__*/ (function () {
- function ReplayEvent(time, value) {
- this.time = time;
- this.value = value;
- }
- return ReplayEvent;
-}());
-//# sourceMappingURL=ReplaySubject.js.map
-
-
-/***/ }),
-/* 35 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return queueScheduler; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return queue; });
-/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
-/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39);
-/** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */
-
-
-var queueScheduler = /*@__PURE__*/ new _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__["QueueScheduler"](_QueueAction__WEBPACK_IMPORTED_MODULE_0__["QueueAction"]);
-var queue = queueScheduler;
-//# sourceMappingURL=queue.js.map
-
-
-/***/ }),
-/* 36 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueAction", function() { return QueueAction; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
-/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */
-
-
-var QueueAction = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](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"]));
-
-//# sourceMappingURL=QueueAction.js.map
-
-
-/***/ }),
-/* 37 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncAction", function() { return AsyncAction; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38);
-/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */
-
-
-var AsyncAction = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](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;
+ AsyncAction.prototype.schedule = function (state, delay) {
+ if (delay === void 0) { delay = 0; }
+ if (this.closed) {
+ return this;
}
this.state = state;
var id = this.id;
@@ -3033,20 +3261,16 @@ var AsyncAction = /*@__PURE__*/ (function (_super) {
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 setInterval(scheduler.flush.bind(scheduler, this), delay);
+ AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {
+ if (delay === void 0) { delay = 0; }
+ return _intervalProvider__WEBPACK_IMPORTED_MODULE_2__["intervalProvider"].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) {
+ AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {
+ if (delay === void 0) { delay = 0; }
+ if (delay != null && this.delay === delay && this.pending === false) {
return id;
}
- clearInterval(id);
+ _intervalProvider__WEBPACK_IMPORTED_MODULE_2__["intervalProvider"].clearInterval(id);
return undefined;
};
AsyncAction.prototype.execute = function (state, delay) {
@@ -3062,65 +3286,58 @@ var AsyncAction = /*@__PURE__*/ (function (_super) {
this.id = this.recycleAsyncId(this.scheduler, this.id, null);
}
};
- AsyncAction.prototype._execute = function (state, delay) {
+ AsyncAction.prototype._execute = function (state, _delay) {
var errored = false;
- var errorValue = undefined;
+ var errorValue;
try {
this.work(state);
}
catch (e) {
errored = true;
- errorValue = !!e && e || new Error(e);
+ errorValue = e ? e : new Error('Scheduled action threw falsy error');
}
if (errored) {
this.unsubscribe();
return errorValue;
}
};
- AsyncAction.prototype._unsubscribe = function () {
- var id = this.id;
- var scheduler = this.scheduler;
- var actions = scheduler.actions;
- var index = actions.indexOf(this);
- this.work = null;
- this.state = null;
- this.pending = false;
- this.scheduler = null;
- if (index !== -1) {
- actions.splice(index, 1);
- }
- if (id != null) {
- this.id = this.recycleAsyncId(scheduler, id, null);
+ 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"])(actions, this);
+ if (id != null) {
+ this.id = this.recycleAsyncId(scheduler, id, null);
+ }
+ this.delay = null;
+ _super.prototype.unsubscribe.call(this);
}
- this.delay = null;
};
return AsyncAction;
}(_Action__WEBPACK_IMPORTED_MODULE_1__["Action"]));
//# sourceMappingURL=AsyncAction.js.map
-
/***/ }),
-/* 38 */
+/* 43 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return Action; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
-/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
-var Action = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](Action, _super);
+var Action = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(Action, _super);
function Action(scheduler, work) {
return _super.call(this) || this;
}
Action.prototype.schedule = function (state, delay) {
- if (delay === void 0) {
- delay = 0;
- }
+ if (delay === void 0) { delay = 0; }
return this;
};
return Action;
@@ -3128,88 +3345,181 @@ var Action = /*@__PURE__*/ (function (_super) {
//# sourceMappingURL=Action.js.map
+/***/ }),
+/* 44 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "intervalProvider", function() { return intervalProvider; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+
+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"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(args)));
+ }
+ return setInterval.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(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
/***/ }),
-/* 39 */
+/* 45 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueScheduler", function() { return QueueScheduler; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(40);
-/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "immediateProvider", function() { return immediateProvider; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46);
-var QueueScheduler = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](QueueScheduler, _super);
- function QueueScheduler() {
+var setImmediate = _util_Immediate__WEBPACK_IMPORTED_MODULE_1__["Immediate"].setImmediate, clearImmediate = _util_Immediate__WEBPACK_IMPORTED_MODULE_1__["Immediate"].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"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(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
+
+/***/ }),
+/* 46 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Immediate", function() { return Immediate; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TestTools", function() { return 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
+
+/***/ }),
+/* 47 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapScheduler", function() { return AsapScheduler; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48);
+
+
+var AsapScheduler = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(AsapScheduler, _super);
+ function AsapScheduler() {
return _super !== null && _super.apply(this, arguments) || this;
}
- return QueueScheduler;
+ 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"]));
-//# sourceMappingURL=QueueScheduler.js.map
-
+//# sourceMappingURL=AsapScheduler.js.map
/***/ }),
-/* 40 */
+/* 48 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncScheduler", function() { return AsyncScheduler; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(41);
-/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49);
-var AsyncScheduler = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsyncScheduler, _super);
+var AsyncScheduler = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(AsyncScheduler, _super);
function AsyncScheduler(SchedulerAction, now) {
- if (now === void 0) {
- now = _Scheduler__WEBPACK_IMPORTED_MODULE_1__["Scheduler"].now;
- }
- var _this = _super.call(this, SchedulerAction, function () {
- if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {
- return AsyncScheduler.delegate.now();
- }
- else {
- return now();
- }
- }) || this;
+ if (now === void 0) { now = _Scheduler__WEBPACK_IMPORTED_MODULE_1__["Scheduler"].now; }
+ var _this = _super.call(this, SchedulerAction, now) || this;
_this.actions = [];
- _this.active = false;
- _this.scheduled = undefined;
+ _this._active = false;
+ _this._scheduled = undefined;
return _this;
}
- AsyncScheduler.prototype.schedule = function (work, delay, state) {
- if (delay === void 0) {
- delay = 0;
- }
- if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {
- return AsyncScheduler.delegate.schedule(work, delay, state);
- }
- else {
- return _super.prototype.schedule.call(this, work, delay, state);
- }
- };
AsyncScheduler.prototype.flush = function (action) {
var actions = this.actions;
- if (this.active) {
+ if (this._active) {
actions.push(action);
return;
}
var error;
- this.active = true;
+ this._active = true;
do {
- if (error = action.execute(action.state, action.delay)) {
+ if ((error = action.execute(action.state, action.delay))) {
break;
}
- } while (action = actions.shift());
- this.active = false;
+ } while ((action = actions.shift()));
+ this._active = false;
if (error) {
- while (action = actions.shift()) {
+ while ((action = actions.shift())) {
action.unsubscribe();
}
throw error;
@@ -3220,141 +3530,373 @@ var AsyncScheduler = /*@__PURE__*/ (function (_super) {
//# sourceMappingURL=AsyncScheduler.js.map
-
/***/ }),
-/* 41 */
+/* 49 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return Scheduler; });
-var Scheduler = /*@__PURE__*/ (function () {
- function Scheduler(SchedulerAction, now) {
- if (now === void 0) {
- now = Scheduler.now;
- }
- this.SchedulerAction = SchedulerAction;
+/* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(38);
+
+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.SchedulerAction(this, work).schedule(state, delay);
+ if (delay === void 0) { delay = 0; }
+ return new this.schedulerActionCtor(this, work).schedule(state, delay);
};
- Scheduler.now = function () { return Date.now(); };
+ Scheduler.now = _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__["dateTimestampProvider"].now;
return Scheduler;
}());
//# sourceMappingURL=Scheduler.js.map
+/***/ }),
+/* 50 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return asyncScheduler; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "async", function() { return async; });
+/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42);
+/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48);
+
+
+var asyncScheduler = new _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"](_AsyncAction__WEBPACK_IMPORTED_MODULE_0__["AsyncAction"]);
+var async = asyncScheduler;
+//# sourceMappingURL=async.js.map
/***/ }),
-/* 42 */
+/* 51 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return observeOn; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnOperator", function() { return ObserveOnOperator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnSubscriber", function() { return ObserveOnSubscriber; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnMessage", function() { return ObserveOnMessage; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(43);
-/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return queueScheduler; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return queue; });
+/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(52);
+/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53);
+var queueScheduler = new _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__["QueueScheduler"](_QueueAction__WEBPACK_IMPORTED_MODULE_0__["QueueAction"]);
+var queue = queueScheduler;
+//# sourceMappingURL=queue.js.map
-function observeOn(scheduler, delay) {
- if (delay === void 0) {
- delay = 0;
+/***/ }),
+/* 52 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueAction", function() { return QueueAction; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
+
+
+var QueueAction = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(QueueAction, _super);
+ function QueueAction(scheduler, work) {
+ var _this = _super.call(this, scheduler, work) || this;
+ _this.scheduler = scheduler;
+ _this.work = work;
+ return _this;
}
- return function observeOnOperatorFunction(source) {
- return source.lift(new ObserveOnOperator(scheduler, delay));
- };
-}
-var ObserveOnOperator = /*@__PURE__*/ (function () {
- function ObserveOnOperator(scheduler, delay) {
- if (delay === void 0) {
- delay = 0;
+ QueueAction.prototype.schedule = function (state, delay) {
+ if (delay === void 0) { delay = 0; }
+ if (delay > 0) {
+ return _super.prototype.schedule.call(this, state, delay);
}
- this.scheduler = scheduler;
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"]));
+
+//# sourceMappingURL=QueueAction.js.map
+
+/***/ }),
+/* 53 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueScheduler", function() { return QueueScheduler; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48);
+
+
+var QueueScheduler = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(QueueScheduler, _super);
+ function QueueScheduler() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ return QueueScheduler;
+}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"]));
+
+//# sourceMappingURL=QueueScheduler.js.map
+
+/***/ }),
+/* 54 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return animationFrameScheduler; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return animationFrame; });
+/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55);
+/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56);
+
+
+var animationFrameScheduler = new _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__["AnimationFrameScheduler"](_AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__["AnimationFrameAction"]);
+var animationFrame = animationFrameScheduler;
+//# sourceMappingURL=animationFrame.js.map
+
+/***/ }),
+/* 55 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameAction", function() { return AnimationFrameAction; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
+/* harmony import */ var _animationFrameProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(33);
+
+
+
+var AnimationFrameAction = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(AnimationFrameAction, _super);
+ function AnimationFrameAction(scheduler, work) {
+ var _this = _super.call(this, scheduler, work) || this;
+ _this.scheduler = scheduler;
+ _this.work = work;
+ return _this;
}
- ObserveOnOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));
+ 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"].requestAnimationFrame(function () { return scheduler.flush(undefined); }));
};
- return ObserveOnOperator;
-}());
+ 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"].cancelAnimationFrame(id);
+ scheduler._scheduled = undefined;
+ }
+ return undefined;
+ };
+ return AnimationFrameAction;
+}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__["AsyncAction"]));
-var ObserveOnSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ObserveOnSubscriber, _super);
- function ObserveOnSubscriber(destination, scheduler, delay) {
- if (delay === void 0) {
- delay = 0;
+//# sourceMappingURL=AnimationFrameAction.js.map
+
+/***/ }),
+/* 56 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameScheduler", function() { return AnimationFrameScheduler; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48);
+
+
+var AnimationFrameScheduler = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(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;
}
- var _this = _super.call(this, destination) || this;
+ };
+ return AnimationFrameScheduler;
+}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"]));
+
+//# sourceMappingURL=AnimationFrameScheduler.js.map
+
+/***/ }),
+/* 57 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return VirtualTimeScheduler; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return VirtualAction; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
+/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48);
+
+
+
+
+var VirtualTimeScheduler = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(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"]));
+
+var VirtualAction = (function (_super) {
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(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.delay = delay;
+ _this.work = work;
+ _this.index = index;
+ _this.active = true;
+ _this.index = scheduler.index = index;
return _this;
}
- ObserveOnSubscriber.dispatch = function (arg) {
- var notification = arg.notification, destination = arg.destination;
- notification.observe(destination);
- this.unsubscribe();
+ 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"].EMPTY;
+ }
};
- ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {
- var destination = this.destination;
- destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));
+ 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;
};
- ObserveOnSubscriber.prototype._next = function (value) {
- this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createNext(value));
+ VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {
+ if (delay === void 0) { delay = 0; }
+ return undefined;
};
- ObserveOnSubscriber.prototype._error = function (err) {
- this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createError(err));
- this.unsubscribe();
+ VirtualAction.prototype._execute = function (state, delay) {
+ if (this.active === true) {
+ return _super.prototype._execute.call(this, state, delay);
+ }
};
- ObserveOnSubscriber.prototype._complete = function () {
- this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createComplete());
- this.unsubscribe();
+ 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 ObserveOnSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-
-var ObserveOnMessage = /*@__PURE__*/ (function () {
- function ObserveOnMessage(notification, destination) {
- this.notification = notification;
- this.destination = destination;
- }
- return ObserveOnMessage;
-}());
-
-//# sourceMappingURL=observeOn.js.map
+ return VirtualAction;
+}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__["AsyncAction"]));
+//# sourceMappingURL=VirtualTimeScheduler.js.map
/***/ }),
-/* 43 */
+/* 58 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return NotificationKind; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return Notification; });
-/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44);
-/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(45);
-/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(50);
-/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "observeNotification", function() { return observeNotification; });
+/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(59);
+/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60);
+/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
+
var NotificationKind;
-/*@__PURE__*/ (function (NotificationKind) {
+(function (NotificationKind) {
NotificationKind["NEXT"] = "N";
NotificationKind["ERROR"] = "E";
NotificationKind["COMPLETE"] = "C";
})(NotificationKind || (NotificationKind = {}));
-var Notification = /*@__PURE__*/ (function () {
+var Notification = (function () {
function Notification(kind, value, error) {
this.kind = kind;
this.value = value;
@@ -3362,51 +3904,40 @@ var Notification = /*@__PURE__*/ (function () {
this.hasValue = kind === 'N';
}
Notification.prototype.observe = function (observer) {
- switch (this.kind) {
- case 'N':
- return observer.next && observer.next(this.value);
- case 'E':
- return observer.error && observer.error(this.error);
- case 'C':
- return observer.complete && observer.complete();
- }
+ return observeNotification(this, observer);
};
- Notification.prototype.do = function (next, error, complete) {
- var kind = this.kind;
- switch (kind) {
- case 'N':
- return next && next(this.value);
- case 'E':
- return error && error(this.error);
- case 'C':
- return complete && complete();
- }
+ 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) {
- if (nextOrObserver && typeof nextOrObserver.next === 'function') {
- return this.observe(nextOrObserver);
- }
- else {
- return this.do(nextOrObserver, error, complete);
- }
+ var _a;
+ return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_3__["isFunction"])((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next)
+ ? this.observe(nextOrObserver)
+ : this.do(nextOrObserver, error, complete);
};
Notification.prototype.toObservable = function () {
- var kind = this.kind;
- switch (kind) {
- case 'N':
- return Object(_observable_of__WEBPACK_IMPORTED_MODULE_1__["of"])(this.value);
- case 'E':
- return Object(_observable_throwError__WEBPACK_IMPORTED_MODULE_2__["throwError"])(this.error);
- case 'C':
- return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_0__["empty"])();
- }
- throw new Error('unexpected notification kind value');
+ var _a = this, kind = _a.kind, value = _a.value, error = _a.error;
+ var result = kind === 'N'
+ ?
+ Object(_observable_of__WEBPACK_IMPORTED_MODULE_1__["of"])(value)
+ :
+ kind === 'E'
+ ?
+ Object(_observable_throwError__WEBPACK_IMPORTED_MODULE_2__["throwError"])(function () { return error; })
+ :
+ kind === 'C'
+ ?
+ _observable_empty__WEBPACK_IMPORTED_MODULE_0__["EMPTY"]
+ :
+ 0;
+ if (!result) {
+ throw new TypeError("Unexpected notification kind " + kind);
+ }
+ return result;
};
Notification.createNext = function (value) {
- if (typeof value !== 'undefined') {
- return new Notification('N', value);
- }
- return Notification.undefinedValueNotification;
+ return new Notification('N', value);
};
Notification.createError = function (err) {
return new Notification('E', undefined, err);
@@ -3415,15 +3946,21 @@ var Notification = /*@__PURE__*/ (function () {
return Notification.completeNotification;
};
Notification.completeNotification = new Notification('C');
- Notification.undefinedValueNotification = new Notification('N', undefined);
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
-
/***/ }),
-/* 44 */
+/* 59 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -3431,9 +3968,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return EMPTY; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; });
/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */
-var EMPTY = /*@__PURE__*/ new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return subscriber.complete(); });
+var EMPTY = new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return subscriber.complete(); });
function empty(scheduler) {
return scheduler ? emptyScheduled(scheduler) : EMPTY;
}
@@ -3442,19 +3978,15 @@ function emptyScheduled(scheduler) {
}
//# sourceMappingURL=empty.js.map
-
/***/ }),
-/* 45 */
+/* 60 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "of", function() { return of; });
-/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46);
-/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47);
-/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49);
-/** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */
-
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(61);
+/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(63);
function of() {
@@ -3462,1231 +3994,953 @@ function of() {
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
- var scheduler = args[args.length - 1];
- if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_0__["isScheduler"])(scheduler)) {
- args.pop();
- return Object(_scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__["scheduleArray"])(args, scheduler);
- }
- else {
- return Object(_fromArray__WEBPACK_IMPORTED_MODULE_1__["fromArray"])(args);
- }
+ var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_0__["popScheduler"])(args);
+ return Object(_from__WEBPACK_IMPORTED_MODULE_1__["from"])(args, scheduler);
}
//# sourceMappingURL=of.js.map
+/***/ }),
+/* 61 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "popResultSelector", function() { return popResultSelector; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "popScheduler", function() { return popScheduler; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "popNumber", function() { return popNumber; });
+/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
+/* harmony import */ var _isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62);
+
+
+function last(arr) {
+ return arr[arr.length - 1];
+}
+function popResultSelector(args) {
+ return Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__["isFunction"])(last(args)) ? args.pop() : undefined;
+}
+function popScheduler(args) {
+ return Object(_isScheduler__WEBPACK_IMPORTED_MODULE_1__["isScheduler"])(last(args)) ? args.pop() : undefined;
+}
+function popNumber(args, defaultValue) {
+ return typeof last(args) === 'number' ? args.pop() : defaultValue;
+}
+//# sourceMappingURL=args.js.map
/***/ }),
-/* 46 */
+/* 62 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isScheduler", function() { return isScheduler; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
+/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
+
function isScheduler(value) {
- return value && typeof value.schedule === 'function';
+ return value && Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__["isFunction"])(value.schedule);
}
//# sourceMappingURL=isScheduler.js.map
-
/***/ }),
-/* 47 */
+/* 63 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromArray", function() { return fromArray; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48);
-/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49);
-/** PURE_IMPORTS_START _Observable,_util_subscribeToArray,_scheduled_scheduleArray PURE_IMPORTS_END */
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "from", function() { return from; });
+/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(64);
+/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66);
-function fromArray(input, scheduler) {
- if (!scheduler) {
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](Object(_util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__["subscribeToArray"])(input));
- }
- else {
- return Object(_scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__["scheduleArray"])(input, scheduler);
- }
+function from(input, scheduler) {
+ return scheduler ? Object(_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_0__["scheduled"])(input, scheduler) : Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__["innerFrom"])(input);
}
-//# sourceMappingURL=fromArray.js.map
-
+//# sourceMappingURL=from.js.map
/***/ }),
-/* 48 */
+/* 64 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToArray", function() { return subscribeToArray; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var subscribeToArray = function (array) {
- return function (subscriber) {
- for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {
- subscriber.next(array[i]);
- }
- subscriber.complete();
- };
-};
-//# sourceMappingURL=subscribeToArray.js.map
-
-
-/***/ }),
-/* 49 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return scheduled; });
+/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65);
+/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(78);
+/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79);
+/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(80);
+/* harmony import */ var _scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(81);
+/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(69);
+/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(68);
+/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(67);
+/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(72);
+/* harmony import */ var _util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(70);
+/* harmony import */ var _util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(71);
+/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(74);
+/* harmony import */ var _scheduleReadableStreamLike__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(82);
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleArray", function() { return scheduleArray; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
-/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */
-function scheduleArray(input, scheduler) {
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"]();
- var i = 0;
- sub.add(scheduler.schedule(function () {
- if (i === input.length) {
- subscriber.complete();
- return;
- }
- subscriber.next(input[i++]);
- if (!subscriber.closed) {
- sub.add(this.schedule());
- }
- }));
- return sub;
- });
-}
-//# sourceMappingURL=scheduleArray.js.map
-/***/ }),
-/* 50 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return throwError; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */
-function throwError(error, scheduler) {
- if (!scheduler) {
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return subscriber.error(error); });
- }
- else {
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); });
- }
-}
-function dispatch(_a) {
- var error = _a.error, subscriber = _a.subscriber;
- subscriber.error(error);
-}
-//# sourceMappingURL=throwError.js.map
-/***/ }),
-/* 51 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return AsyncSubject; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18);
-/** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */
-var AsyncSubject = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsyncSubject, _super);
- function AsyncSubject() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.value = null;
- _this.hasNext = false;
- _this.hasCompleted = false;
- return _this;
- }
- AsyncSubject.prototype._subscribe = function (subscriber) {
- if (this.hasError) {
- subscriber.error(this.thrownError);
- return _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"].EMPTY;
+function scheduled(input, scheduler) {
+ if (input != null) {
+ if (Object(_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_5__["isInteropObservable"])(input)) {
+ return Object(_scheduleObservable__WEBPACK_IMPORTED_MODULE_0__["scheduleObservable"])(input, scheduler);
}
- else if (this.hasCompleted && this.hasNext) {
- subscriber.next(this.value);
- subscriber.complete();
- return _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"].EMPTY;
+ if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_7__["isArrayLike"])(input)) {
+ return Object(_scheduleArray__WEBPACK_IMPORTED_MODULE_2__["scheduleArray"])(input, scheduler);
}
- return _super.prototype._subscribe.call(this, subscriber);
- };
- AsyncSubject.prototype.next = function (value) {
- if (!this.hasCompleted) {
- this.value = value;
- this.hasNext = true;
+ if (Object(_util_isPromise__WEBPACK_IMPORTED_MODULE_6__["isPromise"])(input)) {
+ return Object(_schedulePromise__WEBPACK_IMPORTED_MODULE_1__["schedulePromise"])(input, scheduler);
}
- };
- AsyncSubject.prototype.error = function (error) {
- if (!this.hasCompleted) {
- _super.prototype.error.call(this, error);
+ if (Object(_util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_9__["isAsyncIterable"])(input)) {
+ return Object(_scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_4__["scheduleAsyncIterable"])(input, scheduler);
}
- };
- AsyncSubject.prototype.complete = function () {
- this.hasCompleted = true;
- if (this.hasNext) {
- _super.prototype.next.call(this, this.value);
+ if (Object(_util_isIterable__WEBPACK_IMPORTED_MODULE_8__["isIterable"])(input)) {
+ return Object(_scheduleIterable__WEBPACK_IMPORTED_MODULE_3__["scheduleIterable"])(input, scheduler);
}
- _super.prototype.complete.call(this);
- };
- return AsyncSubject;
-}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]));
-
-//# sourceMappingURL=AsyncSubject.js.map
-
+ if (Object(_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_11__["isReadableStreamLike"])(input)) {
+ return Object(_scheduleReadableStreamLike__WEBPACK_IMPORTED_MODULE_12__["scheduleReadableStreamLike"])(input, scheduler);
+ }
+ }
+ throw Object(_util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_10__["createInvalidObservableTypeError"])(input);
+}
+//# sourceMappingURL=scheduled.js.map
/***/ }),
-/* 52 */
+/* 65 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return asapScheduler; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return asap; });
-/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(53);
-/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55);
-/** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleObservable", function() { return scheduleObservable; });
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(66);
+/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(75);
+/* harmony import */ var _operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(77);
-var asapScheduler = /*@__PURE__*/ new _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__["AsapScheduler"](_AsapAction__WEBPACK_IMPORTED_MODULE_0__["AsapAction"]);
-var asap = asapScheduler;
-//# sourceMappingURL=asap.js.map
+function scheduleObservable(input, scheduler) {
+ return Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__["innerFrom"])(input).pipe(Object(_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__["subscribeOn"])(scheduler), Object(_operators_observeOn__WEBPACK_IMPORTED_MODULE_1__["observeOn"])(scheduler));
+}
+//# sourceMappingURL=scheduleObservable.js.map
/***/ }),
-/* 53 */
+/* 66 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapAction", function() { return AsapAction; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54);
-/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37);
-/** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "innerFrom", function() { return innerFrom; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromInteropObservable", function() { return fromInteropObservable; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromArrayLike", function() { return fromArrayLike; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromPromise", function() { return fromPromise; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromIterable", function() { return fromIterable; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromAsyncIterable", function() { return fromAsyncIterable; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromReadableStreamLike", function() { return fromReadableStreamLike; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67);
+/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(68);
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
+/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69);
+/* harmony import */ var _util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(70);
+/* harmony import */ var _util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(71);
+/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(72);
+/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(74);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(13);
+/* harmony import */ var _util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(19);
+/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(24);
-var AsapAction = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsapAction, _super);
- function AsapAction(scheduler, work) {
- var _this = _super.call(this, scheduler, work) || this;
- _this.scheduler = scheduler;
- _this.work = work;
- return _this;
+
+
+
+
+
+
+
+
+
+function innerFrom(input) {
+ if (input instanceof _Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"]) {
+ return input;
}
- AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {
- if (delay === void 0) {
- delay = 0;
+ if (input != null) {
+ if (Object(_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__["isInteropObservable"])(input)) {
+ return fromInteropObservable(input);
}
- if (delay !== null && delay > 0) {
- return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);
+ if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_1__["isArrayLike"])(input)) {
+ return fromArrayLike(input);
}
- scheduler.actions.push(this);
- return scheduler.scheduled || (scheduler.scheduled = _util_Immediate__WEBPACK_IMPORTED_MODULE_1__["Immediate"].setImmediate(scheduler.flush.bind(scheduler, null)));
- };
- AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {
- if (delay === void 0) {
- delay = 0;
+ if (Object(_util_isPromise__WEBPACK_IMPORTED_MODULE_2__["isPromise"])(input)) {
+ return fromPromise(input);
}
- if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {
- return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);
+ if (Object(_util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_5__["isAsyncIterable"])(input)) {
+ return fromAsyncIterable(input);
}
- if (scheduler.actions.length === 0) {
- _util_Immediate__WEBPACK_IMPORTED_MODULE_1__["Immediate"].clearImmediate(id);
- scheduler.scheduled = undefined;
+ if (Object(_util_isIterable__WEBPACK_IMPORTED_MODULE_7__["isIterable"])(input)) {
+ return fromIterable(input);
}
- return undefined;
- };
- return AsapAction;
-}(_AsyncAction__WEBPACK_IMPORTED_MODULE_2__["AsyncAction"]));
-
-//# sourceMappingURL=AsapAction.js.map
-
+ if (Object(_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_8__["isReadableStreamLike"])(input)) {
+ return fromReadableStreamLike(input);
+ }
+ }
+ throw Object(_util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_6__["createInvalidObservableTypeError"])(input);
+}
+function fromInteropObservable(obj) {
+ return new _Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"](function (subscriber) {
+ var obs = obj[_symbol_observable__WEBPACK_IMPORTED_MODULE_11__["observable"]]();
+ if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_9__["isFunction"])(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"](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"](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"]);
+ });
+}
+function fromIterable(iterable) {
+ return new _Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"](function (subscriber) {
+ var e_1, _a;
+ try {
+ for (var iterable_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(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"](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"])(readableStream));
+}
+function process(asyncIterable, subscriber) {
+ var asyncIterable_1, asyncIterable_1_1;
+ var e_2, _a;
+ return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__awaiter"])(this, void 0, void 0, function () {
+ var value, e_2_1;
+ return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__generator"])(this, function (_b) {
+ switch (_b.label) {
+ case 0:
+ _b.trys.push([0, 5, 6, 11]);
+ asyncIterable_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__asyncValues"])(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
/***/ }),
-/* 54 */
+/* 67 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Immediate", function() { return Immediate; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TestTools", function() { return TestTools; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var nextHandle = 1;
-var RESOLVED = /*@__PURE__*/ (function () { return /*@__PURE__*/ Promise.resolve(); })();
-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;
- 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
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArrayLike", function() { return isArrayLike; });
+var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });
+//# sourceMappingURL=isArrayLike.js.map
/***/ }),
-/* 55 */
+/* 68 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapScheduler", function() { return AsapScheduler; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(40);
-/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */
-
-
-var AsapScheduler = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsapScheduler, _super);
- function AsapScheduler() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- AsapScheduler.prototype.flush = function (action) {
- this.active = true;
- this.scheduled = undefined;
- var actions = this.actions;
- var error;
- var index = -1;
- var count = actions.length;
- action = action || actions.shift();
- do {
- if (error = action.execute(action.state, action.delay)) {
- break;
- }
- } while (++index < count && (action = actions.shift()));
- this.active = false;
- if (error) {
- while (++index < count && (action = actions.shift())) {
- action.unsubscribe();
- }
- throw error;
- }
- };
- return AsapScheduler;
-}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"]));
-
-//# sourceMappingURL=AsapScheduler.js.map
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPromise", function() { return isPromise; });
+/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
+function isPromise(value) {
+ return Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__["isFunction"])(value === null || value === void 0 ? void 0 : value.then);
+}
+//# sourceMappingURL=isPromise.js.map
/***/ }),
-/* 56 */
+/* 69 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return asyncScheduler; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "async", function() { return async; });
-/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(37);
-/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(40);
-/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isInteropObservable", function() { return isInteropObservable; });
+/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24);
+/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
-var asyncScheduler = /*@__PURE__*/ new _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"](_AsyncAction__WEBPACK_IMPORTED_MODULE_0__["AsyncAction"]);
-var async = asyncScheduler;
-//# sourceMappingURL=async.js.map
+function isInteropObservable(input) {
+ return Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(input[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__["observable"]]);
+}
+//# sourceMappingURL=isInteropObservable.js.map
/***/ }),
-/* 57 */
+/* 70 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return animationFrameScheduler; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return animationFrame; });
-/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58);
-/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59);
-/** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */
-
-
-var animationFrameScheduler = /*@__PURE__*/ new _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__["AnimationFrameScheduler"](_AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__["AnimationFrameAction"]);
-var animationFrame = animationFrameScheduler;
-//# sourceMappingURL=animationFrame.js.map
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isAsyncIterable", function() { return isAsyncIterable; });
+/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
+function isAsyncIterable(obj) {
+ return Symbol.asyncIterator && Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__["isFunction"])(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);
+}
+//# sourceMappingURL=isAsyncIterable.js.map
/***/ }),
-/* 58 */
+/* 71 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameAction", function() { return AnimationFrameAction; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
-/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createInvalidObservableTypeError", 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
+/***/ }),
+/* 72 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-var AnimationFrameAction = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](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 = requestAnimationFrame(function () { return scheduler.flush(null); }));
- };
- 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.length === 0) {
- cancelAnimationFrame(id);
- scheduler.scheduled = undefined;
- }
- return undefined;
- };
- return AnimationFrameAction;
-}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__["AsyncAction"]));
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIterable", function() { return isIterable; });
+/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(73);
+/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
-//# sourceMappingURL=AnimationFrameAction.js.map
+function isIterable(input) {
+ return Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(input === null || input === void 0 ? void 0 : input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__["iterator"]]);
+}
+//# sourceMappingURL=isIterable.js.map
/***/ }),
-/* 59 */
+/* 73 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameScheduler", function() { return AnimationFrameScheduler; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(40);
-/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */
-
-
-var AnimationFrameScheduler = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AnimationFrameScheduler, _super);
- function AnimationFrameScheduler() {
- return _super !== null && _super.apply(this, arguments) || this;
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSymbolIterator", function() { return getSymbolIterator; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iterator", function() { return iterator; });
+function getSymbolIterator() {
+ if (typeof Symbol !== 'function' || !Symbol.iterator) {
+ return '@@iterator';
}
- AnimationFrameScheduler.prototype.flush = function (action) {
- this.active = true;
- this.scheduled = undefined;
- var actions = this.actions;
- var error;
- var index = -1;
- var count = actions.length;
- action = action || actions.shift();
- do {
- if (error = action.execute(action.state, action.delay)) {
- break;
- }
- } while (++index < count && (action = actions.shift()));
- this.active = false;
- if (error) {
- while (++index < count && (action = actions.shift())) {
- action.unsubscribe();
- }
- throw error;
- }
- };
- return AnimationFrameScheduler;
-}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"]));
-
-//# sourceMappingURL=AnimationFrameScheduler.js.map
-
+ return Symbol.iterator;
+}
+var iterator = getSymbolIterator();
+//# sourceMappingURL=iterator.js.map
/***/ }),
-/* 60 */
+/* 74 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return VirtualTimeScheduler; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return VirtualAction; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
-/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(40);
-/** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */
-
-
-
-var VirtualTimeScheduler = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](VirtualTimeScheduler, _super);
- function VirtualTimeScheduler(SchedulerAction, maxFrames) {
- if (SchedulerAction === void 0) {
- SchedulerAction = VirtualAction;
- }
- if (maxFrames === void 0) {
- maxFrames = Number.POSITIVE_INFINITY;
- }
- var _this = _super.call(this, SchedulerAction, 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, 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_2__["AsyncScheduler"]));
-
-var VirtualAction = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](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 (!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);
- };
- 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;
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readableStreamLikeToAsyncGenerator", function() { return readableStreamLikeToAsyncGenerator; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isReadableStreamLike", function() { return isReadableStreamLike; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
+
+
+function readableStreamLikeToAsyncGenerator(readableStream) {
+ return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__asyncGenerator"])(this, arguments, function readableStreamLikeToAsyncGenerator_1() {
+ var reader, _a, value, done;
+ return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__generator"])(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"])(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"])(void 0)];
+ case 4: return [2, _b.sent()];
+ case 5: return [4, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__await"])(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];
}
- }
- else if (a.delay > b.delay) {
- return 1;
- }
- else {
- return -1;
- }
- };
- return VirtualAction;
-}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__["AsyncAction"]));
-
-//# sourceMappingURL=VirtualTimeScheduler.js.map
-
+ });
+ });
+}
+function isReadableStreamLike(obj) {
+ return Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(obj === null || obj === void 0 ? void 0 : obj.getReader);
+}
+//# sourceMappingURL=isReadableStreamLike.js.map
/***/ }),
-/* 61 */
+/* 75 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return noop; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-function noop() { }
-//# sourceMappingURL=noop.js.map
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return observeOn; });
+/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+
+function observeOn(scheduler, delay) {
+ if (delay === void 0) { delay = 0; }
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function (value) { return Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__["executeSchedule"])(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__["executeSchedule"])(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__["executeSchedule"])(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));
+ });
+}
+//# sourceMappingURL=observeOn.js.map
+
/***/ }),
-/* 62 */
+/* 76 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return isObservable; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */
-
-function isObservable(obj) {
- return !!obj && (obj instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"] || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "executeSchedule", 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=isObservable.js.map
-
+//# sourceMappingURL=executeSchedule.js.map
/***/ }),
-/* 63 */
+/* 77 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return ArgumentOutOfRangeError; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var ArgumentOutOfRangeErrorImpl = /*@__PURE__*/ (function () {
- function ArgumentOutOfRangeErrorImpl() {
- Error.call(this);
- this.message = 'argument out of range';
- this.name = 'ArgumentOutOfRangeError';
- return this;
- }
- ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);
- return ArgumentOutOfRangeErrorImpl;
-})();
-var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;
-//# sourceMappingURL=ArgumentOutOfRangeError.js.map
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return subscribeOn; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+function subscribeOn(scheduler, delay) {
+ if (delay === void 0) { delay = 0; }
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));
+ });
+}
+//# sourceMappingURL=subscribeOn.js.map
/***/ }),
-/* 64 */
+/* 78 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return EmptyError; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var EmptyErrorImpl = /*@__PURE__*/ (function () {
- function EmptyErrorImpl() {
- Error.call(this);
- this.message = 'no elements in sequence';
- this.name = 'EmptyError';
- return this;
- }
- EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);
- return EmptyErrorImpl;
-})();
-var EmptyError = EmptyErrorImpl;
-//# sourceMappingURL=EmptyError.js.map
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "schedulePromise", function() { return schedulePromise; });
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(66);
+/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(75);
+/* harmony import */ var _operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(77);
+
+function schedulePromise(input, scheduler) {
+ return Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__["innerFrom"])(input).pipe(Object(_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__["subscribeOn"])(scheduler), Object(_operators_observeOn__WEBPACK_IMPORTED_MODULE_1__["observeOn"])(scheduler));
+}
+//# sourceMappingURL=schedulePromise.js.map
+
/***/ }),
-/* 65 */
+/* 79 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return TimeoutError; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var TimeoutErrorImpl = /*@__PURE__*/ (function () {
- function TimeoutErrorImpl() {
- Error.call(this);
- this.message = 'Timeout has occurred';
- this.name = 'TimeoutError';
- return this;
- }
- TimeoutErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);
- return TimeoutErrorImpl;
-})();
-var TimeoutError = TimeoutErrorImpl;
-//# sourceMappingURL=TimeoutError.js.map
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleArray", function() { return scheduleArray; });
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
+function scheduleArray(input, scheduler) {
+ return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](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
/***/ }),
-/* 66 */
+/* 80 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return bindCallback; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleIterable", function() { return scheduleIterable; });
/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(51);
-/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(67);
-/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11);
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(19);
-/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(46);
-/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isArray,_util_isScheduler PURE_IMPORTS_END */
-
+/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(73);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
+/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(76);
-
-function bindCallback(callbackFunc, resultSelector, scheduler) {
- if (resultSelector) {
- if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(resultSelector)) {
- scheduler = resultSelector;
- }
- else {
- return function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
+function scheduleIterable(input, scheduler) {
+ return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
+ var iterator;
+ Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_3__["executeSchedule"])(subscriber, scheduler, function () {
+ iterator = input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_1__["iterator"]]();
+ Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_3__["executeSchedule"])(subscriber, scheduler, function () {
+ var _a;
+ var value;
+ var done;
+ try {
+ (_a = iterator.next(), value = _a.value, done = _a.done);
}
- return bindCallback(callbackFunc, scheduler).apply(void 0, args).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_2__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_4__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));
- };
- }
- }
- return function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- var context = this;
- var subject;
- var params = {
- context: context,
- subject: subject,
- callbackFunc: callbackFunc,
- scheduler: scheduler,
- };
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- if (!scheduler) {
- if (!subject) {
- subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"]();
- var handler = function () {
- var innerArgs = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- innerArgs[_i] = arguments[_i];
- }
- subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);
- subject.complete();
- };
- try {
- callbackFunc.apply(context, args.concat([handler]));
- }
- catch (err) {
- if (Object(_util_canReportError__WEBPACK_IMPORTED_MODULE_3__["canReportError"])(subject)) {
- subject.error(err);
- }
- else {
- console.warn(err);
- }
- }
+ catch (err) {
+ subscriber.error(err);
+ return;
}
- return subject.subscribe(subscriber);
- }
- else {
- var state = {
- args: args, subscriber: subscriber, params: params,
- };
- return scheduler.schedule(dispatch, 0, state);
- }
+ if (done) {
+ subscriber.complete();
+ }
+ else {
+ subscriber.next(value);
+ }
+ }, 0, true);
});
- };
+ return function () { return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };
+ });
}
-function dispatch(state) {
- var _this = this;
- var self = this;
- var args = state.args, subscriber = state.subscriber, params = state.params;
- var callbackFunc = params.callbackFunc, context = params.context, scheduler = params.scheduler;
- var subject = params.subject;
- if (!subject) {
- subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"]();
- var handler = function () {
- var innerArgs = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- innerArgs[_i] = arguments[_i];
- }
- var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;
- _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));
- };
- try {
- callbackFunc.apply(context, args.concat([handler]));
- }
- catch (err) {
- subject.error(err);
- }
+//# sourceMappingURL=scheduleIterable.js.map
+
+/***/ }),
+/* 81 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleAsyncIterable", function() { return scheduleAsyncIterable; });
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
+/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(76);
+
+
+function scheduleAsyncIterable(input, scheduler) {
+ if (!input) {
+ throw new Error('Iterable cannot be null');
}
- this.add(subject.subscribe(subscriber));
-}
-function dispatchNext(state) {
- var value = state.value, subject = state.subject;
- subject.next(value);
- subject.complete();
-}
-function dispatchError(state) {
- var err = state.err, subject = state.subject;
- subject.error(err);
+ return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
+ Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__["executeSchedule"])(subscriber, scheduler, function () {
+ var iterator = input[Symbol.asyncIterator]();
+ Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__["executeSchedule"])(subscriber, scheduler, function () {
+ iterator.next().then(function (result) {
+ if (result.done) {
+ subscriber.complete();
+ }
+ else {
+ subscriber.next(result.value);
+ }
+ });
+ }, 0, true);
+ });
+ });
}
-//# sourceMappingURL=bindCallback.js.map
-
+//# sourceMappingURL=scheduleAsyncIterable.js.map
/***/ }),
-/* 67 */
+/* 82 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MapOperator", function() { return MapOperator; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleReadableStreamLike", function() { return scheduleReadableStreamLike; });
+/* harmony import */ var _scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81);
+/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(74);
-function map(project, thisArg) {
- return function mapOperation(source) {
- if (typeof project !== 'function') {
- throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');
- }
- return source.lift(new MapOperator(project, thisArg));
- };
+function scheduleReadableStreamLike(input, scheduler) {
+ return Object(_scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_0__["scheduleAsyncIterable"])(Object(_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_1__["readableStreamLikeToAsyncGenerator"])(input), scheduler);
}
-var MapOperator = /*@__PURE__*/ (function () {
- function MapOperator(project, thisArg) {
- this.project = project;
- this.thisArg = thisArg;
- }
- MapOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));
- };
- return MapOperator;
-}());
+//# sourceMappingURL=scheduleReadableStreamLike.js.map
+
+/***/ }),
+/* 83 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return throwError; });
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
-var MapSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MapSubscriber, _super);
- function MapSubscriber(destination, project, thisArg) {
- var _this = _super.call(this, destination) || this;
- _this.project = project;
- _this.count = 0;
- _this.thisArg = thisArg || _this;
- return _this;
- }
- MapSubscriber.prototype._next = function (value) {
- var result;
- try {
- result = this.project.call(this.thisArg, value, this.count++);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.destination.next(result);
- };
- return MapSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=map.js.map
+function throwError(errorOrErrorFactory, scheduler) {
+ var errorFactory = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; };
+ var init = function (subscriber) { return subscriber.error(errorFactory()); };
+ return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](scheduler ? function (subscriber) { return scheduler.schedule(init, 0, subscriber); } : init);
+}
+//# sourceMappingURL=throwError.js.map
/***/ }),
-/* 68 */
+/* 84 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return bindNodeCallback; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return isObservable; });
/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(51);
-/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(67);
-/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11);
-/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(46);
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(19);
-/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isScheduler,_util_isArray PURE_IMPORTS_END */
-
+/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
+function isObservable(obj) {
+ return !!obj && (obj instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"] || (Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(obj.lift) && Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(obj.subscribe)));
+}
+//# sourceMappingURL=isObservable.js.map
+/***/ }),
+/* 85 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lastValueFrom", function() { return lastValueFrom; });
+/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86);
-function bindNodeCallback(callbackFunc, resultSelector, scheduler) {
- if (resultSelector) {
- if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_4__["isScheduler"])(resultSelector)) {
- scheduler = resultSelector;
- }
- else {
- return function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
+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);
}
- return bindNodeCallback(callbackFunc, scheduler).apply(void 0, args).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_2__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_5__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));
- };
- }
- }
- return function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- var params = {
- subject: undefined,
- args: args,
- callbackFunc: callbackFunc,
- scheduler: scheduler,
- context: this,
- };
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var context = params.context;
- var subject = params.subject;
- if (!scheduler) {
- if (!subject) {
- subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"]();
- var handler = function () {
- var innerArgs = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- innerArgs[_i] = arguments[_i];
- }
- var err = innerArgs.shift();
- if (err) {
- subject.error(err);
- return;
- }
- subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);
- subject.complete();
- };
- try {
- callbackFunc.apply(context, args.concat([handler]));
- }
- catch (err) {
- if (Object(_util_canReportError__WEBPACK_IMPORTED_MODULE_3__["canReportError"])(subject)) {
- subject.error(err);
- }
- else {
- console.warn(err);
- }
- }
+ else if (hasConfig) {
+ resolve(config.defaultValue);
}
- return subject.subscribe(subscriber);
- }
- else {
- return scheduler.schedule(dispatch, 0, { params: params, subscriber: subscriber, context: context });
- }
+ else {
+ reject(new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__["EmptyError"]());
+ }
+ },
});
- };
-}
-function dispatch(state) {
- var _this = this;
- var params = state.params, subscriber = state.subscriber, context = state.context;
- var callbackFunc = params.callbackFunc, args = params.args, scheduler = params.scheduler;
- var subject = params.subject;
- if (!subject) {
- subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"]();
- var handler = function () {
- var innerArgs = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- innerArgs[_i] = arguments[_i];
- }
- var err = innerArgs.shift();
- if (err) {
- _this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));
- }
- else {
- var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;
- _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));
- }
- };
- try {
- callbackFunc.apply(context, args.concat([handler]));
- }
- catch (err) {
- this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));
- }
- }
- this.add(subject.subscribe(subscriber));
-}
-function dispatchNext(arg) {
- var value = arg.value, subject = arg.subject;
- subject.next(value);
- subject.complete();
-}
-function dispatchError(arg) {
- var err = arg.err, subject = arg.subject;
- subject.error(err);
+ });
}
-//# sourceMappingURL=bindNodeCallback.js.map
-
+//# sourceMappingURL=lastValueFrom.js.map
/***/ }),
-/* 69 */
+/* 86 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CombineLatestOperator", function() { return CombineLatestOperator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CombineLatestSubscriber", function() { return CombineLatestSubscriber; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46);
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19);
-/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70);
-/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(71);
-/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(47);
-/** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return EmptyError; });
+/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16);
+var EmptyError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__["createErrorClass"])(function (_super) { return function EmptyErrorImpl() {
+ _super(this);
+ this.name = 'EmptyError';
+ this.message = 'no elements in sequence';
+}; });
+//# sourceMappingURL=EmptyError.js.map
+/***/ }),
+/* 87 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "firstValueFrom", function() { return firstValueFrom; });
+/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86);
+/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);
-var NONE = {};
-function combineLatest() {
- var observables = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i] = arguments[_i];
- }
- var resultSelector = undefined;
- var scheduler = undefined;
- if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__["isScheduler"])(observables[observables.length - 1])) {
- scheduler = observables.pop();
- }
- if (typeof observables[observables.length - 1] === 'function') {
- resultSelector = observables.pop();
- }
- if (observables.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(observables[0])) {
- observables = observables[0];
- }
- return Object(_fromArray__WEBPACK_IMPORTED_MODULE_5__["fromArray"])(observables, scheduler).lift(new CombineLatestOperator(resultSelector));
+function firstValueFrom(source, config) {
+ var hasConfig = typeof config === 'object';
+ return new Promise(function (resolve, reject) {
+ var subscriber = new _Subscriber__WEBPACK_IMPORTED_MODULE_1__["SafeSubscriber"]({
+ 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"]());
+ }
+ },
+ });
+ source.subscribe(subscriber);
+ });
}
-var CombineLatestOperator = /*@__PURE__*/ (function () {
- function CombineLatestOperator(resultSelector) {
- this.resultSelector = resultSelector;
- }
- CombineLatestOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));
- };
- return CombineLatestOperator;
-}());
+//# sourceMappingURL=firstValueFrom.js.map
-var CombineLatestSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CombineLatestSubscriber, _super);
- function CombineLatestSubscriber(destination, resultSelector) {
- var _this = _super.call(this, destination) || this;
- _this.resultSelector = resultSelector;
- _this.active = 0;
- _this.values = [];
- _this.observables = [];
- return _this;
- }
- CombineLatestSubscriber.prototype._next = function (observable) {
- this.values.push(NONE);
- this.observables.push(observable);
- };
- CombineLatestSubscriber.prototype._complete = function () {
- var observables = this.observables;
- var len = observables.length;
- if (len === 0) {
- this.destination.complete();
- }
- else {
- this.active = len;
- this.toRespond = len;
- for (var i = 0; i < len; i++) {
- var observable = observables[i];
- this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, observable, undefined, i));
- }
- }
- };
- CombineLatestSubscriber.prototype.notifyComplete = function (unused) {
- if ((this.active -= 1) === 0) {
- this.destination.complete();
- }
- };
- CombineLatestSubscriber.prototype.notifyNext = function (_outerValue, innerValue, outerIndex) {
- var values = this.values;
- var oldVal = values[outerIndex];
- var toRespond = !this.toRespond
- ? 0
- : oldVal === NONE ? --this.toRespond : this.toRespond;
- values[outerIndex] = innerValue;
- if (toRespond === 0) {
- if (this.resultSelector) {
- this._tryResultSelector(values);
- }
- else {
- this.destination.next(values.slice());
- }
- }
- };
- CombineLatestSubscriber.prototype._tryResultSelector = function (values) {
- var result;
- try {
- result = this.resultSelector.apply(this, values);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.destination.next(result);
- };
- return CombineLatestSubscriber;
-}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"]));
+/***/ }),
+/* 88 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-//# sourceMappingURL=combineLatest.js.map
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return ArgumentOutOfRangeError; });
+/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16);
+var ArgumentOutOfRangeError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__["createErrorClass"])(function (_super) {
+ return function ArgumentOutOfRangeErrorImpl() {
+ _super(this);
+ this.name = 'ArgumentOutOfRangeError';
+ this.message = 'argument out of range';
+ };
+});
+//# sourceMappingURL=ArgumentOutOfRangeError.js.map
/***/ }),
-/* 70 */
+/* 89 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OuterSubscriber", function() { return OuterSubscriber; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NotFoundError", function() { return NotFoundError; });
+/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16);
-var OuterSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](OuterSubscriber, _super);
- function OuterSubscriber() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
- this.destination.next(innerValue);
- };
- OuterSubscriber.prototype.notifyError = function (error, innerSub) {
- this.destination.error(error);
- };
- OuterSubscriber.prototype.notifyComplete = function (innerSub) {
- this.destination.complete();
+var NotFoundError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__["createErrorClass"])(function (_super) {
+ return function NotFoundErrorImpl(message) {
+ _super(this);
+ this.name = 'NotFoundError';
+ this.message = message;
};
- return OuterSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
+});
+//# sourceMappingURL=NotFoundError.js.map
+
+/***/ }),
+/* 90 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-//# sourceMappingURL=OuterSubscriber.js.map
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SequenceError", function() { return SequenceError; });
+/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16);
+var SequenceError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__["createErrorClass"])(function (_super) {
+ return function SequenceErrorImpl(message) {
+ _super(this);
+ this.name = 'SequenceError';
+ this.message = message;
+ };
+});
+//# sourceMappingURL=SequenceError.js.map
/***/ }),
-/* 71 */
+/* 91 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToResult", function() { return subscribeToResult; });
-/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72);
-/* harmony import */ var _subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(73);
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
-/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return TimeoutError; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return timeout; });
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50);
+/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(92);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66);
+/* harmony import */ var _util_createErrorClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(30);
+/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76);
-function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber) {
- if (innerSubscriber === void 0) {
- innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__["InnerSubscriber"](outerSubscriber, outerValue, outerIndex);
- }
- if (innerSubscriber.closed) {
- return undefined;
- }
- if (result instanceof _Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"]) {
- return result.subscribe(innerSubscriber);
- }
- return Object(_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(result)(innerSubscriber);
-}
-//# sourceMappingURL=subscribeToResult.js.map
+
+
+var TimeoutError = Object(_util_createErrorClass__WEBPACK_IMPORTED_MODULE_4__["createErrorClass"])(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"])(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"] : _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"])(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"])(subscriber, scheduler, function () {
+ try {
+ originalSourceSubscription.unsubscribe();
+ Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__["innerFrom"])(_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"])(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
+
/***/ }),
-/* 72 */
+/* 92 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InnerSubscriber", function() { return InnerSubscriber; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isValidDate", function() { return isValidDate; });
+function isValidDate(value) {
+ return value instanceof Date && !isNaN(value);
+}
+//# sourceMappingURL=isDate.js.map
-var InnerSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](InnerSubscriber, _super);
- function InnerSubscriber(parent, outerValue, outerIndex) {
- var _this = _super.call(this) || this;
- _this.parent = parent;
- _this.outerValue = outerValue;
- _this.outerIndex = outerIndex;
- _this.index = 0;
- return _this;
- }
- InnerSubscriber.prototype._next = function (value) {
- this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);
- };
- InnerSubscriber.prototype._error = function (error) {
- this.parent.notifyError(error, this);
- this.unsubscribe();
- };
- InnerSubscriber.prototype._complete = function () {
- this.parent.notifyComplete(this);
- this.unsubscribe();
- };
- return InnerSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
+/***/ }),
+/* 93 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-//# sourceMappingURL=InnerSubscriber.js.map
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return bindCallback; });
+/* harmony import */ var _bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(94);
+function bindCallback(callbackFunc, resultSelector, scheduler) {
+ return Object(_bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__["bindCallbackInternals"])(false, callbackFunc, resultSelector, scheduler);
+}
+//# sourceMappingURL=bindCallback.js.map
/***/ }),
-/* 73 */
+/* 94 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeTo", function() { return subscribeTo; });
-/* harmony import */ var _subscribeToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(48);
-/* harmony import */ var _subscribeToPromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(74);
-/* harmony import */ var _subscribeToIterable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(75);
-/* harmony import */ var _subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(77);
-/* harmony import */ var _isArrayLike__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(78);
-/* harmony import */ var _isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(79);
-/* harmony import */ var _isObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20);
-/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(76);
-/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(24);
-/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */
-
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindCallbackInternals", function() { return bindCallbackInternals; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62);
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
+/* harmony import */ var _operators_subscribeOn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(77);
+/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(95);
+/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(75);
+/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(39);
@@ -4694,888 +4948,626 @@ __webpack_require__.r(__webpack_exports__);
-var subscribeTo = function (result) {
- if (!!result && typeof result[_symbol_observable__WEBPACK_IMPORTED_MODULE_8__["observable"]] === 'function') {
- return Object(_subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__["subscribeToObservable"])(result);
- }
- else if (Object(_isArrayLike__WEBPACK_IMPORTED_MODULE_4__["isArrayLike"])(result)) {
- return Object(_subscribeToArray__WEBPACK_IMPORTED_MODULE_0__["subscribeToArray"])(result);
- }
- else if (Object(_isPromise__WEBPACK_IMPORTED_MODULE_5__["isPromise"])(result)) {
- return Object(_subscribeToPromise__WEBPACK_IMPORTED_MODULE_1__["subscribeToPromise"])(result);
- }
- else if (!!result && typeof result[_symbol_iterator__WEBPACK_IMPORTED_MODULE_7__["iterator"]] === 'function') {
- return Object(_subscribeToIterable__WEBPACK_IMPORTED_MODULE_2__["subscribeToIterable"])(result);
+function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {
+ if (resultSelector) {
+ if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__["isScheduler"])(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"])(resultSelector));
+ };
+ }
}
- else {
- var value = Object(_isObject__WEBPACK_IMPORTED_MODULE_6__["isObject"])(result) ? 'an invalid object' : "'" + result + "'";
- var msg = "You provided " + value + " where a stream was expected."
- + ' You can provide an Observable, Promise, Array, or Iterable.';
- throw new TypeError(msg);
+ 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"])(scheduler), Object(_operators_observeOn__WEBPACK_IMPORTED_MODULE_5__["observeOn"])(scheduler));
+ };
}
-};
-//# sourceMappingURL=subscribeTo.js.map
-
+ 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"]();
+ var uninitialized = true;
+ return new _Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"](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"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(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
/***/ }),
-/* 74 */
+/* 95 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToPromise", function() { return subscribeToPromise; });
-/* harmony import */ var _hostReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17);
-/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapOneOrManyArgs", function() { return mapOneOrManyArgs; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(96);
-var subscribeToPromise = function (promise) {
- return function (subscriber) {
- promise.then(function (value) {
- if (!subscriber.closed) {
- subscriber.next(value);
- subscriber.complete();
- }
- }, function (err) { return subscriber.error(err); })
- .then(null, _hostReportError__WEBPACK_IMPORTED_MODULE_0__["hostReportError"]);
- return subscriber;
- };
-};
-//# sourceMappingURL=subscribeToPromise.js.map
+var isArray = Array.isArray;
+function callOrApply(fn, args) {
+ return isArray(args) ? fn.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(args))) : fn(args);
+}
+function mapOneOrManyArgs(fn) {
+ return Object(_operators_map__WEBPACK_IMPORTED_MODULE_1__["map"])(function (args) { return callOrApply(fn, args); });
+}
+//# sourceMappingURL=mapOneOrManyArgs.js.map
/***/ }),
-/* 75 */
+/* 96 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToIterable", function() { return subscribeToIterable; });
-/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76);
-/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
-var subscribeToIterable = function (iterable) {
- return function (subscriber) {
- var iterator = iterable[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__["iterator"]]();
- do {
- var item = void 0;
- try {
- item = iterator.next();
- }
- catch (err) {
- subscriber.error(err);
- return subscriber;
- }
- if (item.done) {
- subscriber.complete();
- break;
- }
- subscriber.next(item.value);
- if (subscriber.closed) {
- break;
- }
- } while (true);
- if (typeof iterator.return === 'function') {
- subscriber.add(function () {
- if (iterator.return) {
- iterator.return();
- }
- });
- }
- return subscriber;
- };
-};
-//# sourceMappingURL=subscribeToIterable.js.map
+function map(project, thisArg) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var index = 0;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, function (value) {
+ subscriber.next(project.call(thisArg, value, index++));
+ }));
+ });
+}
+//# sourceMappingURL=map.js.map
/***/ }),
-/* 76 */
+/* 97 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSymbolIterator", function() { return getSymbolIterator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iterator", function() { return iterator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$$iterator", function() { return $$iterator; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-function getSymbolIterator() {
- if (typeof Symbol !== 'function' || !Symbol.iterator) {
- return '@@iterator';
- }
- return Symbol.iterator;
-}
-var iterator = /*@__PURE__*/ getSymbolIterator();
-var $$iterator = iterator;
-//# sourceMappingURL=iterator.js.map
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return bindNodeCallback; });
+/* harmony import */ var _bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(94);
+function bindNodeCallback(callbackFunc, resultSelector, scheduler) {
+ return Object(_bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__["bindCallbackInternals"])(true, callbackFunc, resultSelector, scheduler);
+}
+//# sourceMappingURL=bindNodeCallback.js.map
/***/ }),
-/* 77 */
+/* 98 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToObservable", function() { return subscribeToObservable; });
-/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24);
-/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatestInit", function() { return combineLatestInit; });
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
+/* harmony import */ var _util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(99);
+/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(63);
+/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26);
+/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(95);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(61);
+/* harmony import */ var _util_createObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(100);
+/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(30);
+/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(76);
+
+
+
+
+
-var subscribeToObservable = function (obj) {
+
+
+
+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"])(args);
+ var resultSelector = Object(_util_args__WEBPACK_IMPORTED_MODULE_5__["popResultSelector"])(args);
+ var _a = Object(_util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__["argsArgArrayOrObject"])(args), observables = _a.args, keys = _a.keys;
+ if (observables.length === 0) {
+ return Object(_from__WEBPACK_IMPORTED_MODULE_2__["from"])([], scheduler);
+ }
+ var result = new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](combineLatestInit(observables, scheduler, keys
+ ?
+ function (values) { return Object(_util_createObject__WEBPACK_IMPORTED_MODULE_6__["createObject"])(keys, values); }
+ :
+ _util_identity__WEBPACK_IMPORTED_MODULE_3__["identity"]));
+ return resultSelector ? result.pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__["mapOneOrManyArgs"])(resultSelector)) : result;
+}
+function combineLatestInit(observables, scheduler, valueTransform) {
+ if (valueTransform === void 0) { valueTransform = _util_identity__WEBPACK_IMPORTED_MODULE_3__["identity"]; }
return function (subscriber) {
- var obs = obj[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__["observable"]]();
- if (typeof obs.subscribe !== 'function') {
- throw new TypeError('Provided object does not correctly implement Symbol.observable');
- }
- else {
- return obs.subscribe(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"])(observables[i], scheduler);
+ var hasFirstValue = false;
+ source.subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_7__["createOperatorSubscriber"])(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);
};
-};
-//# sourceMappingURL=subscribeToObservable.js.map
-
+}
+function maybeSchedule(scheduler, execute, subscription) {
+ if (scheduler) {
+ Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_8__["executeSchedule"])(subscription, scheduler, execute);
+ }
+ else {
+ execute();
+ }
+}
+//# sourceMappingURL=combineLatest.js.map
/***/ }),
-/* 78 */
+/* 99 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArrayLike", function() { return isArrayLike; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });
-//# sourceMappingURL=isArrayLike.js.map
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "argsArgArrayOrObject", 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
/***/ }),
-/* 79 */
+/* 100 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPromise", function() { return isPromise; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-function isPromise(value) {
- return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createObject", function() { return createObject; });
+function createObject(keys, values) {
+ return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});
}
-//# sourceMappingURL=isPromise.js.map
-
+//# sourceMappingURL=createObject.js.map
/***/ }),
-/* 80 */
+/* 101 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat; });
-/* harmony import */ var _of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(45);
-/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81);
-/** PURE_IMPORTS_START _of,_operators_concatAll PURE_IMPORTS_END */
+/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(102);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61);
+/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(63);
+
function concat() {
- var observables = [];
+ var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i] = arguments[_i];
+ args[_i] = arguments[_i];
}
- return Object(_operators_concatAll__WEBPACK_IMPORTED_MODULE_1__["concatAll"])()(_of__WEBPACK_IMPORTED_MODULE_0__["of"].apply(void 0, observables));
+ return Object(_operators_concatAll__WEBPACK_IMPORTED_MODULE_0__["concatAll"])()(Object(_from__WEBPACK_IMPORTED_MODULE_2__["from"])(args, Object(_util_args__WEBPACK_IMPORTED_MODULE_1__["popScheduler"])(args)));
}
//# sourceMappingURL=concat.js.map
-
/***/ }),
-/* 81 */
+/* 102 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return concatAll; });
-/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82);
-/** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */
+/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(103);
function concatAll() {
return Object(_mergeAll__WEBPACK_IMPORTED_MODULE_0__["mergeAll"])(1);
}
//# sourceMappingURL=concatAll.js.map
-
/***/ }),
-/* 82 */
+/* 103 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return mergeAll; });
-/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(83);
+/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(104);
/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26);
-/** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */
function mergeAll(concurrent) {
- if (concurrent === void 0) {
- concurrent = Number.POSITIVE_INFINITY;
- }
+ if (concurrent === void 0) { concurrent = Infinity; }
return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"], concurrent);
}
//# sourceMappingURL=mergeAll.js.map
-
/***/ }),
-/* 83 */
+/* 104 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return mergeMap; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeMapOperator", function() { return MergeMapOperator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeMapSubscriber", function() { return MergeMapSubscriber; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return flatMap; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67);
-/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */
+/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(96);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
+/* harmony import */ var _mergeInternals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(105);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13);
+
function mergeMap(project, resultSelector, concurrent) {
- if (concurrent === void 0) {
- concurrent = Number.POSITIVE_INFINITY;
- }
- if (typeof resultSelector === 'function') {
- return function (source) { return source.pipe(mergeMap(function (a, i) { return Object(_observable_from__WEBPACK_IMPORTED_MODULE_2__["from"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_1__["map"])(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };
+ if (concurrent === void 0) { concurrent = Infinity; }
+ if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_4__["isFunction"])(resultSelector)) {
+ return mergeMap(function (a, i) { return Object(_map__WEBPACK_IMPORTED_MODULE_0__["map"])(function (b, ii) { return resultSelector(a, b, i, ii); })(Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__["innerFrom"])(project(a, i))); }, concurrent);
}
else if (typeof resultSelector === 'number') {
concurrent = resultSelector;
}
- return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__["operate"])(function (source, subscriber) { return Object(_mergeInternals__WEBPACK_IMPORTED_MODULE_3__["mergeInternals"])(source, subscriber, project, concurrent); });
}
-var MergeMapOperator = /*@__PURE__*/ (function () {
- function MergeMapOperator(project, concurrent) {
- if (concurrent === void 0) {
- concurrent = Number.POSITIVE_INFINITY;
- }
- this.project = project;
- this.concurrent = concurrent;
- }
- MergeMapOperator.prototype.call = function (observer, source) {
- return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));
- };
- return MergeMapOperator;
-}());
-
-var MergeMapSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MergeMapSubscriber, _super);
- function MergeMapSubscriber(destination, project, concurrent) {
- if (concurrent === void 0) {
- concurrent = Number.POSITIVE_INFINITY;
- }
- var _this = _super.call(this, destination) || this;
- _this.project = project;
- _this.concurrent = concurrent;
- _this.hasCompleted = false;
- _this.buffer = [];
- _this.active = 0;
- _this.index = 0;
- return _this;
- }
- MergeMapSubscriber.prototype._next = function (value) {
- if (this.active < this.concurrent) {
- this._tryNext(value);
- }
- else {
- this.buffer.push(value);
- }
- };
- MergeMapSubscriber.prototype._tryNext = function (value) {
- var result;
- var index = this.index++;
- try {
- result = this.project(value, index);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.active++;
- this._innerSub(result);
- };
- MergeMapSubscriber.prototype._innerSub = function (ish) {
- var innerSubscriber = new _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["SimpleInnerSubscriber"](this);
- var destination = this.destination;
- destination.add(innerSubscriber);
- var innerSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["innerSubscribe"])(ish, innerSubscriber);
- if (innerSubscription !== innerSubscriber) {
- destination.add(innerSubscription);
- }
- };
- MergeMapSubscriber.prototype._complete = function () {
- this.hasCompleted = true;
- if (this.active === 0 && this.buffer.length === 0) {
- this.destination.complete();
- }
- this.unsubscribe();
- };
- MergeMapSubscriber.prototype.notifyNext = function (innerValue) {
- this.destination.next(innerValue);
- };
- MergeMapSubscriber.prototype.notifyComplete = function () {
- var buffer = this.buffer;
- this.active--;
- if (buffer.length > 0) {
- this._next(buffer.shift());
- }
- else if (this.active === 0 && this.hasCompleted) {
- this.destination.complete();
- }
- };
- return MergeMapSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["SimpleOuterSubscriber"]));
-
-var flatMap = mergeMap;
//# sourceMappingURL=mergeMap.js.map
-
/***/ }),
-/* 84 */
+/* 105 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "from", function() { return from; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(73);
-/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(85);
-/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeInternals", function() { return mergeInternals; });
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(66);
+/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(76);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
-function from(input, scheduler) {
- if (!scheduler) {
- if (input instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]) {
- return input;
+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();
}
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](Object(_util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(input));
- }
- else {
- return Object(_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__["scheduled"])(input, scheduler);
- }
-}
-//# sourceMappingURL=from.js.map
-
-
-/***/ }),
-/* 85 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return scheduled; });
-/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86);
-/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(87);
-/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49);
-/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(88);
-/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(89);
-/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(79);
-/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(78);
-/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(90);
-/** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */
-
-
-
-
-
-
-
-
-function scheduled(input, scheduler) {
- if (input != null) {
- if (Object(_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__["isInteropObservable"])(input)) {
- return Object(_scheduleObservable__WEBPACK_IMPORTED_MODULE_0__["scheduleObservable"])(input, scheduler);
- }
- else if (Object(_util_isPromise__WEBPACK_IMPORTED_MODULE_5__["isPromise"])(input)) {
- return Object(_schedulePromise__WEBPACK_IMPORTED_MODULE_1__["schedulePromise"])(input, scheduler);
- }
- else if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_6__["isArrayLike"])(input)) {
- return Object(_scheduleArray__WEBPACK_IMPORTED_MODULE_2__["scheduleArray"])(input, scheduler);
- }
- else if (Object(_util_isIterable__WEBPACK_IMPORTED_MODULE_7__["isIterable"])(input) || typeof input === 'string') {
- return Object(_scheduleIterable__WEBPACK_IMPORTED_MODULE_3__["scheduleIterable"])(input, scheduler);
- }
- }
- throw new TypeError((input !== null && typeof input || input) + ' is not observable');
-}
-//# sourceMappingURL=scheduled.js.map
-
-
-/***/ }),
-/* 86 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleObservable", function() { return scheduleObservable; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
-/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
-/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */
-
-
-
-function scheduleObservable(input, scheduler) {
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"]();
- sub.add(scheduler.schedule(function () {
- var observable = input[_symbol_observable__WEBPACK_IMPORTED_MODULE_2__["observable"]]();
- sub.add(observable.subscribe({
- next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },
- error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },
- complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },
- }));
- }));
- return sub;
- });
-}
-//# sourceMappingURL=scheduleObservable.js.map
-
-
-/***/ }),
-/* 87 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "schedulePromise", function() { return schedulePromise; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
-/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */
-
-
-function schedulePromise(input, scheduler) {
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"]();
- sub.add(scheduler.schedule(function () {
- return input.then(function (value) {
- sub.add(scheduler.schedule(function () {
- subscriber.next(value);
- sub.add(scheduler.schedule(function () { return subscriber.complete(); }));
- }));
- }, function (err) {
- sub.add(scheduler.schedule(function () { return subscriber.error(err); }));
- });
- }));
- return sub;
- });
-}
-//# sourceMappingURL=schedulePromise.js.map
-
-
-/***/ }),
-/* 88 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleIterable", function() { return scheduleIterable; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
-/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(76);
-/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */
-
-
-
-function scheduleIterable(input, scheduler) {
- if (!input) {
- throw new Error('Iterable cannot be null');
- }
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"]();
- var iterator;
- sub.add(function () {
- if (iterator && typeof iterator.return === 'function') {
- iterator.return();
+ };
+ 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"])(project(value, index++)).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function (innerValue) {
+ onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);
+ if (expand) {
+ outerNext(innerValue);
}
- });
- sub.add(scheduler.schedule(function () {
- iterator = input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_2__["iterator"]]();
- sub.add(scheduler.schedule(function () {
- if (subscriber.closed) {
- return;
- }
- var value;
- var done;
+ else {
+ subscriber.next(innerValue);
+ }
+ }, function () {
+ innerComplete = true;
+ }, undefined, function () {
+ if (innerComplete) {
try {
- var result = iterator.next();
- value = result.value;
- done = result.done;
+ active--;
+ var _loop_1 = function () {
+ var bufferedValue = buffer.shift();
+ if (innerSubScheduler) {
+ Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__["executeSchedule"])(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });
+ }
+ else {
+ doInnerSub(bufferedValue);
+ }
+ };
+ while (buffer.length && active < concurrent) {
+ _loop_1();
+ }
+ checkComplete();
}
catch (err) {
subscriber.error(err);
- return;
- }
- if (done) {
- subscriber.complete();
- }
- else {
- subscriber.next(value);
- this.schedule();
}
- }));
+ }
}));
- return sub;
- });
-}
-//# sourceMappingURL=scheduleIterable.js.map
-
-
-/***/ }),
-/* 89 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isInteropObservable", function() { return isInteropObservable; });
-/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24);
-/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */
-
-function isInteropObservable(input) {
- return input && typeof input[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__["observable"]] === 'function';
-}
-//# sourceMappingURL=isInteropObservable.js.map
-
-
-/***/ }),
-/* 90 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIterable", function() { return isIterable; });
-/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76);
-/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */
-
-function isIterable(input) {
- return input && typeof input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__["iterator"]] === 'function';
+ };
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, outerNext, function () {
+ isComplete = true;
+ checkComplete();
+ }));
+ return function () {
+ additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();
+ };
}
-//# sourceMappingURL=isIterable.js.map
-
+//# sourceMappingURL=mergeInternals.js.map
/***/ }),
-/* 91 */
+/* 106 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SimpleInnerSubscriber", function() { return SimpleInnerSubscriber; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComplexInnerSubscriber", function() { return ComplexInnerSubscriber; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SimpleOuterSubscriber", function() { return SimpleOuterSubscriber; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComplexOuterSubscriber", function() { return ComplexOuterSubscriber; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "innerSubscribe", function() { return innerSubscribe; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
-/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(73);
-/** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_util_subscribeTo PURE_IMPORTS_END */
-
-
-
-
-var SimpleInnerSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SimpleInnerSubscriber, _super);
- function SimpleInnerSubscriber(parent) {
- var _this = _super.call(this) || this;
- _this.parent = parent;
- return _this;
- }
- SimpleInnerSubscriber.prototype._next = function (value) {
- this.parent.notifyNext(value);
- };
- SimpleInnerSubscriber.prototype._error = function (error) {
- this.parent.notifyError(error);
- this.unsubscribe();
- };
- SimpleInnerSubscriber.prototype._complete = function () {
- this.parent.notifyComplete();
- this.unsubscribe();
- };
- return SimpleInnerSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "connectable", function() { return connectable; });
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
+/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(107);
-var ComplexInnerSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ComplexInnerSubscriber, _super);
- function ComplexInnerSubscriber(parent, outerValue, outerIndex) {
- var _this = _super.call(this) || this;
- _this.parent = parent;
- _this.outerValue = outerValue;
- _this.outerIndex = outerIndex;
- return _this;
- }
- ComplexInnerSubscriber.prototype._next = function (value) {
- this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);
- };
- ComplexInnerSubscriber.prototype._error = function (error) {
- this.parent.notifyError(error);
- this.unsubscribe();
- };
- ComplexInnerSubscriber.prototype._complete = function () {
- this.parent.notifyComplete(this);
- this.unsubscribe();
- };
- return ComplexInnerSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-var SimpleOuterSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SimpleOuterSubscriber, _super);
- function SimpleOuterSubscriber() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- SimpleOuterSubscriber.prototype.notifyNext = function (innerValue) {
- this.destination.next(innerValue);
- };
- SimpleOuterSubscriber.prototype.notifyError = function (err) {
- this.destination.error(err);
- };
- SimpleOuterSubscriber.prototype.notifyComplete = function () {
- this.destination.complete();
- };
- return SimpleOuterSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-var ComplexOuterSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ComplexOuterSubscriber, _super);
- function ComplexOuterSubscriber() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- ComplexOuterSubscriber.prototype.notifyNext = function (_outerValue, innerValue, _outerIndex, _innerSub) {
- this.destination.next(innerValue);
- };
- ComplexOuterSubscriber.prototype.notifyError = function (error) {
- this.destination.error(error);
- };
- ComplexOuterSubscriber.prototype.notifyComplete = function (_innerSub) {
- this.destination.complete();
+var DEFAULT_CONFIG = {
+ connector: function () { return new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"](); },
+ 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"](function (subscriber) {
+ return subject.subscribe(subscriber);
+ });
+ result.connect = function () {
+ if (!connection || connection.closed) {
+ connection = Object(_defer__WEBPACK_IMPORTED_MODULE_2__["defer"])(function () { return source; }).subscribe(subject);
+ if (resetOnDisconnect) {
+ connection.add(function () { return (subject = connector()); });
+ }
+ }
+ return connection;
};
- return ComplexOuterSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-
-function innerSubscribe(result, innerSubscriber) {
- if (innerSubscriber.closed) {
- return undefined;
- }
- if (result instanceof _Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"]) {
- return result.subscribe(innerSubscriber);
- }
- return Object(_util_subscribeTo__WEBPACK_IMPORTED_MODULE_3__["subscribeTo"])(result)(innerSubscriber);
+ return result;
}
-//# sourceMappingURL=innerSubscribe.js.map
-
+//# sourceMappingURL=connectable.js.map
/***/ }),
-/* 92 */
+/* 107 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return defer; });
/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84);
-/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
-/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */
-
+/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66);
function defer(observableFactory) {
return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var input;
- try {
- input = observableFactory();
- }
- catch (err) {
- subscriber.error(err);
- return undefined;
- }
- var source = input ? Object(_from__WEBPACK_IMPORTED_MODULE_1__["from"])(input) : Object(_empty__WEBPACK_IMPORTED_MODULE_2__["empty"])();
- return source.subscribe(subscriber);
+ Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__["innerFrom"])(observableFactory()).subscribe(subscriber);
});
}
//# sourceMappingURL=defer.js.map
-
/***/ }),
-/* 93 */
+/* 108 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return forkJoin; });
/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);
-/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(67);
-/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
-/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(84);
-/** PURE_IMPORTS_START _Observable,_util_isArray,_operators_map,_util_isObject,_from PURE_IMPORTS_END */
+/* harmony import */ var _util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(99);
+/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(66);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(61);
+/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30);
+/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(95);
+/* harmony import */ var _util_createObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(100);
+
+
function forkJoin() {
- var sources = [];
+ var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
- sources[_i] = arguments[_i];
- }
- if (sources.length === 1) {
- var first_1 = sources[0];
- if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(first_1)) {
- return forkJoinInternal(first_1, null);
- }
- if (Object(_util_isObject__WEBPACK_IMPORTED_MODULE_3__["isObject"])(first_1) && Object.getPrototypeOf(first_1) === Object.prototype) {
- var keys = Object.keys(first_1);
- return forkJoinInternal(keys.map(function (key) { return first_1[key]; }), keys);
- }
- }
- if (typeof sources[sources.length - 1] === 'function') {
- var resultSelector_1 = sources.pop();
- sources = (sources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(sources[0])) ? sources[0] : sources;
- return forkJoinInternal(sources, null).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_2__["map"])(function (args) { return resultSelector_1.apply(void 0, args); }));
+ args[_i] = arguments[_i];
}
- return forkJoinInternal(sources, null);
-}
-function forkJoinInternal(sources, keys) {
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var len = sources.length;
- if (len === 0) {
+ var resultSelector = Object(_util_args__WEBPACK_IMPORTED_MODULE_3__["popResultSelector"])(args);
+ var _a = Object(_util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__["argsArgArrayOrObject"])(args), sources = _a.args, keys = _a.keys;
+ var result = new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
+ var length = sources.length;
+ if (!length) {
subscriber.complete();
return;
}
- var values = new Array(len);
- var completed = 0;
- var emitted = 0;
- var _loop_1 = function (i) {
- var source = Object(_from__WEBPACK_IMPORTED_MODULE_4__["from"])(sources[i]);
+ var values = new Array(length);
+ var remainingCompletions = length;
+ var remainingEmissions = length;
+ var _loop_1 = function (sourceIndex) {
var hasValue = false;
- subscriber.add(source.subscribe({
- next: function (value) {
- if (!hasValue) {
- hasValue = true;
- emitted++;
- }
- values[i] = value;
- },
- error: function (err) { return subscriber.error(err); },
- complete: function () {
- completed++;
- if (completed === len || !hasValue) {
- if (emitted === len) {
- subscriber.next(keys ?
- keys.reduce(function (result, key, i) { return (result[key] = values[i], result); }, {}) :
- values);
- }
- subscriber.complete();
+ Object(_innerFrom__WEBPACK_IMPORTED_MODULE_2__["innerFrom"])(sources[sourceIndex]).subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__["createOperatorSubscriber"])(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"])(keys, values) : values);
}
+ subscriber.complete();
}
}));
};
- for (var i = 0; i < len; i++) {
- _loop_1(i);
+ for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) {
+ _loop_1(sourceIndex);
}
});
+ return resultSelector ? result.pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_5__["mapOneOrManyArgs"])(resultSelector)) : result;
}
//# sourceMappingURL=forkJoin.js.map
-
/***/ }),
-/* 94 */
+/* 109 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return fromEvent; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);
-/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
-/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67);
-/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66);
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
+/* harmony import */ var _operators_mergeMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(104);
+/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(67);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13);
+/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(95);
+
-var toString = /*@__PURE__*/ (function () { return Object.prototype.toString; })();
+
+
+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_2__["isFunction"])(options)) {
+ if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__["isFunction"])(options)) {
resultSelector = options;
options = undefined;
}
if (resultSelector) {
- return fromEvent(target, eventName, options).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_3__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));
+ return fromEvent(target, eventName, options).pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_6__["mapOneOrManyArgs"])(resultSelector));
+ }
+ var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(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"])(target)) {
+ return Object(_operators_mergeMap__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function (subTarget) { return fromEvent(subTarget, eventName, options); })(Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__["innerFrom"])(target));
+ }
+ }
+ if (!add) {
+ throw new TypeError('Invalid event target');
}
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- function handler(e) {
- if (arguments.length > 1) {
- subscriber.next(Array.prototype.slice.call(arguments));
- }
- else {
- subscriber.next(e);
+ return new _Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"](function (subscriber) {
+ var handler = function () {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
}
- }
- setupSubscription(target, eventName, handler, subscriber, options);
+ return subscriber.next(1 < args.length ? args : args[0]);
+ };
+ add(handler);
+ return function () { return remove(handler); };
});
}
-function setupSubscription(sourceObj, eventName, handler, subscriber, options) {
- var unsubscribe;
- if (isEventTarget(sourceObj)) {
- var source_1 = sourceObj;
- sourceObj.addEventListener(eventName, handler, options);
- unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };
- }
- else if (isJQueryStyleEventEmitter(sourceObj)) {
- var source_2 = sourceObj;
- sourceObj.on(eventName, handler);
- unsubscribe = function () { return source_2.off(eventName, handler); };
- }
- else if (isNodeStyleEventEmitter(sourceObj)) {
- var source_3 = sourceObj;
- sourceObj.addListener(eventName, handler);
- unsubscribe = function () { return source_3.removeListener(eventName, handler); };
- }
- else if (sourceObj && sourceObj.length) {
- for (var i = 0, len = sourceObj.length; i < len; i++) {
- setupSubscription(sourceObj[i], eventName, handler, subscriber, options);
- }
- }
- else {
- throw new TypeError('Invalid event target');
- }
- subscriber.add(unsubscribe);
+function toCommonHandlerRegistry(target, eventName) {
+ return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };
}
-function isNodeStyleEventEmitter(sourceObj) {
- return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';
+function isNodeStyleEventEmitter(target) {
+ return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__["isFunction"])(target.addListener) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__["isFunction"])(target.removeListener);
}
-function isJQueryStyleEventEmitter(sourceObj) {
- return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';
+function isJQueryStyleEventEmitter(target) {
+ return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__["isFunction"])(target.on) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__["isFunction"])(target.off);
}
-function isEventTarget(sourceObj) {
- return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';
+function isEventTarget(target) {
+ return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__["isFunction"])(target.addEventListener) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__["isFunction"])(target.removeEventListener);
}
//# sourceMappingURL=fromEvent.js.map
-
/***/ }),
-/* 95 */
+/* 110 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return fromEventPattern; });
/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);
-/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
-/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67);
-/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */
-
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
+/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(95);
function fromEventPattern(addHandler, removeHandler, resultSelector) {
if (resultSelector) {
- return fromEventPattern(addHandler, removeHandler).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_3__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));
+ return fromEventPattern(addHandler, removeHandler).pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_2__["mapOneOrManyArgs"])(resultSelector));
}
return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
var handler = function () {
@@ -5585,283 +5577,195 @@ function fromEventPattern(addHandler, removeHandler, resultSelector) {
}
return subscriber.next(e.length === 1 ? e[0] : e);
};
- var retValue;
- try {
- retValue = addHandler(handler);
- }
- catch (err) {
- subscriber.error(err);
- return undefined;
- }
- if (!Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(removeHandler)) {
- return undefined;
- }
- return function () { return removeHandler(handler, retValue); };
+ var retValue = addHandler(handler);
+ return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(removeHandler) ? function () { return removeHandler(handler, retValue); } : undefined;
});
}
//# sourceMappingURL=fromEventPattern.js.map
-
/***/ }),
-/* 96 */
+/* 111 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return generate; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26);
-/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(46);
-/** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */
+/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62);
+/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(107);
+/* harmony import */ var _scheduled_scheduleIterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(80);
-function generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) {
+
+
+function generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) {
+ var _a, _b;
var resultSelector;
var initialState;
- if (arguments.length == 1) {
- var options = initialStateOrOptions;
- initialState = options.initialState;
- condition = options.condition;
- iterate = options.iterate;
- resultSelector = options.resultSelector || _util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"];
- scheduler = options.scheduler;
- }
- else if (resultSelectorOrObservable === undefined || Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_2__["isScheduler"])(resultSelectorOrObservable)) {
- initialState = initialStateOrOptions;
- resultSelector = _util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"];
- scheduler = resultSelectorOrObservable;
+ 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"] : _b, scheduler = _a.scheduler);
}
else {
initialState = initialStateOrOptions;
- resultSelector = resultSelectorOrObservable;
- }
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var state = initialState;
- if (scheduler) {
- return scheduler.schedule(dispatch, 0, {
- subscriber: subscriber,
- iterate: iterate,
- condition: condition,
- resultSelector: resultSelector,
- state: state
- });
+ if (!resultSelectorOrScheduler || Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_2__["isScheduler"])(resultSelectorOrScheduler)) {
+ resultSelector = _util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"];
+ scheduler = resultSelectorOrScheduler;
}
- do {
- if (condition) {
- var conditionResult = void 0;
- try {
- conditionResult = condition(state);
- }
- catch (err) {
- subscriber.error(err);
- return undefined;
- }
- if (!conditionResult) {
- subscriber.complete();
- break;
- }
- }
- var value = void 0;
- try {
- value = resultSelector(state);
- }
- catch (err) {
- subscriber.error(err);
- return undefined;
- }
- subscriber.next(value);
- if (subscriber.closed) {
- break;
- }
- try {
- state = iterate(state);
- }
- catch (err) {
- subscriber.error(err);
- return undefined;
+ else {
+ resultSelector = resultSelectorOrScheduler;
+ }
+ }
+ function gen() {
+ var state;
+ return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__generator"])(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];
}
- } while (true);
- return undefined;
- });
-}
-function dispatch(state) {
- var subscriber = state.subscriber, condition = state.condition;
- if (subscriber.closed) {
- return undefined;
- }
- if (state.needIterate) {
- try {
- state.state = state.iterate(state.state);
- }
- catch (err) {
- subscriber.error(err);
- return undefined;
- }
- }
- else {
- state.needIterate = true;
- }
- if (condition) {
- var conditionResult = void 0;
- try {
- conditionResult = condition(state.state);
- }
- catch (err) {
- subscriber.error(err);
- return undefined;
- }
- if (!conditionResult) {
- subscriber.complete();
- return undefined;
- }
- if (subscriber.closed) {
- return undefined;
- }
- }
- var value;
- try {
- value = state.resultSelector(state.state);
- }
- catch (err) {
- subscriber.error(err);
- return undefined;
- }
- if (subscriber.closed) {
- return undefined;
- }
- subscriber.next(value);
- if (subscriber.closed) {
- return undefined;
+ });
}
- return this.schedule(state);
+ return Object(_defer__WEBPACK_IMPORTED_MODULE_3__["defer"])((scheduler
+ ?
+ function () { return Object(_scheduled_scheduleIterable__WEBPACK_IMPORTED_MODULE_4__["scheduleIterable"])(gen(), scheduler); }
+ :
+ gen));
}
//# sourceMappingURL=generate.js.map
-
/***/ }),
-/* 97 */
+/* 112 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return iif; });
-/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(92);
-/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44);
-/** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */
-
+/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(107);
function iif(condition, trueResult, falseResult) {
- if (trueResult === void 0) {
- trueResult = _empty__WEBPACK_IMPORTED_MODULE_1__["EMPTY"];
- }
- if (falseResult === void 0) {
- falseResult = _empty__WEBPACK_IMPORTED_MODULE_1__["EMPTY"];
- }
- return Object(_defer__WEBPACK_IMPORTED_MODULE_0__["defer"])(function () { return condition() ? trueResult : falseResult; });
+ return Object(_defer__WEBPACK_IMPORTED_MODULE_0__["defer"])(function () { return (condition() ? trueResult : falseResult); });
}
//# sourceMappingURL=iif.js.map
-
/***/ }),
-/* 98 */
+/* 113 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return interval; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56);
-/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(99);
-/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */
-
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50);
+/* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(114);
function interval(period, scheduler) {
- if (period === void 0) {
- period = 0;
- }
- if (scheduler === void 0) {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"];
- }
- if (!Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__["isNumeric"])(period) || period < 0) {
+ if (period === void 0) { period = 0; }
+ if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["asyncScheduler"]; }
+ if (period < 0) {
period = 0;
}
- if (!scheduler || typeof scheduler.schedule !== 'function') {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"];
- }
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- subscriber.add(scheduler.schedule(dispatch, period, { subscriber: subscriber, counter: 0, period: period }));
- return subscriber;
- });
-}
-function dispatch(state) {
- var subscriber = state.subscriber, counter = state.counter, period = state.period;
- subscriber.next(counter);
- this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period);
+ return Object(_timer__WEBPACK_IMPORTED_MODULE_1__["timer"])(period, period, scheduler);
}
//# sourceMappingURL=interval.js.map
-
/***/ }),
-/* 99 */
+/* 114 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumeric", function() { return isNumeric; });
-/* harmony import */ var _isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19);
-/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return timer; });
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50);
+/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62);
+/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(92);
-function isNumeric(val) {
- return !Object(_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(val) && (val - parseFloat(val) + 1) >= 0;
-}
-//# sourceMappingURL=isNumeric.js.map
+
+function timer(dueTime, intervalOrScheduler, scheduler) {
+ if (dueTime === void 0) { dueTime = 0; }
+ if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; }
+ var intervalDuration = -1;
+ if (intervalOrScheduler != null) {
+ if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_2__["isScheduler"])(intervalOrScheduler)) {
+ scheduler = intervalOrScheduler;
+ }
+ else {
+ intervalDuration = intervalOrScheduler;
+ }
+ }
+ return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
+ var due = Object(_util_isDate__WEBPACK_IMPORTED_MODULE_3__["isValidDate"])(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
+
/***/ }),
-/* 100 */
+/* 115 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46);
-/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82);
-/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(47);
-/** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */
+/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(103);
+/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66);
+/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(61);
+/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(63);
+
function merge() {
- var observables = [];
+ var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i] = arguments[_i];
- }
- var concurrent = Number.POSITIVE_INFINITY;
- var scheduler = null;
- var last = observables[observables.length - 1];
- if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__["isScheduler"])(last)) {
- scheduler = observables.pop();
- if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {
- concurrent = observables.pop();
- }
- }
- else if (typeof last === 'number') {
- concurrent = observables.pop();
- }
- if (scheduler === null && observables.length === 1 && observables[0] instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]) {
- return observables[0];
+ args[_i] = arguments[_i];
}
- return Object(_operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__["mergeAll"])(concurrent)(Object(_fromArray__WEBPACK_IMPORTED_MODULE_3__["fromArray"])(observables, scheduler));
+ var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_3__["popScheduler"])(args);
+ var concurrent = Object(_util_args__WEBPACK_IMPORTED_MODULE_3__["popNumber"])(args, Infinity);
+ var sources = args;
+ return !sources.length
+ ?
+ _empty__WEBPACK_IMPORTED_MODULE_2__["EMPTY"]
+ : sources.length === 1
+ ?
+ Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__["innerFrom"])(sources[0])
+ :
+ Object(_operators_mergeAll__WEBPACK_IMPORTED_MODULE_0__["mergeAll"])(concurrent)(Object(_from__WEBPACK_IMPORTED_MODULE_4__["from"])(sources, scheduler));
}
//# sourceMappingURL=merge.js.map
-
/***/ }),
-/* 101 */
+/* 116 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -5869,29 +5773,52 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return NEVER; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "never", function() { return never; });
/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61);
-/** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21);
-var NEVER = /*@__PURE__*/ new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](_util_noop__WEBPACK_IMPORTED_MODULE_1__["noop"]);
+var NEVER = new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](_util_noop__WEBPACK_IMPORTED_MODULE_1__["noop"]);
function never() {
return NEVER;
}
//# sourceMappingURL=never.js.map
+/***/ }),
+/* 117 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return onErrorResumeNext; });
+/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(59);
+/* harmony import */ var _operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(118);
+/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(119);
+
+
+
+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"])(Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__["argsOrArgArray"])(sources))(_empty__WEBPACK_IMPORTED_MODULE_0__["EMPTY"]);
+}
+//# sourceMappingURL=onErrorResumeNext.js.map
/***/ }),
-/* 102 */
+/* 118 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return onErrorResumeNext; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84);
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19);
-/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
-/** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(66);
+/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(119);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21);
+
+
@@ -5901,3159 +5828,3676 @@ function onErrorResumeNext() {
for (var _i = 0; _i < arguments.length; _i++) {
sources[_i] = arguments[_i];
}
- if (sources.length === 0) {
- return _empty__WEBPACK_IMPORTED_MODULE_3__["EMPTY"];
- }
- var first = sources[0], remainder = sources.slice(1);
- if (sources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(first)) {
- return onErrorResumeNext.apply(void 0, first);
- }
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var subNext = function () { return subscriber.add(onErrorResumeNext.apply(void 0, remainder).subscribe(subscriber)); };
- return Object(_from__WEBPACK_IMPORTED_MODULE_1__["from"])(first).subscribe({
- next: function (value) { subscriber.next(value); },
- error: subNext,
- complete: subNext,
- });
+ var nextSources = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__["argsOrArgArray"])(sources);
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ var remaining = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(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"])(remaining.shift());
+ }
+ catch (err) {
+ subscribeNext();
+ return;
+ }
+ var innerSub = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__["createOperatorSubscriber"])(subscriber, undefined, _util_noop__WEBPACK_IMPORTED_MODULE_5__["noop"], _util_noop__WEBPACK_IMPORTED_MODULE_5__["noop"]);
+ nextSource.subscribe(innerSub);
+ innerSub.add(subscribeNext);
+ }
+ else {
+ subscriber.complete();
+ }
+ }
+ };
+ subscribeNext();
});
}
//# sourceMappingURL=onErrorResumeNext.js.map
+/***/ }),
+/* 119 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "argsOrArgArray", function() { return argsOrArgArray; });
+var isArray = Array.isArray;
+function argsOrArgArray(args) {
+ return args.length === 1 && isArray(args[0]) ? args[0] : args;
+}
+//# sourceMappingURL=argsOrArgArray.js.map
/***/ }),
-/* 103 */
+/* 120 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return pairs; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return dispatch; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
-/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */
-
+/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(63);
function pairs(obj, scheduler) {
- if (!scheduler) {
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var keys = Object.keys(obj);
- for (var i = 0; i < keys.length && !subscriber.closed; i++) {
- var key = keys[i];
- if (obj.hasOwnProperty(key)) {
- subscriber.next([key, obj[key]]);
- }
- }
- subscriber.complete();
- });
- }
- else {
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var keys = Object.keys(obj);
- var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"]();
- subscription.add(scheduler.schedule(dispatch, 0, { keys: keys, index: 0, subscriber: subscriber, subscription: subscription, obj: obj }));
- return subscription;
- });
- }
-}
-function dispatch(state) {
- var keys = state.keys, index = state.index, subscriber = state.subscriber, subscription = state.subscription, obj = state.obj;
- if (!subscriber.closed) {
- if (index < keys.length) {
- var key = keys[index];
- subscriber.next([key, obj[key]]);
- subscription.add(this.schedule({ keys: keys, index: index + 1, subscriber: subscriber, subscription: subscription, obj: obj }));
- }
- else {
- subscriber.complete();
- }
- }
+ return Object(_from__WEBPACK_IMPORTED_MODULE_0__["from"])(Object.entries(obj), scheduler);
}
//# sourceMappingURL=pairs.js.map
-
/***/ }),
-/* 104 */
+/* 121 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; });
-/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(105);
-/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(73);
-/* harmony import */ var _operators_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(106);
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
-/** PURE_IMPORTS_START _util_not,_util_subscribeTo,_operators_filter,_Observable PURE_IMPORTS_END */
-
+/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(122);
+/* harmony import */ var _operators_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(123);
+/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(66);
function partition(source, predicate, thisArg) {
- return [
- Object(_operators_filter__WEBPACK_IMPORTED_MODULE_2__["filter"])(predicate, thisArg)(new _Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"](Object(_util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(source))),
- Object(_operators_filter__WEBPACK_IMPORTED_MODULE_2__["filter"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__["not"])(predicate, thisArg))(new _Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"](Object(_util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(source)))
- ];
+ return [Object(_operators_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(predicate, thisArg)(Object(_innerFrom__WEBPACK_IMPORTED_MODULE_2__["innerFrom"])(source)), Object(_operators_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__["not"])(predicate, thisArg))(Object(_innerFrom__WEBPACK_IMPORTED_MODULE_2__["innerFrom"])(source))];
}
//# sourceMappingURL=partition.js.map
-
/***/ }),
-/* 105 */
+/* 122 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "not", function() { return not; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
function not(pred, thisArg) {
- function notPred() {
- return !(notPred.pred.apply(notPred.thisArg, arguments));
- }
- notPred.pred = pred;
- notPred.thisArg = thisArg;
- return notPred;
+ return function (value, index) { return !pred.call(thisArg, value, index); };
}
//# sourceMappingURL=not.js.map
-
/***/ }),
-/* 106 */
+/* 123 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
function filter(predicate, thisArg) {
- return function filterOperatorFunction(source) {
- return source.lift(new FilterOperator(predicate, thisArg));
- };
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var index = 0;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));
+ });
}
-var FilterOperator = /*@__PURE__*/ (function () {
- function FilterOperator(predicate, thisArg) {
- this.predicate = predicate;
- this.thisArg = thisArg;
- }
- FilterOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));
- };
- return FilterOperator;
-}());
-var FilterSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](FilterSubscriber, _super);
- function FilterSubscriber(destination, predicate, thisArg) {
- var _this = _super.call(this, destination) || this;
- _this.predicate = predicate;
- _this.thisArg = thisArg;
- _this.count = 0;
- return _this;
- }
- FilterSubscriber.prototype._next = function (value) {
- var result;
- try {
- result = this.predicate.call(this.thisArg, value, this.count++);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- if (result) {
- this.destination.next(value);
- }
- };
- return FilterSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
//# sourceMappingURL=filter.js.map
-
/***/ }),
-/* 107 */
+/* 124 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return race; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RaceOperator", function() { return RaceOperator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RaceSubscriber", function() { return RaceSubscriber; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);
-/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(47);
-/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70);
-/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(71);
-/** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
-
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "raceInit", function() { return raceInit; });
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
+/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66);
+/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(119);
+/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30);
function race() {
- var observables = [];
+ var sources = [];
for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i] = arguments[_i];
- }
- if (observables.length === 1) {
- if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(observables[0])) {
- observables = observables[0];
- }
- else {
- return observables[0];
- }
+ sources[_i] = arguments[_i];
}
- return Object(_fromArray__WEBPACK_IMPORTED_MODULE_2__["fromArray"])(observables, undefined).lift(new RaceOperator());
+ sources = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__["argsOrArgArray"])(sources);
+ return sources.length === 1 ? Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__["innerFrom"])(sources[0]) : new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](raceInit(sources));
}
-var RaceOperator = /*@__PURE__*/ (function () {
- function RaceOperator() {
- }
- RaceOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new RaceSubscriber(subscriber));
- };
- return RaceOperator;
-}());
-
-var RaceSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RaceSubscriber, _super);
- function RaceSubscriber(destination) {
- var _this = _super.call(this, destination) || this;
- _this.hasFirst = false;
- _this.observables = [];
- _this.subscriptions = [];
- return _this;
- }
- RaceSubscriber.prototype._next = function (observable) {
- this.observables.push(observable);
- };
- RaceSubscriber.prototype._complete = function () {
- var observables = this.observables;
- var len = observables.length;
- if (len === 0) {
- this.destination.complete();
- }
- else {
- for (var i = 0; i < len && !this.hasFirst; i++) {
- var observable = observables[i];
- var subscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, observable, undefined, i);
- if (this.subscriptions) {
- this.subscriptions.push(subscription);
+function raceInit(sources) {
+ return function (subscriber) {
+ var subscriptions = [];
+ var _loop_1 = function (i) {
+ subscriptions.push(Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__["innerFrom"])(sources[i]).subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__["createOperatorSubscriber"])(subscriber, function (value) {
+ if (subscriptions) {
+ for (var s = 0; s < subscriptions.length; s++) {
+ s !== i && subscriptions[s].unsubscribe();
+ }
+ subscriptions = null;
}
- this.add(subscription);
- }
- this.observables = null;
+ subscriber.next(value);
+ })));
+ };
+ for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {
+ _loop_1(i);
}
};
- RaceSubscriber.prototype.notifyNext = function (_outerValue, innerValue, outerIndex) {
- if (!this.hasFirst) {
- this.hasFirst = true;
- for (var i = 0; i < this.subscriptions.length; i++) {
- if (i !== outerIndex) {
- var subscription = this.subscriptions[i];
- subscription.unsubscribe();
- this.remove(subscription);
- }
- }
- this.subscriptions = null;
- }
- this.destination.next(innerValue);
- };
- return RaceSubscriber;
-}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"]));
-
+}
//# sourceMappingURL=race.js.map
-
/***/ }),
-/* 108 */
+/* 125 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "range", function() { return range; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return dispatch; });
/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */
+/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59);
+
function range(start, count, scheduler) {
- if (start === void 0) {
+ if (count == null) {
+ count = start;
start = 0;
}
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- if (count === undefined) {
- count = start;
- start = 0;
- }
- var index = 0;
- var current = start;
- if (scheduler) {
- return scheduler.schedule(dispatch, 0, {
- index: index, count: count, start: start, subscriber: subscriber
- });
- }
- else {
- do {
- if (index++ >= count) {
- subscriber.complete();
- break;
- }
- subscriber.next(current++);
- if (subscriber.closed) {
- break;
+ if (count <= 0) {
+ return _empty__WEBPACK_IMPORTED_MODULE_1__["EMPTY"];
+ }
+ var end = count + start;
+ return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](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++);
}
- } while (true);
- }
- return undefined;
- });
-}
-function dispatch(state) {
- var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber;
- if (index >= count) {
- subscriber.complete();
- return;
- }
- subscriber.next(start);
- if (subscriber.closed) {
- return;
- }
- state.index = index + 1;
- state.start = start + 1;
- this.schedule(state);
+ subscriber.complete();
+ });
}
//# sourceMappingURL=range.js.map
-
/***/ }),
-/* 109 */
+/* 126 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return timer; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "using", function() { return using; });
/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56);
-/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(99);
-/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(46);
-/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */
-
+/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66);
+/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59);
-function timer(dueTime, periodOrScheduler, scheduler) {
- if (dueTime === void 0) {
- dueTime = 0;
- }
- var period = -1;
- if (Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__["isNumeric"])(periodOrScheduler)) {
- period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);
- }
- else if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__["isScheduler"])(periodOrScheduler)) {
- scheduler = periodOrScheduler;
- }
- if (!Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__["isScheduler"])(scheduler)) {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"];
- }
+function using(resourceFactory, observableFactory) {
return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var due = Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__["isNumeric"])(dueTime)
- ? dueTime
- : (+dueTime - scheduler.now());
- return scheduler.schedule(dispatch, due, {
- index: 0, period: period, subscriber: subscriber
- });
+ var resource = resourceFactory();
+ var result = observableFactory(resource);
+ var source = result ? Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__["innerFrom"])(result) : _empty__WEBPACK_IMPORTED_MODULE_2__["EMPTY"];
+ source.subscribe(subscriber);
+ return function () {
+ if (resource) {
+ resource.unsubscribe();
+ }
+ };
});
}
-function dispatch(state) {
- var index = state.index, period = state.period, subscriber = state.subscriber;
- subscriber.next(index);
- if (subscriber.closed) {
- return;
- }
- else if (period === -1) {
- return subscriber.complete();
+//# sourceMappingURL=using.js.map
+
+/***/ }),
+/* 127 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
+/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(66);
+/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(119);
+/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(59);
+/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(30);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(61);
+
+
+
+
+
+
+
+function zip() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
}
- state.index = index + 1;
- this.schedule(state, period);
+ var resultSelector = Object(_util_args__WEBPACK_IMPORTED_MODULE_6__["popResultSelector"])(args);
+ var sources = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__["argsOrArgArray"])(args);
+ return sources.length
+ ? new _Observable__WEBPACK_IMPORTED_MODULE_1__["Observable"](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"])(sources[sourceIndex]).subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__["createOperatorSubscriber"])(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"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(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"];
}
-//# sourceMappingURL=timer.js.map
+//# sourceMappingURL=zip.js.map
+/***/ }),
+/* 128 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+
+//# sourceMappingURL=types.js.map
/***/ }),
-/* 110 */
+/* 129 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "using", function() { return using; });
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84);
-/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
-/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return audit; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
-function using(resourceFactory, observableFactory) {
- return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) {
- var resource;
- try {
- resource = resourceFactory();
- }
- catch (err) {
- subscriber.error(err);
- return undefined;
- }
- var result;
- try {
- result = observableFactory(resource);
- }
- catch (err) {
- subscriber.error(err);
- return undefined;
- }
- var source = result ? Object(_from__WEBPACK_IMPORTED_MODULE_1__["from"])(result) : _empty__WEBPACK_IMPORTED_MODULE_2__["EMPTY"];
- var subscription = source.subscribe(subscriber);
- return function () {
- subscription.unsubscribe();
- if (resource) {
- resource.unsubscribe();
+function audit(durationSelector) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(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"])(subscriber, function (value) {
+ hasValue = true;
+ lastValue = value;
+ if (!durationSubscriber) {
+ Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__["innerFrom"])(durationSelector(value)).subscribe((durationSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, endDuration, cleanupDuration)));
+ }
+ }, function () {
+ isComplete = true;
+ (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();
+ }));
});
}
-//# sourceMappingURL=using.js.map
-
+//# sourceMappingURL=audit.js.map
/***/ }),
-/* 111 */
+/* 130 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipOperator", function() { return ZipOperator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipSubscriber", function() { return ZipSubscriber; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47);
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
-/* harmony import */ var _internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(76);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_.._internal_symbol_iterator,_innerSubscribe PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return auditTime; });
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50);
+/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(129);
+/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(114);
+
+function auditTime(duration, scheduler) {
+ if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["asyncScheduler"]; }
+ return Object(_audit__WEBPACK_IMPORTED_MODULE_1__["audit"])(function () { return Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__["timer"])(duration, scheduler); });
+}
+//# sourceMappingURL=auditTime.js.map
+
+/***/ }),
+/* 131 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return buffer; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
-function zip() {
- var observables = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i] = arguments[_i];
- }
- var resultSelector = observables[observables.length - 1];
- if (typeof resultSelector === 'function') {
- observables.pop();
- }
- return Object(_fromArray__WEBPACK_IMPORTED_MODULE_1__["fromArray"])(observables, undefined).lift(new ZipOperator(resultSelector));
+function buffer(closingNotifier) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var currentBuffer = [];
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function (value) { return currentBuffer.push(value); }, function () {
+ subscriber.next(currentBuffer);
+ subscriber.complete();
+ }));
+ closingNotifier.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function () {
+ var b = currentBuffer;
+ currentBuffer = [];
+ subscriber.next(b);
+ }, _util_noop__WEBPACK_IMPORTED_MODULE_1__["noop"]));
+ return function () {
+ currentBuffer = null;
+ };
+ });
}
-var ZipOperator = /*@__PURE__*/ (function () {
- function ZipOperator(resultSelector) {
- this.resultSelector = resultSelector;
- }
- ZipOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));
- };
- return ZipOperator;
-}());
+//# sourceMappingURL=buffer.js.map
-var ZipSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ZipSubscriber, _super);
- function ZipSubscriber(destination, resultSelector, values) {
- if (values === void 0) {
- values = Object.create(null);
- }
- var _this = _super.call(this, destination) || this;
- _this.resultSelector = resultSelector;
- _this.iterators = [];
- _this.active = 0;
- _this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;
- return _this;
- }
- ZipSubscriber.prototype._next = function (value) {
- var iterators = this.iterators;
- if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(value)) {
- iterators.push(new StaticArrayIterator(value));
- }
- else if (typeof value[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_4__["iterator"]] === 'function') {
- iterators.push(new StaticIterator(value[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_4__["iterator"]]()));
- }
- else {
- iterators.push(new ZipBufferIterator(this.destination, this, value));
- }
- };
- ZipSubscriber.prototype._complete = function () {
- var iterators = this.iterators;
- var len = iterators.length;
- this.unsubscribe();
- if (len === 0) {
- this.destination.complete();
- return;
- }
- this.active = len;
- for (var i = 0; i < len; i++) {
- var iterator = iterators[i];
- if (iterator.stillUnsubscribed) {
- var destination = this.destination;
- destination.add(iterator.subscribe());
+/***/ }),
+/* 132 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return bufferCount; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17);
+
+
+
+
+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"])(function (source, subscriber) {
+ var buffers = [];
+ var count = 0;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function (value) {
+ var e_1, _a, e_2, _b;
+ var toEmit = null;
+ if (count++ % startBufferEvery === 0) {
+ buffers.push([]);
}
- else {
- this.active--;
+ try {
+ for (var buffers_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(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);
+ }
+ }
}
- }
- };
- ZipSubscriber.prototype.notifyInactive = function () {
- this.active--;
- if (this.active === 0) {
- this.destination.complete();
- }
- };
- ZipSubscriber.prototype.checkIterators = function () {
- var iterators = this.iterators;
- var len = iterators.length;
- var destination = this.destination;
- for (var i = 0; i < len; i++) {
- var iterator = iterators[i];
- if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {
- return;
+ 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; }
}
- }
- var shouldComplete = false;
- var args = [];
- for (var i = 0; i < len; i++) {
- var iterator = iterators[i];
- var result = iterator.next();
- if (iterator.hasCompleted()) {
- shouldComplete = true;
+ if (toEmit) {
+ try {
+ for (var toEmit_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(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"])(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; }
+ }
}
- if (result.done) {
- destination.complete();
- return;
+ }, function () {
+ var e_3, _a;
+ try {
+ for (var buffers_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(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);
+ }
}
- args.push(result.value);
- }
- if (this.resultSelector) {
- this._tryresultSelector(args);
- }
- else {
- destination.next(args);
- }
- if (shouldComplete) {
- destination.complete();
- }
- };
- ZipSubscriber.prototype._tryresultSelector = function (args) {
- var result;
- try {
- result = this.resultSelector.apply(this, args);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.destination.next(result);
- };
- return ZipSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"]));
-
-var StaticIterator = /*@__PURE__*/ (function () {
- function StaticIterator(iterator) {
- this.iterator = iterator;
- this.nextResult = iterator.next();
- }
- StaticIterator.prototype.hasValue = function () {
- return true;
- };
- StaticIterator.prototype.next = function () {
- var result = this.nextResult;
- this.nextResult = this.iterator.next();
- return result;
- };
- StaticIterator.prototype.hasCompleted = function () {
- var nextResult = this.nextResult;
- return Boolean(nextResult && nextResult.done);
- };
- return StaticIterator;
-}());
-var StaticArrayIterator = /*@__PURE__*/ (function () {
- function StaticArrayIterator(array) {
- this.array = array;
- this.index = 0;
- this.length = 0;
- this.length = array.length;
- }
- StaticArrayIterator.prototype[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_4__["iterator"]] = function () {
- return this;
- };
- StaticArrayIterator.prototype.next = function (value) {
- var i = this.index++;
- var array = this.array;
- return i < this.length ? { value: array[i], done: false } : { value: null, done: true };
- };
- StaticArrayIterator.prototype.hasValue = function () {
- return this.array.length > this.index;
- };
- StaticArrayIterator.prototype.hasCompleted = function () {
- return this.array.length === this.index;
- };
- return StaticArrayIterator;
-}());
-var ZipBufferIterator = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ZipBufferIterator, _super);
- function ZipBufferIterator(destination, parent, observable) {
- var _this = _super.call(this, destination) || this;
- _this.parent = parent;
- _this.observable = observable;
- _this.stillUnsubscribed = true;
- _this.buffer = [];
- _this.isComplete = false;
- return _this;
- }
- ZipBufferIterator.prototype[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_4__["iterator"]] = function () {
- return this;
- };
- ZipBufferIterator.prototype.next = function () {
- var buffer = this.buffer;
- if (buffer.length === 0 && this.isComplete) {
- return { value: null, done: true };
- }
- else {
- return { value: buffer.shift(), done: false };
- }
- };
- ZipBufferIterator.prototype.hasValue = function () {
- return this.buffer.length > 0;
- };
- ZipBufferIterator.prototype.hasCompleted = function () {
- return this.buffer.length === 0 && this.isComplete;
- };
- ZipBufferIterator.prototype.notifyComplete = function () {
- if (this.buffer.length > 0) {
- this.isComplete = true;
- this.parent.notifyInactive();
- }
- else {
- this.destination.complete();
- }
- };
- ZipBufferIterator.prototype.notifyNext = function (innerValue) {
- this.buffer.push(innerValue);
- this.parent.checkIterators();
- };
- ZipBufferIterator.prototype.subscribe = function () {
- return Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_5__["innerSubscribe"])(this.observable, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_5__["SimpleInnerSubscriber"](this));
- };
- return ZipBufferIterator;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_5__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=zip.js.map
-
+ 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
/***/ }),
-/* 112 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 133 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return bufferTime; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30);
+/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17);
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(61);
+/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(76);
-var _interopRequireDefault = __webpack_require__(7);
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.ToolingLogTextWriter = void 0;
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(8));
-var _util = __webpack_require__(113);
-var _chalk = _interopRequireDefault(__webpack_require__(114));
-var _log_levels = __webpack_require__(127);
-/*
- * 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.
- */
-const {
- magentaBright,
- yellow,
- red,
- blue,
- green,
- dim
-} = _chalk.default;
-const PREFIX_INDENT = ' '.repeat(6);
-const MSG_PREFIXES = {
- verbose: ` ${magentaBright('sill')} `,
- debug: ` ${dim('debg')} `,
- info: ` ${blue('info')} `,
- success: ` ${green('succ')} `,
- warning: ` ${yellow('warn')} `,
- error: `${red('ERROR')} `
-};
+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"])(otherArgs)) !== null && _a !== void 0 ? _a : _scheduler_async__WEBPACK_IMPORTED_MODULE_5__["asyncScheduler"];
+ 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"])(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"])(bufferRecords, record);
+ subscriber.next(buffer);
+ restartOnEmit && startBuffer();
+ };
+ var startBuffer = function () {
+ if (bufferRecords) {
+ var subs = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"]();
+ subscriber.add(subs);
+ var buffer = [];
+ var record_1 = {
+ buffer: buffer,
+ subs: subs,
+ };
+ bufferRecords.push(record_1);
+ Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__["executeSchedule"])(subs, scheduler, function () { return emit(record_1); }, bufferTimeSpan);
+ }
+ };
+ if (bufferCreationInterval !== null && bufferCreationInterval >= 0) {
+ Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__["executeSchedule"])(subscriber, scheduler, startBuffer, bufferCreationInterval, true);
+ }
+ else {
+ restartOnEmit = true;
+ }
+ startBuffer();
+ var bufferTimeSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__["createOperatorSubscriber"])(subscriber, function (value) {
+ var e_1, _a;
+ var recordsCopy = bufferRecords.slice();
+ try {
+ for (var recordsCopy_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(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
-const has = (obj, key) => obj.hasOwnProperty(key);
+/***/ }),
+/* 134 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-function shouldWriteType(level, type) {
- if (type === 'write') {
- return level.name !== 'silent';
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return bufferToggle; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21);
+/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(17);
- return Boolean(level.flags[type === 'success' ? 'info' : type]);
-}
-function stringifyError(error) {
- if (typeof error !== 'string' && !(error instanceof Error)) {
- error = new Error(`"${error}" thrown`);
- }
- if (typeof error === 'string') {
- return error;
- }
- return error.stack || error.message || error;
+
+
+
+function bufferToggle(openings, closingSelector) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__["operate"])(function (source, subscriber) {
+ var buffers = [];
+ Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__["innerFrom"])(openings).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__["createOperatorSubscriber"])(subscriber, function (openValue) {
+ var buffer = [];
+ buffers.push(buffer);
+ var closingSubscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"]();
+ var emitBuffer = function () {
+ Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_6__["arrRemove"])(buffers, buffer);
+ subscriber.next(buffer);
+ closingSubscription.unsubscribe();
+ };
+ closingSubscription.add(Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__["innerFrom"])(closingSelector(openValue)).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__["createOperatorSubscriber"])(subscriber, emitBuffer, _util_noop__WEBPACK_IMPORTED_MODULE_5__["noop"])));
+ }, _util_noop__WEBPACK_IMPORTED_MODULE_5__["noop"]));
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__["createOperatorSubscriber"])(subscriber, function (value) {
+ var e_1, _a;
+ try {
+ for (var buffers_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(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
-class ToolingLogTextWriter {
- constructor(config) {
- (0, _defineProperty2.default)(this, "level", void 0);
- (0, _defineProperty2.default)(this, "writeTo", void 0);
- (0, _defineProperty2.default)(this, "ignoreSources", void 0);
- this.level = (0, _log_levels.parseLogLevel)(config.level);
- this.writeTo = config.writeTo;
- this.ignoreSources = config.ignoreSources;
+/***/ }),
+/* 135 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (!this.writeTo || typeof this.writeTo.write !== 'function') {
- throw new Error('ToolingLogTextWriter requires the `writeTo` option be set to a stream (like process.stdout)');
- }
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return bufferWhen; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66);
- write(msg) {
- if (!shouldWriteType(this.level, msg.type)) {
- return false;
- }
- if (this.ignoreSources && msg.source && this.ignoreSources.includes(msg.source)) {
- if (msg.type === 'write') {
- const txt = (0, _util.format)(msg.args[0], ...msg.args.slice(1)); // Ensure that Elasticsearch deprecation log messages from Kibana aren't ignored
- if (!/elasticsearch\.deprecation/.test(txt)) {
- return false;
- }
- } else {
- return false;
- }
- }
- const prefix = has(MSG_PREFIXES, msg.type) ? MSG_PREFIXES[msg.type] : '';
- ToolingLogTextWriter.write(this.writeTo, prefix, msg);
- return true;
- }
+function bufferWhen(closingSelector) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(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"])(closingSelector()).subscribe((closingSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, openBuffer, _util_noop__WEBPACK_IMPORTED_MODULE_1__["noop"])));
+ };
+ openBuffer();
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(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
- static write(writeTo, prefix, msg) {
- const txt = msg.type === 'error' ? stringifyError(msg.args[0]) : (0, _util.format)(msg.args[0], ...msg.args.slice(1));
- (prefix + txt).split('\n').forEach((line, i) => {
- let lineIndent = '';
+/***/ }),
+/* 136 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (msg.indent > 0) {
- // if we are indenting write some spaces followed by a symbol
- lineIndent += ' '.repeat(msg.indent - 1);
- lineIndent += line.startsWith('-') ? '└' : '│';
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return catchError; });
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(66);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
- if (line && prefix && i > 0) {
- // apply additional indentation to lines after
- // the first if this message gets a prefix
- lineIndent += PREFIX_INDENT;
- }
- writeTo.write(`${lineIndent}${line}\n`);
- });
- }
+function catchError(selector) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__["operate"])(function (source, subscriber) {
+ var innerSub = null;
+ var syncUnsub = false;
+ var handledResult;
+ innerSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, undefined, undefined, function (err) {
+ handledResult = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__["innerFrom"])(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);
+ }
+ });
}
-
-exports.ToolingLogTextWriter = ToolingLogTextWriter;
+//# sourceMappingURL=catchError.js.map
/***/ }),
-/* 113 */
-/***/ (function(module, exports) {
+/* 137 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-module.exports = require("util");
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return combineAll; });
+/* harmony import */ var _combineLatestAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(138);
+
+var combineAll = _combineLatestAll__WEBPACK_IMPORTED_MODULE_0__["combineLatestAll"];
+//# sourceMappingURL=combineAll.js.map
/***/ }),
-/* 114 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 138 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatestAll", function() { return combineLatestAll; });
+/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(98);
+/* harmony import */ var _joinAllInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(139);
-const ansiStyles = __webpack_require__(115);
-const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(121);
-const {
- stringReplaceAll,
- stringEncaseCRLFWithFirstIndex
-} = __webpack_require__(125);
-const {isArray} = Array;
+function combineLatestAll(project) {
+ return Object(_joinAllInternals__WEBPACK_IMPORTED_MODULE_1__["joinAllInternals"])(_observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__["combineLatest"], project);
+}
+//# sourceMappingURL=combineLatestAll.js.map
-// `supportsColor.level` → `ansiStyles.color[name]` mapping
-const levelMapping = [
- 'ansi',
- 'ansi',
- 'ansi256',
- 'ansi16m'
-];
+/***/ }),
+/* 139 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-const styles = Object.create(null);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "joinAllInternals", function() { return joinAllInternals; });
+/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26);
+/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(95);
+/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25);
+/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(104);
+/* harmony import */ var _toArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(140);
-const applyOptions = (object, options = {}) => {
- if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
- throw new Error('The `level` option should be an integer from 0 to 3');
- }
- // Detect level if not set manually
- const colorLevel = stdoutColor ? stdoutColor.level : 0;
- object.level = options.level === undefined ? colorLevel : options.level;
-};
-class ChalkClass {
- constructor(options) {
- // eslint-disable-next-line no-constructor-return
- return chalkFactory(options);
- }
+
+
+function joinAllInternals(joinFn, project) {
+ return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_2__["pipe"])(Object(_toArray__WEBPACK_IMPORTED_MODULE_4__["toArray"])(), Object(_mergeMap__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function (sources) { return joinFn(sources); }), project ? Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_1__["mapOneOrManyArgs"])(project) : _util_identity__WEBPACK_IMPORTED_MODULE_0__["identity"]);
}
+//# sourceMappingURL=joinAllInternals.js.map
-const chalkFactory = options => {
- const chalk = {};
- applyOptions(chalk, options);
+/***/ }),
+/* 140 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- chalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray; });
+/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(141);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
- Object.setPrototypeOf(chalk, Chalk.prototype);
- Object.setPrototypeOf(chalk.template, chalk);
- chalk.template.constructor = () => {
- throw new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');
- };
+var arrReducer = function (arr, value) { return (arr.push(value), arr); };
+function toArray() {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(arrReducer, [])(source).subscribe(subscriber);
+ });
+}
+//# sourceMappingURL=toArray.js.map
- chalk.template.Instance = ChalkClass;
+/***/ }),
+/* 141 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return chalk.template;
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return reduce; });
+/* harmony import */ var _scanInternals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(142);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
-function Chalk(options) {
- return chalkFactory(options);
+
+function reduce(accumulator, seed) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(Object(_scanInternals__WEBPACK_IMPORTED_MODULE_0__["scanInternals"])(accumulator, seed, arguments.length >= 2, false, true));
}
+//# sourceMappingURL=reduce.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;
- }
-};
-
-const usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];
+/***/ }),
+/* 142 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-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);
- };
- }
- };
-}
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scanInternals", function() { return scanInternals; });
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(30);
-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 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"])(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
-const proto = Object.defineProperties(() => {}, {
- ...styles,
- level: {
- enumerable: true,
- get() {
- return this._generator.level;
- },
- set(level) {
- this._generator.level = level;
- }
- }
-});
+/***/ }),
+/* 143 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-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;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatestWith", function() { return combineLatestWith; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(144);
- return {
- open,
- close,
- openAll,
- closeAll,
- parent
- };
-};
-const createBuilder = (self, _styler, _isEmpty) => {
- const builder = (...arguments_) => {
- if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {
- // Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`
- return applyStyle(builder, chalkTag(builder, ...arguments_));
- }
+function combineLatestWith() {
+ var otherSources = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ otherSources[_i] = arguments[_i];
+ }
+ return _combineLatest__WEBPACK_IMPORTED_MODULE_1__["combineLatest"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(otherSources)));
+}
+//# sourceMappingURL=combineLatestWith.js.map
- // 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(' '));
- };
+/***/ }),
+/* 144 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- // We alter the prototype because we must return a function, but there is
- // no way to create a function with a different prototype
- Object.setPrototypeOf(builder, proto);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(98);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
+/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(119);
+/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(95);
+/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(61);
- builder._generator = self;
- builder._styler = _styler;
- builder._isEmpty = _isEmpty;
- return builder;
-};
-const applyStyle = (self, string) => {
- if (self.level <= 0 || !string) {
- return self._isEmpty ? '' : string;
- }
- 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);
- styler = styler.parent;
- }
- }
+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"])(args);
+ return resultSelector
+ ? Object(_util_pipe__WEBPACK_IMPORTED_MODULE_5__["pipe"])(combineLatest.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(args))), Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__["mapOneOrManyArgs"])(resultSelector))
+ : Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__["operate"])(function (source, subscriber) {
+ Object(_observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__["combineLatestInit"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__["argsOrArgArray"])(args))))(subscriber);
+ });
+}
+//# sourceMappingURL=combineLatest.js.map
- // 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);
- }
+/***/ }),
+/* 145 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return openAll + string + closeAll;
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return concatMap; });
+/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(104);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
-let template;
-const chalkTag = (chalk, ...strings) => {
- const [firstString] = strings;
- if (!isArray(firstString) || !isArray(firstString.raw)) {
- // If chalk() was called by itself or with a string,
- // return the string itself as a string.
- return strings.join(' ');
- }
+function concatMap(project, resultSelector) {
+ return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(resultSelector) ? Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(project, resultSelector, 1) : Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(project, 1);
+}
+//# sourceMappingURL=concatMap.js.map
- const arguments_ = strings.slice(1);
- const parts = [firstString.raw[0]];
+/***/ }),
+/* 146 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- for (let i = 1; i < firstString.length; i++) {
- parts.push(
- String(arguments_[i - 1]).replace(/[{}\\]/g, '\\$&'),
- String(firstString.raw[i])
- );
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return concatMapTo; });
+/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
- if (template === undefined) {
- template = __webpack_require__(126);
- }
- return template(chalk, parts.join(''));
-};
+function concatMapTo(innerObservable, resultSelector) {
+ return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(resultSelector) ? Object(_concatMap__WEBPACK_IMPORTED_MODULE_0__["concatMap"])(function () { return innerObservable; }, resultSelector) : Object(_concatMap__WEBPACK_IMPORTED_MODULE_0__["concatMap"])(function () { return innerObservable; });
+}
+//# sourceMappingURL=concatMapTo.js.map
-Object.defineProperties(Chalk.prototype, styles);
+/***/ }),
+/* 147 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-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;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatWith", function() { return concatWith; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(148);
-module.exports = chalk;
+function concatWith() {
+ var otherSources = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ otherSources[_i] = arguments[_i];
+ }
+ return _concat__WEBPACK_IMPORTED_MODULE_1__["concat"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(otherSources)));
+}
+//# sourceMappingURL=concatWith.js.map
/***/ }),
-/* 115 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 148 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-/* WEBPACK VAR INJECTION */(function(module) {
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _concatAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(102);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(61);
+/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(63);
-const wrapAnsi16 = (fn, offset) => (...args) => {
- const code = fn(...args);
- return `\u001B[${code + offset}m`;
-};
-const wrapAnsi256 = (fn, offset) => (...args) => {
- const code = fn(...args);
- return `\u001B[${38 + offset};5;${code}m`;
-};
-const wrapAnsi16m = (fn, offset) => (...args) => {
- const rgb = fn(...args);
- return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
-};
-const ansi2ansi = n => n;
-const rgb2rgb = (r, g, b) => [r, g, b];
-const setLazyProperty = (object, property, get) => {
- Object.defineProperty(object, property, {
- get: () => {
- const value = get();
+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"])(args);
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ Object(_concatAll__WEBPACK_IMPORTED_MODULE_2__["concatAll"])()(Object(_observable_from__WEBPACK_IMPORTED_MODULE_4__["from"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(args)), scheduler)).subscribe(subscriber);
+ });
+}
+//# sourceMappingURL=concat.js.map
- Object.defineProperty(object, property, {
- value,
- enumerable: true,
- configurable: true
- });
+/***/ }),
+/* 149 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return value;
- },
- enumerable: true,
- configurable: true
- });
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "connect", function() { return connect; });
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
+/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(63);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
+/* harmony import */ var _observable_fromSubscribable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(150);
-/** @type {typeof import('color-convert')} */
-let colorConvert;
-const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {
- if (colorConvert === undefined) {
- colorConvert = __webpack_require__(117);
- }
- const offset = isBackground ? 10 : 0;
- const styles = {};
- for (const [sourceSpace, suite] of Object.entries(colorConvert)) {
- const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;
- if (sourceSpace === targetSpace) {
- styles[name] = wrap(identity, offset);
- } else if (typeof suite === 'object') {
- styles[name] = wrap(suite[targetSpace], offset);
- }
- }
- return styles;
+var DEFAULT_CONFIG = {
+ connector: function () { return new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"](); },
};
+function connect(selector, config) {
+ if (config === void 0) { config = DEFAULT_CONFIG; }
+ var connector = config.connector;
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__["operate"])(function (source, subscriber) {
+ var subject = connector();
+ Object(_observable_from__WEBPACK_IMPORTED_MODULE_1__["from"])(selector(Object(_observable_fromSubscribable__WEBPACK_IMPORTED_MODULE_3__["fromSubscribable"])(subject))).subscribe(subscriber);
+ subscriber.add(source.subscribe(subject));
+ });
+}
+//# sourceMappingURL=connect.js.map
-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],
+/***/ }),
+/* 150 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- // Bright color
- blackBright: [90, 39],
- 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],
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromSubscribable", function() { return fromSubscribable; });
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
- // 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]
- }
- };
+function fromSubscribable(subscribable) {
+ return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return subscribable.subscribe(subscriber); });
+}
+//# sourceMappingURL=fromSubscribable.js.map
- // Alias bright black as gray (and grey)
- styles.color.gray = styles.color.blackBright;
- styles.bgColor.bgGray = styles.bgColor.bgBlackBright;
- styles.color.grey = styles.color.blackBright;
- styles.bgColor.bgGrey = styles.bgColor.bgBlackBright;
+/***/ }),
+/* 151 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- for (const [groupName, group] of Object.entries(styles)) {
- for (const [styleName, style] of Object.entries(group)) {
- styles[styleName] = {
- open: `\u001B[${style[0]}m`,
- close: `\u001B[${style[1]}m`
- };
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "count", function() { return count; });
+/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(141);
- group[styleName] = styles[styleName];
+function count(predicate) {
+ return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(function (total, value, i) { return (!predicate || predicate(value, i) ? total + 1 : total); }, 0);
+}
+//# sourceMappingURL=count.js.map
- codes.set(style[0], style[1]);
- }
+/***/ }),
+/* 152 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- Object.defineProperty(styles, groupName, {
- value: group,
- enumerable: false
- });
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66);
- Object.defineProperty(styles, 'codes', {
- value: codes,
- enumerable: false
- });
- styles.color.close = '\u001B[39m';
- styles.bgColor.close = '\u001B[49m';
- setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));
- setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));
- setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));
- setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));
- setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));
- setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));
- return styles;
+function debounce(durationSelector) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(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"])(subscriber, function (value) {
+ durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();
+ hasValue = true;
+ lastValue = value;
+ durationSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, emit, _util_noop__WEBPACK_IMPORTED_MODULE_1__["noop"]);
+ Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__["innerFrom"])(durationSelector(value)).subscribe(durationSubscriber);
+ }, function () {
+ emit();
+ subscriber.complete();
+ }, undefined, function () {
+ lastValue = durationSubscriber = null;
+ }));
+ });
}
+//# sourceMappingURL=debounce.js.map
-// Make the export immutable
-Object.defineProperty(module, 'exports', {
- enumerable: true,
- get: assembleStyles
-});
+/***/ }),
+/* 153 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(116)(module)))
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return debounceTime; });
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
-/***/ }),
-/* 116 */
-/***/ (function(module, exports) {
-module.exports = function(module) {
- if (!module.webpackPolyfill) {
- module.deprecate = function() {};
- module.paths = [];
- // module.parent = undefined by default
- if (!module.children) module.children = [];
- Object.defineProperty(module, "loaded", {
- enumerable: true,
- get: function() {
- return module.l;
- }
- });
- Object.defineProperty(module, "id", {
- enumerable: true,
- get: function() {
- return module.i;
- }
- });
- module.webpackPolyfill = 1;
- }
- return module;
-};
+function debounceTime(dueTime, scheduler) {
+ if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["asyncScheduler"]; }
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(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"])(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
/***/ }),
-/* 117 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 154 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-const conversions = __webpack_require__(118);
-const route = __webpack_require__(120);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return defaultIfEmpty; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
-const convert = {};
-const models = Object.keys(conversions);
+function defaultIfEmpty(defaultValue) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var hasValue = false;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, function (value) {
+ hasValue = true;
+ subscriber.next(value);
+ }, function () {
+ if (!hasValue) {
+ subscriber.next(defaultValue);
+ }
+ subscriber.complete();
+ }));
+ });
+}
+//# sourceMappingURL=defaultIfEmpty.js.map
-function wrapRaw(fn) {
- const wrappedFn = function (...args) {
- const arg0 = args[0];
- if (arg0 === undefined || arg0 === null) {
- return arg0;
- }
+/***/ }),
+/* 155 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (arg0.length > 1) {
- args = arg0;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return delay; });
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50);
+/* harmony import */ var _delayWhen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(156);
+/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(114);
- return fn(args);
- };
- // Preserve .conversion property if there is one
- if ('conversion' in fn) {
- wrappedFn.conversion = fn.conversion;
- }
- return wrappedFn;
+function delay(due, scheduler) {
+ if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["asyncScheduler"]; }
+ var duration = Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__["timer"])(due, scheduler);
+ return Object(_delayWhen__WEBPACK_IMPORTED_MODULE_1__["delayWhen"])(function () { return duration; });
}
+//# sourceMappingURL=delay.js.map
-function wrapRounded(fn) {
- const wrappedFn = function (...args) {
- const arg0 = args[0];
-
- if (arg0 === undefined || arg0 === null) {
- return arg0;
- }
+/***/ }),
+/* 156 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (arg0.length > 1) {
- args = arg0;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return delayWhen; });
+/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(101);
+/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(157);
+/* harmony import */ var _ignoreElements__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(158);
+/* harmony import */ var _mapTo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(159);
+/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(104);
- const result = fn(args);
- // We're assuming the result is an array here.
- // see notice in conversions.js; don't use box types
- // in conversion functions.
- if (typeof result === 'object') {
- for (let len = result.length, i = 0; i < len; i++) {
- result[i] = Math.round(result[i]);
- }
- }
- return result;
- };
- // Preserve .conversion property if there is one
- if ('conversion' in fn) {
- wrappedFn.conversion = fn.conversion;
- }
- return wrappedFn;
+function delayWhen(delayDurationSelector, subscriptionDelay) {
+ if (subscriptionDelay) {
+ return function (source) {
+ return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(subscriptionDelay.pipe(Object(_take__WEBPACK_IMPORTED_MODULE_1__["take"])(1), Object(_ignoreElements__WEBPACK_IMPORTED_MODULE_2__["ignoreElements"])()), source.pipe(delayWhen(delayDurationSelector)));
+ };
+ }
+ return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_4__["mergeMap"])(function (value, index) { return delayDurationSelector(value, index).pipe(Object(_take__WEBPACK_IMPORTED_MODULE_1__["take"])(1), Object(_mapTo__WEBPACK_IMPORTED_MODULE_3__["mapTo"])(value)); });
}
+//# sourceMappingURL=delayWhen.js.map
-models.forEach(fromModel => {
- convert[fromModel] = {};
+/***/ }),
+/* 157 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
- Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return take; });
+/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(59);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
- const routes = route(fromModel);
- const routeModels = Object.keys(routes);
-
- routeModels.forEach(toModel => {
- const fn = routes[toModel];
-
- convert[fromModel][toModel] = wrapRounded(fn);
- convert[fromModel][toModel].raw = wrapRaw(fn);
- });
-});
-module.exports = convert;
+function take(count) {
+ return count <= 0
+ ?
+ function () { return _observable_empty__WEBPACK_IMPORTED_MODULE_0__["EMPTY"]; }
+ : Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ var seen = 0;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function (value) {
+ if (++seen <= count) {
+ subscriber.next(value);
+ if (count <= seen) {
+ subscriber.complete();
+ }
+ }
+ }));
+ });
+}
+//# sourceMappingURL=take.js.map
/***/ }),
-/* 118 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 158 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-/* MIT license */
-/* eslint-disable no-mixed-operators */
-const cssKeywords = __webpack_require__(119);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return ignoreElements; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21);
-// NOTE: conversions should only return primitive values (i.e. arrays, or
-// values that give correct `typeof` results).
-// do not use box values types (i.e. Number(), String(), etc.)
-const reverseKeywords = {};
-for (const key of Object.keys(cssKeywords)) {
- reverseKeywords[cssKeywords[key]] = key;
+
+function ignoreElements() {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]));
+ });
}
+//# sourceMappingURL=ignoreElements.js.map
-const convert = {
- rgb: {channels: 3, labels: 'rgb'},
- hsl: {channels: 3, labels: 'hsl'},
- hsv: {channels: 3, labels: 'hsv'},
- hwb: {channels: 3, labels: 'hwb'},
- cmyk: {channels: 4, labels: 'cmyk'},
- xyz: {channels: 3, labels: 'xyz'},
- lab: {channels: 3, labels: 'lab'},
- lch: {channels: 3, labels: 'lch'},
- hex: {channels: 1, labels: ['hex']},
- keyword: {channels: 1, labels: ['keyword']},
- ansi16: {channels: 1, labels: ['ansi16']},
- ansi256: {channels: 1, labels: ['ansi256']},
- hcg: {channels: 3, labels: ['h', 'c', 'g']},
- apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
- gray: {channels: 1, labels: ['gray']}
-};
+/***/ }),
+/* 159 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-module.exports = convert;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return mapTo; });
+/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(96);
-// Hide .channels and .labels properties
-for (const model of Object.keys(convert)) {
- if (!('channels' in convert[model])) {
- throw new Error('missing channels property: ' + model);
- }
+function mapTo(value) {
+ return Object(_map__WEBPACK_IMPORTED_MODULE_0__["map"])(function () { return value; });
+}
+//# sourceMappingURL=mapTo.js.map
- if (!('labels' in convert[model])) {
- throw new Error('missing channel labels property: ' + model);
- }
+/***/ }),
+/* 160 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (convert[model].labels.length !== convert[model].channels) {
- throw new Error('channel and label counts mismatch: ' + model);
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return dematerialize; });
+/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
- const {channels, labels} = convert[model];
- delete convert[model].channels;
- delete convert[model].labels;
- Object.defineProperty(convert[model], 'channels', {value: channels});
- Object.defineProperty(convert[model], 'labels', {value: labels});
+
+
+function dematerialize() {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function (notification) { return Object(_Notification__WEBPACK_IMPORTED_MODULE_0__["observeNotification"])(notification, subscriber); }));
+ });
}
+//# sourceMappingURL=dematerialize.js.map
-convert.rgb.hsl = function (rgb) {
- const r = rgb[0] / 255;
- const g = rgb[1] / 255;
- const b = rgb[2] / 255;
- const min = Math.min(r, g, b);
- const max = Math.max(r, g, b);
- const delta = max - min;
- let h;
- let s;
+/***/ }),
+/* 161 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (max === min) {
- h = 0;
- } else if (r === max) {
- h = (g - b) / delta;
- } else if (g === max) {
- h = 2 + (b - r) / delta;
- } else if (b === max) {
- h = 4 + (r - g) / delta;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return distinct; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21);
- h = Math.min(h * 60, 360);
- if (h < 0) {
- h += 360;
- }
- const l = (min + max) / 2;
+function distinct(keySelector, flushes) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var distinctKeys = new Set();
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(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"])(subscriber, function () { return distinctKeys.clear(); }, _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]));
+ });
+}
+//# sourceMappingURL=distinct.js.map
- if (max === min) {
- s = 0;
- } else if (l <= 0.5) {
- s = delta / (max + min);
- } else {
- s = delta / (2 - max - min);
- }
+/***/ }),
+/* 162 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return [h, s * 100, l * 100];
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return distinctUntilChanged; });
+/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+
+
+
+function distinctUntilChanged(comparator, keySelector) {
+ if (keySelector === void 0) { keySelector = _util_identity__WEBPACK_IMPORTED_MODULE_0__["identity"]; }
+ comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ var previousKey;
+ var first = true;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(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
-convert.rgb.hsv = function (rgb) {
- let rdif;
- let gdif;
- let bdif;
- let h;
- let s;
+/***/ }),
+/* 163 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- const r = rgb[0] / 255;
- const g = rgb[1] / 255;
- const b = rgb[2] / 255;
- const v = Math.max(r, g, b);
- const diff = v - Math.min(r, g, b);
- const diffc = function (c) {
- return (v - c) / 6 / diff + 1 / 2;
- };
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return distinctUntilKeyChanged; });
+/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162);
- if (diff === 0) {
- h = 0;
- s = 0;
- } else {
- s = diff / v;
- rdif = diffc(r);
- gdif = diffc(g);
- bdif = diffc(b);
+function distinctUntilKeyChanged(key, compare) {
+ return Object(_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__["distinctUntilChanged"])(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });
+}
+//# sourceMappingURL=distinctUntilKeyChanged.js.map
- if (r === v) {
- h = bdif - gdif;
- } else if (g === v) {
- h = (1 / 3) + rdif - bdif;
- } else if (b === v) {
- h = (2 / 3) + gdif - rdif;
- }
+/***/ }),
+/* 164 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (h < 0) {
- h += 1;
- } else if (h > 1) {
- h -= 1;
- }
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return elementAt; });
+/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(88);
+/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(123);
+/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(165);
+/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(154);
+/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(157);
- return [
- h * 360,
- s * 100,
- v * 100
- ];
-};
-convert.rgb.hwb = function (rgb) {
- const r = rgb[0];
- const g = rgb[1];
- let b = rgb[2];
- const h = convert.rgb.hsl(rgb)[0];
- const w = 1 / 255 * Math.min(r, Math.min(g, b));
- b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
- return [h, w * 100, b * 100];
-};
-convert.rgb.cmyk = function (rgb) {
- const r = rgb[0] / 255;
- const g = rgb[1] / 255;
- const b = rgb[2] / 255;
+function elementAt(index, defaultValue) {
+ if (index < 0) {
+ throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__["ArgumentOutOfRangeError"]();
+ }
+ var hasDefaultValue = arguments.length >= 2;
+ return function (source) {
+ return source.pipe(Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return i === index; }), Object(_take__WEBPACK_IMPORTED_MODULE_4__["take"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__["defaultIfEmpty"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__["throwIfEmpty"])(function () { return new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__["ArgumentOutOfRangeError"](); }));
+ };
+}
+//# sourceMappingURL=elementAt.js.map
- const k = Math.min(1 - r, 1 - g, 1 - b);
- const c = (1 - r - k) / (1 - k) || 0;
- const m = (1 - g - k) / (1 - k) || 0;
- const y = (1 - b - k) / (1 - k) || 0;
+/***/ }),
+/* 165 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return [c * 100, m * 100, y * 100, k * 100];
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return throwIfEmpty; });
+/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
-function comparativeDistance(x, y) {
- /*
- See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
- */
- return (
- ((x[0] - y[0]) ** 2) +
- ((x[1] - y[1]) ** 2) +
- ((x[2] - y[2]) ** 2)
- );
+
+
+function throwIfEmpty(errorFactory) {
+ if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ var hasValue = false;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(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"]();
+}
+//# sourceMappingURL=throwIfEmpty.js.map
-convert.rgb.keyword = function (rgb) {
- const reversed = reverseKeywords[rgb];
- if (reversed) {
- return reversed;
- }
+/***/ }),
+/* 166 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let currentClosestDistance = Infinity;
- let currentClosestKeyword;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return endWith; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(101);
+/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(60);
- for (const keyword of Object.keys(cssKeywords)) {
- const value = cssKeywords[keyword];
- // Compute comparative distance
- const distance = comparativeDistance(rgb, value);
- // Check if its less, if so set as closest
- if (distance < currentClosestDistance) {
- currentClosestDistance = distance;
- currentClosestKeyword = keyword;
- }
- }
+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"])(source, _observable_of__WEBPACK_IMPORTED_MODULE_2__["of"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(values)))); };
+}
+//# sourceMappingURL=endWith.js.map
- return currentClosestKeyword;
-};
+/***/ }),
+/* 167 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-convert.keyword.rgb = function (keyword) {
- return cssKeywords[keyword];
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return every; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
-convert.rgb.xyz = function (rgb) {
- let r = rgb[0] / 255;
- let g = rgb[1] / 255;
- let b = rgb[2] / 255;
- // Assume sRGB
- r = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);
- g = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);
- b = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);
+function every(predicate, thisArg) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var index = 0;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(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
- const x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
- const y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
- const z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
+/***/ }),
+/* 168 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return [x * 100, y * 100, z * 100];
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return exhaust; });
+/* harmony import */ var _exhaustAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(169);
-convert.rgb.lab = function (rgb) {
- const xyz = convert.rgb.xyz(rgb);
- let x = xyz[0];
- let y = xyz[1];
- let z = xyz[2];
+var exhaust = _exhaustAll__WEBPACK_IMPORTED_MODULE_0__["exhaustAll"];
+//# sourceMappingURL=exhaust.js.map
- x /= 95.047;
- y /= 100;
- z /= 108.883;
+/***/ }),
+/* 169 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);
- y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);
- z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaustAll", function() { return exhaustAll; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+
+
+
+function exhaustAll() {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var isComplete = false;
+ var innerSub = null;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function (inner) {
+ if (!innerSub) {
+ innerSub = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__["innerFrom"])(inner).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, undefined, function () {
+ innerSub = null;
+ isComplete && subscriber.complete();
+ }));
+ }
+ }, function () {
+ isComplete = true;
+ !innerSub && subscriber.complete();
+ }));
+ });
+}
+//# sourceMappingURL=exhaustAll.js.map
- const l = (116 * y) - 16;
- const a = 500 * (x - y);
- const b = 200 * (y - z);
+/***/ }),
+/* 170 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return [l, a, b];
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return exhaustMap; });
+/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(96);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30);
-convert.hsl.rgb = function (hsl) {
- const h = hsl[0] / 360;
- const s = hsl[1] / 100;
- const l = hsl[2] / 100;
- let t2;
- let t3;
- let val;
- if (s === 0) {
- val = l * 255;
- return [val, val, val];
- }
- if (l < 0.5) {
- t2 = l * (1 + s);
- } else {
- t2 = l + s - l * s;
- }
- const t1 = 2 * l - t2;
+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"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_0__["map"])(function (b, ii) { return resultSelector(a, b, i, ii); })); }));
+ };
+ }
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__["operate"])(function (source, subscriber) {
+ var index = 0;
+ var innerSub = null;
+ var isComplete = false;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__["createOperatorSubscriber"])(subscriber, function (outerValue) {
+ if (!innerSub) {
+ innerSub = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__["createOperatorSubscriber"])(subscriber, undefined, function () {
+ innerSub = null;
+ isComplete && subscriber.complete();
+ });
+ Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__["innerFrom"])(project(outerValue, index++)).subscribe(innerSub);
+ }
+ }, function () {
+ isComplete = true;
+ !innerSub && subscriber.complete();
+ }));
+ });
+}
+//# sourceMappingURL=exhaustMap.js.map
- const rgb = [0, 0, 0];
- for (let i = 0; i < 3; i++) {
- t3 = h + 1 / 3 * -(i - 1);
- if (t3 < 0) {
- t3++;
- }
+/***/ }),
+/* 171 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (t3 > 1) {
- t3--;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return expand; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _mergeInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105);
- if (6 * t3 < 1) {
- val = t1 + (t2 - t1) * 6 * t3;
- } else if (2 * t3 < 1) {
- val = t2;
- } else if (3 * t3 < 2) {
- val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
- } else {
- val = t1;
- }
- rgb[i] = val * 255;
- }
+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"])(function (source, subscriber) {
+ return Object(_mergeInternals__WEBPACK_IMPORTED_MODULE_1__["mergeInternals"])(source, subscriber, project, concurrent, undefined, true, scheduler);
+ });
+}
+//# sourceMappingURL=expand.js.map
- return rgb;
-};
+/***/ }),
+/* 172 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-convert.hsl.hsv = function (hsl) {
- const h = hsl[0];
- let s = hsl[1] / 100;
- let l = hsl[2] / 100;
- let smin = s;
- const lmin = Math.max(l, 0.01);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return finalize; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
- l *= 2;
- s *= (l <= 1) ? l : 2 - l;
- smin *= lmin <= 1 ? lmin : 2 - lmin;
- const v = (l + s) / 2;
- const sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
+function finalize(callback) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ try {
+ source.subscribe(subscriber);
+ }
+ finally {
+ subscriber.add(callback);
+ }
+ });
+}
+//# sourceMappingURL=finalize.js.map
- return [h, sv * 100, v * 100];
-};
+/***/ }),
+/* 173 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-convert.hsv.rgb = function (hsv) {
- const h = hsv[0] / 60;
- const s = hsv[1] / 100;
- let v = hsv[2] / 100;
- const hi = Math.floor(h) % 6;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return find; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createFind", function() { return createFind; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
- const f = h - Math.floor(h);
- const p = 255 * v * (1 - s);
- const q = 255 * v * (1 - (s * f));
- const t = 255 * v * (1 - (s * (1 - f)));
- v *= 255;
- switch (hi) {
- case 0:
- return [v, t, p];
- case 1:
- return [q, v, p];
- case 2:
- return [p, v, t];
- case 3:
- return [p, q, v];
- case 4:
- return [t, p, v];
- case 5:
- return [v, p, q];
- }
-};
+function find(predicate, thisArg) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(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"])(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
-convert.hsv.hsl = function (hsv) {
- const h = hsv[0];
- const s = hsv[1] / 100;
- const v = hsv[2] / 100;
- const vmin = Math.max(v, 0.01);
- let sl;
- let l;
+/***/ }),
+/* 174 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- l = (2 - s) * v;
- const lmin = (2 - s) * vmin;
- sl = s * vmin;
- sl /= (lmin <= 1) ? lmin : 2 - lmin;
- sl = sl || 0;
- l /= 2;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return findIndex; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(173);
- return [h, sl * 100, l * 100];
-};
-// http://dev.w3.org/csswg/css-color/#hwb-to-rgb
-convert.hwb.rgb = function (hwb) {
- const h = hwb[0] / 360;
- let wh = hwb[1] / 100;
- let bl = hwb[2] / 100;
- const ratio = wh + bl;
- let f;
-
- // Wh + bl cant be > 1
- if (ratio > 1) {
- wh /= ratio;
- bl /= ratio;
- }
-
- const i = Math.floor(6 * h);
- const v = 1 - bl;
- f = 6 * h - i;
-
- if ((i & 0x01) !== 0) {
- f = 1 - f;
- }
-
- const n = wh + f * (v - wh); // Linear interpolation
-
- let r;
- let g;
- let b;
- /* eslint-disable max-statements-per-line,no-multi-spaces */
- switch (i) {
- default:
- case 6:
- case 0: r = v; g = n; b = wh; break;
- case 1: r = n; g = v; b = wh; break;
- case 2: r = wh; g = v; b = n; break;
- case 3: r = wh; g = n; b = v; break;
- case 4: r = n; g = wh; b = v; break;
- case 5: r = v; g = wh; b = n; break;
- }
- /* eslint-enable max-statements-per-line,no-multi-spaces */
+function findIndex(predicate, thisArg) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(Object(_find__WEBPACK_IMPORTED_MODULE_1__["createFind"])(predicate, thisArg, 'index'));
+}
+//# sourceMappingURL=findIndex.js.map
- return [r * 255, g * 255, b * 255];
-};
+/***/ }),
+/* 175 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-convert.cmyk.rgb = function (cmyk) {
- const c = cmyk[0] / 100;
- const m = cmyk[1] / 100;
- const y = cmyk[2] / 100;
- const k = cmyk[3] / 100;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return first; });
+/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86);
+/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(123);
+/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(157);
+/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(154);
+/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(165);
+/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26);
- const r = 1 - Math.min(1, c * (1 - k) + k);
- const g = 1 - Math.min(1, m * (1 - k) + k);
- const b = 1 - Math.min(1, y * (1 - k) + k);
- return [r * 255, g * 255, b * 255];
-};
-convert.xyz.rgb = function (xyz) {
- const x = xyz[0] / 100;
- const y = xyz[1] / 100;
- const z = xyz[2] / 100;
- let r;
- let g;
- let b;
- r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
- g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
- b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
- // Assume sRGB
- r = r > 0.0031308
- ? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)
- : r * 12.92;
- g = g > 0.0031308
- ? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)
- : g * 12.92;
+function first(predicate, defaultValue) {
+ var hasDefaultValue = arguments.length >= 2;
+ return function (source) {
+ return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__["identity"], Object(_take__WEBPACK_IMPORTED_MODULE_2__["take"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__["defaultIfEmpty"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__["throwIfEmpty"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__["EmptyError"](); }));
+ };
+}
+//# sourceMappingURL=first.js.map
- b = b > 0.0031308
- ? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)
- : b * 12.92;
+/***/ }),
+/* 176 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- r = Math.min(Math.max(0, r), 1);
- g = Math.min(Math.max(0, g), 1);
- b = Math.min(Math.max(0, b), 1);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return groupBy; });
+/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66);
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(34);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30);
- return [r * 255, g * 255, b * 255];
-};
-convert.xyz.lab = function (xyz) {
- let x = xyz[0];
- let y = xyz[1];
- let z = xyz[2];
- x /= 95.047;
- y /= 100;
- z /= 108.883;
- x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);
- y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);
- z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);
- const l = (116 * y) - 16;
- const a = 500 * (x - y);
- const b = 200 * (y - z);
+function groupBy(keySelector, elementOrOptions, duration, connector) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_3__["operate"])(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"](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"]()));
+ var grouped = createGroupedObservable(key_1, group_1);
+ subscriber.next(grouped);
+ if (duration) {
+ var durationSubscriber_1 = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__["createOperatorSubscriber"])(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"])(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"](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
- return [l, a, b];
-};
+/***/ }),
+/* 177 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-convert.lab.xyz = function (lab) {
- const l = lab[0];
- const a = lab[1];
- const b = lab[2];
- let x;
- let y;
- let z;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return isEmpty; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
- y = (l + 16) / 116;
- x = a / 500 + y;
- z = y - b / 200;
- const y2 = y ** 3;
- const x2 = x ** 3;
- const z2 = z ** 3;
- y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
- x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
- z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
+function isEmpty() {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, function () {
+ subscriber.next(false);
+ subscriber.complete();
+ }, function () {
+ subscriber.next(true);
+ subscriber.complete();
+ }));
+ });
+}
+//# sourceMappingURL=isEmpty.js.map
- x *= 95.047;
- y *= 100;
- z *= 108.883;
+/***/ }),
+/* 178 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return [x, y, z];
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return last; });
+/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86);
+/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(123);
+/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(179);
+/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(165);
+/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(154);
+/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26);
-convert.lab.lch = function (lab) {
- const l = lab[0];
- const a = lab[1];
- const b = lab[2];
- let h;
- const hr = Math.atan2(b, a);
- h = hr * 360 / 2 / Math.PI;
- if (h < 0) {
- h += 360;
- }
- const c = Math.sqrt(a * a + b * b);
- return [l, c, h];
-};
-convert.lch.lab = function (lch) {
- const l = lch[0];
- const c = lch[1];
- const h = lch[2];
+function last(predicate, defaultValue) {
+ var hasDefaultValue = arguments.length >= 2;
+ return function (source) {
+ return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__["identity"], Object(_takeLast__WEBPACK_IMPORTED_MODULE_2__["takeLast"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__["defaultIfEmpty"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__["throwIfEmpty"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__["EmptyError"](); }));
+ };
+}
+//# sourceMappingURL=last.js.map
- const hr = h / 360 * 2 * Math.PI;
- const a = c * Math.cos(hr);
- const b = c * Math.sin(hr);
+/***/ }),
+/* 179 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return [l, a, b];
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return takeLast; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30);
-convert.rgb.ansi16 = function (args, saturation = null) {
- const [r, g, b] = args;
- let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization
- value = Math.round(value / 50);
- if (value === 0) {
- return 30;
- }
- let ansi = 30
- + ((Math.round(b / 255) << 2)
- | (Math.round(g / 255) << 1)
- | Math.round(r / 255));
+function takeLast(count) {
+ return count <= 0
+ ? function () { return _observable_empty__WEBPACK_IMPORTED_MODULE_1__["EMPTY"]; }
+ : Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__["operate"])(function (source, subscriber) {
+ var buffer = [];
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__["createOperatorSubscriber"])(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"])(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 (value === 2) {
- ansi += 60;
- }
+/***/ }),
+/* 180 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return ansi;
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return materialize; });
+/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
-convert.hsv.ansi16 = function (args) {
- // Optimization here; we already know the value and don't need to get
- // it converted for us.
- return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
-};
-convert.rgb.ansi256 = function (args) {
- const r = args[0];
- const g = args[1];
- const b = args[2];
- // We use the extended greyscale palette here, with the exception of
- // black and white. normal palette only has 4 greyscale shades.
- if (r === g && g === b) {
- if (r < 8) {
- return 16;
- }
+function materialize() {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function (value) {
+ subscriber.next(_Notification__WEBPACK_IMPORTED_MODULE_0__["Notification"].createNext(value));
+ }, function () {
+ subscriber.next(_Notification__WEBPACK_IMPORTED_MODULE_0__["Notification"].createComplete());
+ subscriber.complete();
+ }, function (err) {
+ subscriber.next(_Notification__WEBPACK_IMPORTED_MODULE_0__["Notification"].createError(err));
+ subscriber.complete();
+ }));
+ });
+}
+//# sourceMappingURL=materialize.js.map
- if (r > 248) {
- return 231;
- }
+/***/ }),
+/* 181 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return Math.round(((r - 8) / 247) * 24) + 232;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; });
+/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(141);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
- const ansi = 16
- + (36 * Math.round(r / 255 * 5))
- + (6 * Math.round(g / 255 * 5))
- + Math.round(b / 255 * 5);
- return ansi;
-};
+function max(comparer) {
+ return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(comparer) ? function (x, y) { return (comparer(x, y) > 0 ? x : y); } : function (x, y) { return (x > y ? x : y); });
+}
+//# sourceMappingURL=max.js.map
-convert.ansi16.rgb = function (args) {
- let color = args % 10;
+/***/ }),
+/* 182 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- // Handle greyscale
- if (color === 0 || color === 7) {
- if (args > 50) {
- color += 3.5;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return flatMap; });
+/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(104);
- color = color / 10.5 * 255;
+var flatMap = _mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"];
+//# sourceMappingURL=flatMap.js.map
- return [color, color, color];
- }
+/***/ }),
+/* 183 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- const mult = (~~(args > 50) + 1) * 0.5;
- const r = ((color & 1) * mult) * 255;
- const g = (((color >> 1) & 1) * mult) * 255;
- const b = (((color >> 2) & 1) * mult) * 255;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return mergeMapTo; });
+/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(104);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
- return [r, g, b];
-};
-convert.ansi256.rgb = function (args) {
- // Handle greyscale
- if (args >= 232) {
- const c = (args - 232) * 10 + 8;
- return [c, c, c];
- }
+function mergeMapTo(innerObservable, resultSelector, concurrent) {
+ if (concurrent === void 0) { concurrent = Infinity; }
+ if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(resultSelector)) {
+ return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(function () { return innerObservable; }, resultSelector, concurrent);
+ }
+ if (typeof resultSelector === 'number') {
+ concurrent = resultSelector;
+ }
+ return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(function () { return innerObservable; }, concurrent);
+}
+//# sourceMappingURL=mergeMapTo.js.map
- args -= 16;
+/***/ }),
+/* 184 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let rem;
- const r = Math.floor(args / 36) / 5 * 255;
- const g = Math.floor((rem = args % 36) / 6) / 5 * 255;
- const b = (rem % 6) / 5 * 255;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return mergeScan; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _mergeInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105);
- return [r, g, b];
-};
-convert.rgb.hex = function (args) {
- const integer = ((Math.round(args[0]) & 0xFF) << 16)
- + ((Math.round(args[1]) & 0xFF) << 8)
- + (Math.round(args[2]) & 0xFF);
+function mergeScan(accumulator, seed, concurrent) {
+ if (concurrent === void 0) { concurrent = Infinity; }
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var state = seed;
+ return Object(_mergeInternals__WEBPACK_IMPORTED_MODULE_1__["mergeInternals"])(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
- const string = integer.toString(16).toUpperCase();
- return '000000'.substring(string.length) + string;
-};
+/***/ }),
+/* 185 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-convert.hex.rgb = function (args) {
- const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
- if (!match) {
- return [0, 0, 0];
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeWith", function() { return mergeWith; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(186);
- let colorString = match[0];
- if (match[0].length === 3) {
- colorString = colorString.split('').map(char => {
- return char + char;
- }).join('');
- }
+function mergeWith() {
+ var otherSources = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ otherSources[_i] = arguments[_i];
+ }
+ return _merge__WEBPACK_IMPORTED_MODULE_1__["merge"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(otherSources)));
+}
+//# sourceMappingURL=mergeWith.js.map
- const integer = parseInt(colorString, 16);
- const r = (integer >> 16) & 0xFF;
- const g = (integer >> 8) & 0xFF;
- const b = integer & 0xFF;
+/***/ }),
+/* 186 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return [r, g, b];
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(119);
+/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(103);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(61);
+/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(63);
-convert.rgb.hcg = function (rgb) {
- const r = rgb[0] / 255;
- const g = rgb[1] / 255;
- const b = rgb[2] / 255;
- const max = Math.max(Math.max(r, g), b);
- const min = Math.min(Math.min(r, g), b);
- const chroma = (max - min);
- let grayscale;
- let hue;
- if (chroma < 1) {
- grayscale = min / (1 - chroma);
- } else {
- grayscale = 0;
- }
- if (chroma <= 0) {
- hue = 0;
- } else
- if (max === r) {
- hue = ((g - b) / chroma) % 6;
- } else
- if (max === g) {
- hue = 2 + (b - r) / chroma;
- } else {
- hue = 4 + (r - g) / chroma;
- }
- hue /= 6;
- hue %= 1;
- return [hue * 360, chroma * 100, grayscale * 100];
-};
-convert.hsl.hcg = function (hsl) {
- const s = hsl[1] / 100;
- const l = hsl[2] / 100;
+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"])(args);
+ var concurrent = Object(_util_args__WEBPACK_IMPORTED_MODULE_4__["popNumber"])(args, Infinity);
+ args = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__["argsOrArgArray"])(args);
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ Object(_mergeAll__WEBPACK_IMPORTED_MODULE_3__["mergeAll"])(concurrent)(Object(_observable_from__WEBPACK_IMPORTED_MODULE_5__["from"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(args)), scheduler)).subscribe(subscriber);
+ });
+}
+//# sourceMappingURL=merge.js.map
- const c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));
+/***/ }),
+/* 187 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let f = 0;
- if (c < 1.0) {
- f = (l - 0.5 * c) / (1.0 - c);
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return min; });
+/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(141);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
- return [hsl[0], c * 100, f * 100];
-};
-convert.hsv.hcg = function (hsv) {
- const s = hsv[1] / 100;
- const v = hsv[2] / 100;
+function min(comparer) {
+ return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(comparer) ? function (x, y) { return (comparer(x, y) < 0 ? x : y); } : function (x, y) { return (x < y ? x : y); });
+}
+//# sourceMappingURL=min.js.map
- const c = s * v;
- let f = 0;
+/***/ }),
+/* 188 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (c < 1.0) {
- f = (v - c) / (1 - c);
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return multicast; });
+/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
+/* harmony import */ var _connect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(149);
- return [hsv[0], c * 100, f * 100];
-};
-convert.hcg.rgb = function (hcg) {
- const h = hcg[0] / 360;
- const c = hcg[1] / 100;
- const g = hcg[2] / 100;
- if (c === 0.0) {
- return [g * 255, g * 255, g * 255];
- }
+function multicast(subjectOrSubjectFactory, selector) {
+ var subjectFactory = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () { return subjectOrSubjectFactory; };
+ if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(selector)) {
+ return Object(_connect__WEBPACK_IMPORTED_MODULE_2__["connect"])(selector, {
+ connector: subjectFactory,
+ });
+ }
+ return function (source) { return new _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__["ConnectableObservable"](source, subjectFactory); };
+}
+//# sourceMappingURL=multicast.js.map
- const pure = [0, 0, 0];
- const hi = (h % 1) * 6;
- const v = hi % 1;
- const w = 1 - v;
- let mg = 0;
+/***/ }),
+/* 189 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- /* eslint-disable max-statements-per-line */
- switch (Math.floor(hi)) {
- case 0:
- pure[0] = 1; pure[1] = v; pure[2] = 0; break;
- case 1:
- pure[0] = w; pure[1] = 1; pure[2] = 0; break;
- case 2:
- pure[0] = 0; pure[1] = 1; pure[2] = v; break;
- case 3:
- pure[0] = 0; pure[1] = w; pure[2] = 1; break;
- case 4:
- pure[0] = v; pure[1] = 0; pure[2] = 1; break;
- default:
- pure[0] = 1; pure[1] = 0; pure[2] = w;
- }
- /* eslint-enable max-statements-per-line */
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return pairwise; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
- mg = (1.0 - c) * g;
- return [
- (c * pure[0] + mg) * 255,
- (c * pure[1] + mg) * 255,
- (c * pure[2] + mg) * 255
- ];
-};
+function pairwise() {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var prev;
+ var hasPrev = false;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, function (value) {
+ var p = prev;
+ prev = value;
+ hasPrev && subscriber.next([p, value]);
+ hasPrev = true;
+ }));
+ });
+}
+//# sourceMappingURL=pairwise.js.map
-convert.hcg.hsv = function (hcg) {
- const c = hcg[1] / 100;
- const g = hcg[2] / 100;
+/***/ }),
+/* 190 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- const v = c + g * (1.0 - c);
- let f = 0;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return pluck; });
+/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(96);
- if (v > 0.0) {
- f = c / v;
- }
+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"])(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
- return [hcg[0], f * 100, v * 100];
-};
+/***/ }),
+/* 191 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-convert.hcg.hsl = function (hcg) {
- const c = hcg[1] / 100;
- const g = hcg[2] / 100;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return publish; });
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
+/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(188);
+/* harmony import */ var _connect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(149);
- const l = g * (1.0 - c) + 0.5 * c;
- let s = 0;
- if (l > 0.0 && l < 0.5) {
- s = c / (2 * l);
- } else
- if (l >= 0.5 && l < 1.0) {
- s = c / (2 * (1 - l));
- }
- return [hcg[0], s * 100, l * 100];
-};
+function publish(selector) {
+ return selector ? function (source) { return Object(_connect__WEBPACK_IMPORTED_MODULE_2__["connect"])(selector)(source); } : function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"]())(source); };
+}
+//# sourceMappingURL=publish.js.map
-convert.hcg.hwb = function (hcg) {
- const c = hcg[1] / 100;
- const g = hcg[2] / 100;
- const v = c + g * (1.0 - c);
- return [hcg[0], (v - c) * 100, (1 - v) * 100];
-};
+/***/ }),
+/* 192 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-convert.hwb.hcg = function (hwb) {
- const w = hwb[1] / 100;
- const b = hwb[2] / 100;
- const v = 1 - b;
- const c = v - w;
- let g = 0;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return publishBehavior; });
+/* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
+/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27);
- if (c < 1) {
- g = (v - c) / (1 - c);
- }
- return [hwb[0], c * 100, g * 100];
-};
+function publishBehavior(initialValue) {
+ return function (source) {
+ var subject = new _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__["BehaviorSubject"](initialValue);
+ return new _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__["ConnectableObservable"](source, function () { return subject; });
+ };
+}
+//# sourceMappingURL=publishBehavior.js.map
-convert.apple.rgb = function (apple) {
- return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
-};
+/***/ }),
+/* 193 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-convert.rgb.apple = function (rgb) {
- return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return publishLast; });
+/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(39);
+/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27);
-convert.gray.rgb = function (args) {
- return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
-};
-convert.gray.hsl = function (args) {
- return [0, 0, args[0]];
-};
+function publishLast() {
+ return function (source) {
+ var subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__["AsyncSubject"]();
+ return new _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__["ConnectableObservable"](source, function () { return subject; });
+ };
+}
+//# sourceMappingURL=publishLast.js.map
-convert.gray.hsv = convert.gray.hsl;
+/***/ }),
+/* 194 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-convert.gray.hwb = function (gray) {
- return [0, 100, gray[0]];
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return publishReplay; });
+/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(37);
+/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(188);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
-convert.gray.cmyk = function (gray) {
- return [0, 0, 0, gray[0]];
-};
-convert.gray.lab = function (gray) {
- return [gray[0], 0, 0];
-};
-convert.gray.hex = function (gray) {
- const val = Math.round(gray[0] / 100 * 255) & 0xFF;
- const integer = (val << 16) + (val << 8) + val;
+function publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {
+ if (selectorOrScheduler && !Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(selectorOrScheduler)) {
+ timestampProvider = selectorOrScheduler;
+ }
+ var selector = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(selectorOrScheduler) ? selectorOrScheduler : undefined;
+ return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__["ReplaySubject"](bufferSize, windowTime, timestampProvider), selector)(source); };
+}
+//# sourceMappingURL=publishReplay.js.map
- const string = integer.toString(16).toUpperCase();
- return '000000'.substring(string.length) + string;
-};
+/***/ }),
+/* 195 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-convert.rgb.gray = function (rgb) {
- const val = (rgb[0] + rgb[1] + rgb[2]) / 3;
- return [val / 255 * 100];
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "raceWith", function() { return raceWith; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(124);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
+/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26);
+
+
+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"]
+ : Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__["operate"])(function (source, subscriber) {
+ Object(_observable_race__WEBPACK_IMPORTED_MODULE_1__["raceInit"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(otherSources)))(subscriber);
+ });
+}
+//# sourceMappingURL=raceWith.js.map
+
/***/ }),
-/* 119 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 196 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-
-
-module.exports = {
- "aliceblue": [240, 248, 255],
- "antiquewhite": [250, 235, 215],
- "aqua": [0, 255, 255],
- "aquamarine": [127, 255, 212],
- "azure": [240, 255, 255],
- "beige": [245, 245, 220],
- "bisque": [255, 228, 196],
- "black": [0, 0, 0],
- "blanchedalmond": [255, 235, 205],
- "blue": [0, 0, 255],
- "blueviolet": [138, 43, 226],
- "brown": [165, 42, 42],
- "burlywood": [222, 184, 135],
- "cadetblue": [95, 158, 160],
- "chartreuse": [127, 255, 0],
- "chocolate": [210, 105, 30],
- "coral": [255, 127, 80],
- "cornflowerblue": [100, 149, 237],
- "cornsilk": [255, 248, 220],
- "crimson": [220, 20, 60],
- "cyan": [0, 255, 255],
- "darkblue": [0, 0, 139],
- "darkcyan": [0, 139, 139],
- "darkgoldenrod": [184, 134, 11],
- "darkgray": [169, 169, 169],
- "darkgreen": [0, 100, 0],
- "darkgrey": [169, 169, 169],
- "darkkhaki": [189, 183, 107],
- "darkmagenta": [139, 0, 139],
- "darkolivegreen": [85, 107, 47],
- "darkorange": [255, 140, 0],
- "darkorchid": [153, 50, 204],
- "darkred": [139, 0, 0],
- "darksalmon": [233, 150, 122],
- "darkseagreen": [143, 188, 143],
- "darkslateblue": [72, 61, 139],
- "darkslategray": [47, 79, 79],
- "darkslategrey": [47, 79, 79],
- "darkturquoise": [0, 206, 209],
- "darkviolet": [148, 0, 211],
- "deeppink": [255, 20, 147],
- "deepskyblue": [0, 191, 255],
- "dimgray": [105, 105, 105],
- "dimgrey": [105, 105, 105],
- "dodgerblue": [30, 144, 255],
- "firebrick": [178, 34, 34],
- "floralwhite": [255, 250, 240],
- "forestgreen": [34, 139, 34],
- "fuchsia": [255, 0, 255],
- "gainsboro": [220, 220, 220],
- "ghostwhite": [248, 248, 255],
- "gold": [255, 215, 0],
- "goldenrod": [218, 165, 32],
- "gray": [128, 128, 128],
- "green": [0, 128, 0],
- "greenyellow": [173, 255, 47],
- "grey": [128, 128, 128],
- "honeydew": [240, 255, 240],
- "hotpink": [255, 105, 180],
- "indianred": [205, 92, 92],
- "indigo": [75, 0, 130],
- "ivory": [255, 255, 240],
- "khaki": [240, 230, 140],
- "lavender": [230, 230, 250],
- "lavenderblush": [255, 240, 245],
- "lawngreen": [124, 252, 0],
- "lemonchiffon": [255, 250, 205],
- "lightblue": [173, 216, 230],
- "lightcoral": [240, 128, 128],
- "lightcyan": [224, 255, 255],
- "lightgoldenrodyellow": [250, 250, 210],
- "lightgray": [211, 211, 211],
- "lightgreen": [144, 238, 144],
- "lightgrey": [211, 211, 211],
- "lightpink": [255, 182, 193],
- "lightsalmon": [255, 160, 122],
- "lightseagreen": [32, 178, 170],
- "lightskyblue": [135, 206, 250],
- "lightslategray": [119, 136, 153],
- "lightslategrey": [119, 136, 153],
- "lightsteelblue": [176, 196, 222],
- "lightyellow": [255, 255, 224],
- "lime": [0, 255, 0],
- "limegreen": [50, 205, 50],
- "linen": [250, 240, 230],
- "magenta": [255, 0, 255],
- "maroon": [128, 0, 0],
- "mediumaquamarine": [102, 205, 170],
- "mediumblue": [0, 0, 205],
- "mediumorchid": [186, 85, 211],
- "mediumpurple": [147, 112, 219],
- "mediumseagreen": [60, 179, 113],
- "mediumslateblue": [123, 104, 238],
- "mediumspringgreen": [0, 250, 154],
- "mediumturquoise": [72, 209, 204],
- "mediumvioletred": [199, 21, 133],
- "midnightblue": [25, 25, 112],
- "mintcream": [245, 255, 250],
- "mistyrose": [255, 228, 225],
- "moccasin": [255, 228, 181],
- "navajowhite": [255, 222, 173],
- "navy": [0, 0, 128],
- "oldlace": [253, 245, 230],
- "olive": [128, 128, 0],
- "olivedrab": [107, 142, 35],
- "orange": [255, 165, 0],
- "orangered": [255, 69, 0],
- "orchid": [218, 112, 214],
- "palegoldenrod": [238, 232, 170],
- "palegreen": [152, 251, 152],
- "paleturquoise": [175, 238, 238],
- "palevioletred": [219, 112, 147],
- "papayawhip": [255, 239, 213],
- "peachpuff": [255, 218, 185],
- "peru": [205, 133, 63],
- "pink": [255, 192, 203],
- "plum": [221, 160, 221],
- "powderblue": [176, 224, 230],
- "purple": [128, 0, 128],
- "rebeccapurple": [102, 51, 153],
- "red": [255, 0, 0],
- "rosybrown": [188, 143, 143],
- "royalblue": [65, 105, 225],
- "saddlebrown": [139, 69, 19],
- "salmon": [250, 128, 114],
- "sandybrown": [244, 164, 96],
- "seagreen": [46, 139, 87],
- "seashell": [255, 245, 238],
- "sienna": [160, 82, 45],
- "silver": [192, 192, 192],
- "skyblue": [135, 206, 235],
- "slateblue": [106, 90, 205],
- "slategray": [112, 128, 144],
- "slategrey": [112, 128, 144],
- "snow": [255, 250, 250],
- "springgreen": [0, 255, 127],
- "steelblue": [70, 130, 180],
- "tan": [210, 180, 140],
- "teal": [0, 128, 128],
- "thistle": [216, 191, 216],
- "tomato": [255, 99, 71],
- "turquoise": [64, 224, 208],
- "violet": [238, 130, 238],
- "wheat": [245, 222, 179],
- "white": [255, 255, 255],
- "whitesmoke": [245, 245, 245],
- "yellow": [255, 255, 0],
- "yellowgreen": [154, 205, 50]
-};
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return repeat; });
+/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(59);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66);
+/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(114);
-/***/ }),
-/* 120 */
-/***/ (function(module, exports, __webpack_require__) {
-const conversions = __webpack_require__(118);
-/*
- This function routes a model to all other models.
- all functions that are routed have a property `.conversion` attached
- to the returned synthetic function. This property is an array
- of strings, each with the steps in between the 'from' and 'to'
- color models (inclusive).
+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"]; }
+ : Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(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"])(delay) : Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__["innerFrom"])(delay(soFar));
+ var notifierSubscriber_1 = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(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"])(subscriber, undefined, function () {
+ if (++soFar < count) {
+ if (sourceSub) {
+ resubscribe();
+ }
+ else {
+ syncUnsub = true;
+ }
+ }
+ else {
+ subscriber.complete();
+ }
+ }));
+ if (syncUnsub) {
+ resubscribe();
+ }
+ };
+ subscribeToSource();
+ });
+}
+//# sourceMappingURL=repeat.js.map
- conversions that are not possible simply are not included.
-*/
+/***/ }),
+/* 197 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-function buildGraph() {
- const graph = {};
- // https://jsperf.com/object-keys-vs-for-in-with-closure/3
- const models = Object.keys(conversions);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return repeatWhen; });
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
- for (let len = models.length, i = 0; i < len; i++) {
- graph[models[i]] = {
- // http://jsperf.com/1-vs-infinity
- // micro-opt, but this is simple.
- distance: -1,
- parent: null
- };
- }
- return graph;
+
+function repeatWhen(notifier) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(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"]();
+ notifier(completions$).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(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"])(subscriber, undefined, function () {
+ isMainComplete = true;
+ !checkComplete() && getCompletionSubject().next();
+ }));
+ if (syncResub) {
+ innerSub.unsubscribe();
+ innerSub = null;
+ syncResub = false;
+ subscribeForRepeatWhen();
+ }
+ };
+ subscribeForRepeatWhen();
+ });
}
+//# sourceMappingURL=repeatWhen.js.map
-// https://en.wikipedia.org/wiki/Breadth-first_search
-function deriveBFS(fromModel) {
- const graph = buildGraph();
- const queue = [fromModel]; // Unshift -> queue -> pop
+/***/ }),
+/* 198 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- graph[fromModel].distance = 0;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return retry; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
+/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26);
+/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(114);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(66);
- while (queue.length) {
- const current = queue.pop();
- const adjacents = Object.keys(conversions[current]);
- for (let len = adjacents.length, i = 0; i < len; i++) {
- const adjacent = adjacents[i];
- const node = graph[adjacent];
- if (node.distance === -1) {
- node.distance = graph[current].distance + 1;
- node.parent = current;
- queue.unshift(adjacent);
- }
- }
- }
- return graph;
-}
-function link(from, to) {
- return function (args) {
- return to(from(args));
- };
+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"]
+ : Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var soFar = 0;
+ var innerSub;
+ var subscribeForRetry = function () {
+ var syncUnsub = false;
+ innerSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(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"])(delay) : Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__["innerFrom"])(delay(err, soFar));
+ var notifierSubscriber_1 = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(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
-function wrapConversion(toModel, graph) {
- const path = [graph[toModel].parent, toModel];
- let fn = conversions[graph[toModel].parent][toModel];
+/***/ }),
+/* 199 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let cur = graph[toModel].parent;
- while (graph[cur].parent) {
- path.unshift(graph[cur].parent);
- fn = link(conversions[graph[cur].parent][cur], fn);
- cur = graph[cur].parent;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return retryWhen; });
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
- fn.conversion = path;
- return fn;
-}
-module.exports = function (fromModel) {
- const graph = deriveBFS(fromModel);
- const conversion = {};
- const models = Object.keys(graph);
- for (let len = models.length, i = 0; i < len; i++) {
- const toModel = models[i];
- const node = graph[toModel];
+function retryWhen(notifier) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ var innerSub;
+ var syncResub = false;
+ var errors$;
+ var subscribeForRetryWhen = function () {
+ innerSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, undefined, undefined, function (err) {
+ if (!errors$) {
+ errors$ = new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"]();
+ notifier(errors$).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(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
- if (node.parent === null) {
- // No possible conversion, or this node is the source model.
- continue;
- }
+/***/ }),
+/* 200 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- conversion[toModel] = wrapConversion(toModel, graph);
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return sample; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
- return conversion;
-};
+function sample(notifier) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var hasValue = false;
+ var lastValue = null;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function (value) {
+ hasValue = true;
+ lastValue = value;
+ }));
+ notifier.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function () {
+ if (hasValue) {
+ hasValue = false;
+ var value = lastValue;
+ lastValue = null;
+ subscriber.next(value);
+ }
+ }, _util_noop__WEBPACK_IMPORTED_MODULE_1__["noop"]));
+ });
+}
+//# sourceMappingURL=sample.js.map
/***/ }),
-/* 121 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 201 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return sampleTime; });
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50);
+/* harmony import */ var _sample__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(200);
+/* harmony import */ var _observable_interval__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(113);
-const os = __webpack_require__(122);
-const tty = __webpack_require__(123);
-const hasFlag = __webpack_require__(124);
-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;
+function sampleTime(period, scheduler) {
+ if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["asyncScheduler"]; }
+ return Object(_sample__WEBPACK_IMPORTED_MODULE_1__["sample"])(Object(_observable_interval__WEBPACK_IMPORTED_MODULE_2__["interval"])(period, scheduler));
}
+//# sourceMappingURL=sampleTime.js.map
-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);
- }
-}
+/***/ }),
+/* 202 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-function translateLevel(level) {
- if (level === 0) {
- return false;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return scan; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _scanInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(142);
- 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;
- }
+function scan(accumulator, seed) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(Object(_scanInternals__WEBPACK_IMPORTED_MODULE_1__["scanInternals"])(accumulator, seed, arguments.length >= 2, true));
+}
+//# sourceMappingURL=scan.js.map
- if (haveStream && !streamIsTTY && forceColor === undefined) {
- return 0;
- }
+/***/ }),
+/* 203 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- const min = forceColor || 0;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return sequenceEqual; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
- 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;
- }
+function sequenceEqual(compareTo, comparator) {
+ if (comparator === void 0) { comparator = function (a, b) { return a === b; }; }
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(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"])(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
- return 1;
- }
+/***/ }),
+/* 204 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if ('CI' in env) {
- if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {
- return 1;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return share; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(63);
+/* harmony import */ var _operators_take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(157);
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(34);
+/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(11);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29);
- 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
- }
- }
+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, _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"])(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"]({
+ 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"])(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"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(args))).pipe(Object(_operators_take__WEBPACK_IMPORTED_MODULE_2__["take"])(1))
+ .subscribe(function () { return reset(); });
+}
+//# sourceMappingURL=share.js.map
- if (/-256(color)?$/i.test(env.TERM)) {
- return 2;
- }
+/***/ }),
+/* 205 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
- return 1;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return shareReplay; });
+/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(37);
+/* harmony import */ var _share__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(204);
- if ('COLORTERM' in env) {
- return 1;
- }
- return min;
+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"])({
+ connector: function () { return new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__["ReplaySubject"](bufferSize, windowTime, scheduler); },
+ resetOnError: true,
+ resetOnComplete: false,
+ resetOnRefCountZero: refCount,
+ });
}
+//# sourceMappingURL=shareReplay.js.map
-function getSupportLevel(stream) {
- const level = supportsColor(stream, stream && stream.isTTY);
- return translateLevel(level);
-}
+/***/ }),
+/* 206 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-module.exports = {
- supportsColor: getSupportLevel,
- stdout: translateLevel(supportsColor(true, tty.isatty(1))),
- stderr: translateLevel(supportsColor(true, tty.isatty(2)))
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "single", function() { return single; });
+/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86);
+/* harmony import */ var _util_SequenceError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90);
+/* harmony import */ var _util_NotFoundError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(89);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30);
-/***/ }),
-/* 122 */
-/***/ (function(module, exports) {
-module.exports = require("os");
-/***/ }),
-/* 123 */
-/***/ (function(module, exports) {
-module.exports = require("tty");
+function single(predicate) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_3__["operate"])(function (source, subscriber) {
+ var hasValue = false;
+ var singleValue;
+ var seenValue = false;
+ var index = 0;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__["createOperatorSubscriber"])(subscriber, function (value) {
+ seenValue = true;
+ if (!predicate || predicate(value, index++, source)) {
+ hasValue && subscriber.error(new _util_SequenceError__WEBPACK_IMPORTED_MODULE_1__["SequenceError"]('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"]('No matching values') : new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__["EmptyError"]());
+ }
+ }));
+ });
+}
+//# sourceMappingURL=single.js.map
/***/ }),
-/* 124 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 207 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return skip; });
+/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(123);
+function skip(count) {
+ return Object(_filter__WEBPACK_IMPORTED_MODULE_0__["filter"])(function (_, index) { return count <= index; });
+}
+//# sourceMappingURL=skip.js.map
-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);
-};
+/***/ }),
+/* 208 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return skipLast; });
+/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+
+
+
+function skipLast(skipCount) {
+ return skipCount <= 0
+ ?
+ _util_identity__WEBPACK_IMPORTED_MODULE_0__["identity"]
+ : Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ var ring = new Array(skipCount);
+ var seen = 0;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(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
/***/ }),
-/* 125 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 209 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return skipUntil; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(66);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
-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);
- returnValue += string.substr(endIndex);
- return returnValue;
-};
+function skipUntil(notifier) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var taking = false;
+ var skipSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, function () {
+ skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();
+ taking = true;
+ }, _util_noop__WEBPACK_IMPORTED_MODULE_3__["noop"]);
+ Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__["innerFrom"])(notifier).subscribe(skipSubscriber);
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, function (value) { return taking && subscriber.next(value); }));
+ });
+}
+//# sourceMappingURL=skipUntil.js.map
-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);
+/***/ }),
+/* 210 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- returnValue += string.substr(endIndex);
- return returnValue;
-};
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return skipWhile; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
-module.exports = {
- stringReplaceAll,
- stringEncaseCRLFWithFirstIndex
-};
+function skipWhile(predicate) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var taking = false;
+ var index = 0;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); }));
+ });
+}
+//# sourceMappingURL=skipWhile.js.map
/***/ }),
-/* 126 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 211 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return startWith; });
+/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(101);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
-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 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"])(values);
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__["operate"])(function (source, subscriber) {
+ (scheduler ? Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(values, source, scheduler) : Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(values, source)).subscribe(subscriber);
+ });
}
+//# sourceMappingURL=startWith.js.map
-function parseArguments(name, arguments_) {
- const results = [];
- const chunks = arguments_.trim().split(/\s*,\s*/g);
- let matches;
+/***/ }),
+/* 212 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- 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}')`);
- }
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return switchAll; });
+/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(213);
+/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26);
- return results;
+
+function switchAll() {
+ return Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"]);
}
+//# sourceMappingURL=switchAll.js.map
-function parseStyle(style) {
- STYLE_REGEX.lastIndex = 0;
+/***/ }),
+/* 213 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- const results = [];
- let matches;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return switchMap; });
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(66);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
- 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 switchMap(project, resultSelector) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(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"])(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"])(project(value, outerIndex)).subscribe((innerSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(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
-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;
- }
+/***/ }),
+/* 214 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (!(styleName in current)) {
- throw new Error(`Unknown Chalk style: ${styleName}`);
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return switchMapTo; });
+/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(213);
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
- current = styles.length > 0 ? current[styleName](...styles) : current[styleName];
- }
- return current;
+function switchMapTo(innerObservable, resultSelector) {
+ return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(resultSelector) ? Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(function () { return innerObservable; }, resultSelector) : Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(function () { return innerObservable; });
}
+//# sourceMappingURL=switchMapTo.js.map
-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(''));
+/***/ }),
+/* 215 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (styles.length > 0) {
- const errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`;
- throw new Error(errMessage);
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchScan", function() { return switchScan; });
+/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(213);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
- return chunks.join('');
-};
+function switchScan(accumulator, seed) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ var state = seed;
+ Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(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
/***/ }),
-/* 127 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 216 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return takeUntil; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(66);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.LOG_LEVEL_FLAGS = exports.DEFAULT_LOG_LEVEL = void 0;
-exports.getLogLevelFlagsHelp = getLogLevelFlagsHelp;
-exports.parseLogLevel = parseLogLevel;
-exports.pickLevelFromFlags = pickLevelFromFlags;
-/*
- * 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.
- */
-const LEVELS = ['silent', 'error', 'warning', 'success', 'info', 'debug', 'verbose'];
-const DEFAULT_LOG_LEVEL = 'info';
-exports.DEFAULT_LOG_LEVEL = DEFAULT_LOG_LEVEL;
-function pickLevelFromFlags(flags, options = {}) {
- if (flags.verbose) return 'verbose';
- if (flags.debug) return 'debug';
- if (flags.info) return 'info';
- if (flags.quiet) return 'error';
- if (flags.silent) return 'silent';
- return options.default || DEFAULT_LOG_LEVEL;
+function takeUntil(notifier) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__["innerFrom"])(notifier).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, function () { return subscriber.complete(); }, _util_noop__WEBPACK_IMPORTED_MODULE_3__["noop"]));
+ !subscriber.closed && source.subscribe(subscriber);
+ });
}
+//# sourceMappingURL=takeUntil.js.map
-const LOG_LEVEL_FLAGS = [{
- name: 'verbose',
- help: '--verbose, -v Log verbosely'
-}, {
- name: 'info',
- help: "--info Don't log debug messages"
-}, {
- name: 'debug',
- help: '--debug Log debug messages (less than verbose)'
-}, {
- name: 'quiet',
- help: '--quiet Only log errors'
-}, {
- name: 'silent',
- help: "--silent Don't log anything"
-}];
-exports.LOG_LEVEL_FLAGS = LOG_LEVEL_FLAGS;
-
-function getLogLevelFlagsHelp(defaultLogLevel = DEFAULT_LOG_LEVEL) {
- return LOG_LEVEL_FLAGS.filter(({
- name
- }) => name !== defaultLogLevel).map(({
- help
- }) => help).join('\n');
-}
+/***/ }),
+/* 217 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-function parseLogLevel(name) {
- const i = LEVELS.indexOf(name);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return takeWhile; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
- if (i === -1) {
- const msg = `Invalid log level "${name}" ` + `(expected one of ${LEVELS.join(',')})`;
- throw new Error(msg);
- }
- const flags = {};
- LEVELS.forEach((level, levelI) => {
- flags[level] = levelI <= i;
- });
- return {
- name,
- flags: flags
- };
+function takeWhile(predicate, inclusive) {
+ if (inclusive === void 0) { inclusive = false; }
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__["operate"])(function (source, subscriber) {
+ var index = 0;
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(subscriber, function (value) {
+ var result = predicate(value, index++);
+ (result || inclusive) && subscriber.next(value);
+ !result && subscriber.complete();
+ }));
+ });
}
+//# sourceMappingURL=takeWhile.js.map
/***/ }),
-/* 128 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 218 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return tap; });
+/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26);
+
+
+
+
+function tap(observerOrNext, error, complete) {
+ var tapObserver = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_0__["isFunction"])(observerOrNext) || error || complete
+ ?
+ { next: observerOrNext, error: error, complete: complete }
+ : observerOrNext;
+ return tapObserver
+ ? Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(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"])(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"];
+}
+//# sourceMappingURL=tap.js.map
+/***/ }),
+/* 219 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-var _interopRequireDefault = __webpack_require__(7);
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.ToolingLogCollectingWriter = void 0;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultThrottleConfig", function() { return defaultThrottleConfig; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle; });
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(66);
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(8));
-var _tooling_log_text_writer = __webpack_require__(112);
-/*
- * 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.
- */
-class ToolingLogCollectingWriter extends _tooling_log_text_writer.ToolingLogTextWriter {
- constructor(level = 'verbose') {
- super({
- level,
- writeTo: {
- write: msg => {
- // trim trailing new line
- this.messages.push(msg.slice(0, -1));
- }
- }
+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"])(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"])(durationSelector(value)).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__["createOperatorSubscriber"])(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"])(subscriber, function (value) {
+ hasValue = true;
+ sendValue = value;
+ !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));
+ }, function () {
+ isComplete = true;
+ !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();
+ }));
});
- (0, _defineProperty2.default)(this, "messages", []);
- }
- /**
- * Called by ToolingLog, extends messages with the source if message includes one.
- */
+}
+//# sourceMappingURL=throttle.js.map
+/***/ }),
+/* 220 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- write(msg) {
- if (msg.source) {
- return super.write({ ...msg,
- args: [`source[${msg.source}]`, ...msg.args]
- });
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return throttleTime; });
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50);
+/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(219);
+/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(114);
- return super.write(msg);
- }
+
+function throttleTime(duration, scheduler, config) {
+ if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["asyncScheduler"]; }
+ if (config === void 0) { config = _throttle__WEBPACK_IMPORTED_MODULE_1__["defaultThrottleConfig"]; }
+ var duration$ = Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__["timer"])(duration, scheduler);
+ return Object(_throttle__WEBPACK_IMPORTED_MODULE_1__["throttle"])(function () { return duration$; }, config);
}
+//# sourceMappingURL=throttleTime.js.map
-exports.ToolingLogCollectingWriter = ToolingLogCollectingWriter;
+/***/ }),
+/* 221 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return timeInterval; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeInterval", function() { return TimeInterval; });
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+
+
+
+function timeInterval(scheduler) {
+ if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["asyncScheduler"]; }
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ var last = scheduler.now();
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(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
/***/ }),
-/* 129 */
+/* 222 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commands", function() { return commands; });
-/* harmony import */ var _bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(130);
-/* harmony import */ var _build__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(530);
-/* harmony import */ var _clean__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(531);
-/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(555);
-/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(556);
-/* harmony import */ var _watch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(558);
-/*
- * 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 export (binding) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return timeoutWith; });
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50);
+/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(92);
+/* harmony import */ var _timeout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91);
+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"];
+ if (Object(_util_isDate__WEBPACK_IMPORTED_MODULE_1__["isValidDate"])(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"])({
+ first: first,
+ each: each,
+ scheduler: scheduler,
+ with: _with,
+ });
+}
+//# sourceMappingURL=timeoutWith.js.map
+
+/***/ }),
+/* 223 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return timestamp; });
+/* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(38);
+/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(96);
-const commands = {
- bootstrap: _bootstrap__WEBPACK_IMPORTED_MODULE_0__["BootstrapCommand"],
- build: _build__WEBPACK_IMPORTED_MODULE_1__["BuildCommand"],
- clean: _clean__WEBPACK_IMPORTED_MODULE_2__["CleanCommand"],
- reset: _reset__WEBPACK_IMPORTED_MODULE_3__["ResetCommand"],
- run: _run__WEBPACK_IMPORTED_MODULE_4__["RunCommand"],
- watch: _watch__WEBPACK_IMPORTED_MODULE_5__["WatchCommand"]
-};
+function timestamp(timestampProvider) {
+ if (timestampProvider === void 0) { timestampProvider = _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__["dateTimestampProvider"]; }
+ return Object(_map__WEBPACK_IMPORTED_MODULE_1__["map"])(function (value) { return ({ value: value, timestamp: timestampProvider.now() }); });
+}
+//# sourceMappingURL=timestamp.js.map
/***/ }),
-/* 130 */
+/* 224 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BootstrapCommand", function() { return BootstrapCommand; });
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
-/* 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__(131);
-/* 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 _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(220);
-/* harmony import */ var _utils_child_process__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(221);
-/* harmony import */ var _utils_link_project_executables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(230);
-/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(340);
-/* harmony import */ var _utils_yarn_lock__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(409);
-/* harmony import */ var _utils_sort_package_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(412);
-/* harmony import */ var _utils_validate_dependencies__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(421);
-/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(423);
-/* harmony import */ var _utils_bazel_setup_remote_cache__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(529);
-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; }
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return window; });
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
-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.
- */
+function window(windowBoundaries) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(function (source, subscriber) {
+ var windowSubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"]();
+ subscriber.next(windowSubject.asObservable());
+ var errorHandler = function (err) {
+ windowSubject.error(err);
+ subscriber.error(err);
+ };
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(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"])(subscriber, function () {
+ windowSubject.complete();
+ subscriber.next((windowSubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"]()));
+ }, _util_noop__WEBPACK_IMPORTED_MODULE_3__["noop"], errorHandler));
+ return function () {
+ windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe();
+ windowSubject = null;
+ };
+ });
+}
+//# sourceMappingURL=window.js.map
+/***/ }),
+/* 225 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return windowCount; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30);
+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"])(function (source, subscriber) {
+ var windows = [new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]()];
+ var starts = [];
+ var count = 0;
+ subscriber.next(windows[0].asObservable());
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__["createOperatorSubscriber"])(subscriber, function (value) {
+ var e_1, _a;
+ try {
+ for (var windows_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(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"]();
+ 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
+/***/ }),
+/* 226 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return windowTime; });
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
+/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50);
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30);
+/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(17);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(61);
+/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(76);
-const BootstrapCommand = {
- description: 'Install dependencies and crosslink projects',
- name: 'bootstrap',
- reportTiming: {
- group: 'scripts/kbn bootstrap',
- id: 'total'
- },
- async run(projects, projectGraph, {
- options,
- kbn,
- rootPath
- }) {
- var _projects$get;
- const nonBazelProjectsOnly = await Object(_utils_projects__WEBPACK_IMPORTED_MODULE_5__["getNonBazelProjectsOnly"])(projects);
- const batchedNonBazelProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_5__["topologicallyBatchProjects"])(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"]);
- const timings = [];
- const time = async (id, body) => {
- const start = Date.now();
- try {
- return await body();
- } finally {
- timings.push({
- id,
- ms: Date.now() - start
- });
- }
- }; // Force install is set in case a flag is passed into yarn kbn bootstrap
- const forceInstall = !!options && options['force-install'] === true; // Install bazel machinery tools if needed
+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"])(otherArgs)) !== null && _a !== void 0 ? _a : _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["asyncScheduler"];
+ 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"])(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"])(windowRecords, record);
+ restartOnClose && startWindow();
+ };
+ var startWindow = function () {
+ if (windowRecords) {
+ var subs = new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"]();
+ subscriber.add(subs);
+ var window_1 = new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"]();
+ 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"])(subs, scheduler, function () { return closeWindow(record_1); }, windowTimeSpan);
+ }
+ };
+ if (windowCreationInterval !== null && windowCreationInterval >= 0) {
+ Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__["executeSchedule"])(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"])(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
- await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_9__["installBazelTools"])(rootPath); // Setup remote cache settings in .bazelrc.cache if needed
+/***/ }),
+/* 227 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- await Object(_utils_bazel_setup_remote_cache__WEBPACK_IMPORTED_MODULE_10__["setupRemoteCache"])(rootPath); // Bootstrap process for Bazel packages
- // Bazel is now managing dependencies so yarn install
- // will happen as part of this
- //
- // NOTE: Bazel projects will be introduced incrementally
- // And should begin from the ones with none dependencies forward.
- // That way non bazel projects could depend on bazel projects but not the other way around
- // That is only intended during the migration process while non Bazel projects are not removed at all.
- //
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return windowToggle; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34);
+/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(66);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(30);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(21);
+/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(17);
- if (forceInstall) {
- await time('force install dependencies', async () => {
- await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_9__["removeYarnIntegrityFileIfExists"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(kibanaProjectPath, 'node_modules'));
- await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_9__["runBazel"])(['clean']);
- await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_9__["runBazel"])(['run', '@yarn//: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'
- }
- });
- });
- } // build packages
- await time('build packages', async () => {
- await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_9__["runBazel"])(['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 time('sort package json', async () => {
- await Object(_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_7__["sortPackageJson"])(kbn);
+function windowToggle(openings, closingSelector) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_3__["operate"])(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"])(openings).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__["createOperatorSubscriber"])(subscriber, function (openValue) {
+ var window = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]();
+ windows.push(window);
+ var closingSubscription = new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"]();
+ var closeWindow = function () {
+ Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_7__["arrRemove"])(windows, window);
+ window.complete();
+ closingSubscription.unsubscribe();
+ };
+ var closingNotifier;
+ try {
+ closingNotifier = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__["innerFrom"])(closingSelector(openValue));
+ }
+ catch (err) {
+ handleError(err);
+ return;
+ }
+ subscriber.next(window.asObservable());
+ closingSubscription.add(closingNotifier.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__["createOperatorSubscriber"])(subscriber, closeWindow, _util_noop__WEBPACK_IMPORTED_MODULE_6__["noop"], handleError)));
+ }, _util_noop__WEBPACK_IMPORTED_MODULE_6__["noop"]));
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__["createOperatorSubscriber"])(subscriber, function (value) {
+ var e_1, _a;
+ var windowsCopy = windows.slice();
+ try {
+ for (var windowsCopy_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(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();
+ }
+ }));
});
- const yarnLock = await time('read yarn.lock', async () => await Object(_utils_yarn_lock__WEBPACK_IMPORTED_MODULE_6__["readYarnLock"])(kbn));
+}
+//# sourceMappingURL=windowToggle.js.map
- if (options.validate) {
- await time('validate dependencies', async () => {
- await Object(_utils_validate_dependencies__WEBPACK_IMPORTED_MODULE_8__["validateDependencies"])(kbn, yarnLock);
- });
- } // Assure all kbn projects with bin defined scripts
- // copy those scripts into the top level node_modules folder
- //
- // NOTE: We don't probably need this anymore, is actually not being used
+/***/ }),
+/* 228 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return windowWhen; });
+/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66);
- await time('link project executables', async () => {
- await Object(_utils_link_project_executables__WEBPACK_IMPORTED_MODULE_4__["linkProjectExecutables"])(projects, projectGraph);
+
+
+function windowWhen(closingSelector) {
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(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"]();
+ subscriber.next(window.asObservable());
+ var closingNotifier;
+ try {
+ closingNotifier = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__["innerFrom"])(closingSelector());
+ }
+ catch (err) {
+ handleError(err);
+ return;
+ }
+ closingNotifier.subscribe((closingSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, openWindow, openWindow, handleError)));
+ };
+ openWindow();
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(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;
+ }));
});
- await time('update vscode config', async () => {
- // Update vscode settings
- await Object(_utils_child_process__WEBPACK_IMPORTED_MODULE_3__["spawnStreaming"])(process.execPath, ['scripts/update_vscode_config'], {
- cwd: kbn.getAbsolute(),
- env: process.env
- }, {
- prefix: '[vscode]',
- debug: false
- });
- }); // send timings
+}
+//# sourceMappingURL=windowWhen.js.map
- await reporter.timings({
- upstreamBranch: kbn.kibanaProject.json.branch,
- // prevent loading @kbn/utils by passing null
- kibanaUuid: kbn.getUuid() || null,
- timings: timings.map(t => _objectSpread({
- group: 'scripts/kbn bootstrap'
- }, t))
+/***/ }),
+/* 229 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return withLatestFrom; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
+/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
+/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66);
+/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26);
+/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21);
+/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(61);
+
+
+
+
+
+
+
+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"])(inputs);
+ return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__["operate"])(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"])(inputs[i]).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function (value) {
+ otherValues[i] = value;
+ if (!ready && !hasValue[i]) {
+ hasValue[i] = true;
+ (ready = hasValue.every(_util_identity__WEBPACK_IMPORTED_MODULE_4__["identity"])) && (hasValue = null);
+ }
+ }, _util_noop__WEBPACK_IMPORTED_MODULE_5__["noop"]));
+ };
+ for (var i = 0; i < len; i++) {
+ _loop_1(i);
+ }
+ source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__["createOperatorSubscriber"])(subscriber, function (value) {
+ if (ready) {
+ var values = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([value], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(otherValues));
+ subscriber.next(project ? project.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(values))) : values);
+ }
+ }));
});
- }
+}
+//# sourceMappingURL=withLatestFrom.js.map
-};
+/***/ }),
+/* 230 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return zipAll; });
+/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(127);
+/* harmony import */ var _joinAllInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(139);
+
+
+function zipAll(project) {
+ return Object(_joinAllInternals__WEBPACK_IMPORTED_MODULE_1__["joinAllInternals"])(_observable_zip__WEBPACK_IMPORTED_MODULE_0__["zip"], project);
+}
+//# sourceMappingURL=zipAll.js.map
/***/ }),
-/* 131 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 231 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zipWith", function() { return zipWith; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _zip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(232);
-var _interopRequireDefault = __webpack_require__(7);
+function zipWith() {
+ var otherInputs = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ otherInputs[_i] = arguments[_i];
+ }
+ return _zip__WEBPACK_IMPORTED_MODULE_1__["zip"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(otherInputs)));
+}
+//# sourceMappingURL=zipWith.js.map
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.CiStatsReporter = void 0;
+/***/ }),
+/* 232 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-var _util = __webpack_require__(113);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(127);
+/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);
-var _os = _interopRequireDefault(__webpack_require__(122));
-var _fs = _interopRequireDefault(__webpack_require__(132));
-var _path = _interopRequireDefault(__webpack_require__(4));
+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"])(function (source, subscriber) {
+ _observable_zip__WEBPACK_IMPORTED_MODULE_1__["zip"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(sources))).subscribe(subscriber);
+ });
+}
+//# sourceMappingURL=zip.js.map
+
+/***/ }),
+/* 233 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
-var _crypto = _interopRequireDefault(__webpack_require__(133));
+var _interopRequireDefault = __webpack_require__(7);
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ToolingLogTextWriter = void 0;
-var _execa = _interopRequireDefault(__webpack_require__(134));
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(8));
-var _axios = _interopRequireDefault(__webpack_require__(177));
+var _util = __webpack_require__(234);
-var _http = _interopRequireDefault(__webpack_require__(199));
+var _chalk = _interopRequireDefault(__webpack_require__(235));
-var _ci_stats_config = __webpack_require__(218);
+var _log_levels = __webpack_require__(248);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -9062,37180 +9506,36525 @@ var _ci_stats_config = __webpack_require__(218);
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
-// @ts-expect-error not "public", but necessary to prevent Jest shimming from breaking things
-const BASE_URL = 'https://ci-stats.kibana.dev';
-/** A ci-stats metric record */
+const {
+ magentaBright,
+ yellow,
+ red,
+ blue,
+ green,
+ dim
+} = _chalk.default;
+const PREFIX_INDENT = ' '.repeat(6);
+const MSG_PREFIXES = {
+ verbose: ` ${magentaBright('sill')} `,
+ debug: ` ${dim('debg')} `,
+ info: ` ${blue('info')} `,
+ success: ` ${green('succ')} `,
+ warning: ` ${yellow('warn')} `,
+ error: `${red('ERROR')} `
+};
-/** Object that helps report data to the ci-stats service */
-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);
- }
+const has = (obj, key) => obj.hasOwnProperty(key);
- constructor(config, log) {
- this.config = config;
- this.log = log;
+function shouldWriteType(level, type) {
+ if (type === 'write') {
+ return level.name !== 'silent';
}
- /**
- * Determine if CI_STATS is explicitly disabled by the environment. To determine
- * if the CiStatsReporter has enough information in the environment to send metrics
- * for builds use #hasBuildConfig().
- */
+ return Boolean(level.flags[type === 'success' ? 'info' : type]);
+}
- isEnabled() {
- return process.env.CI_STATS_DISABLED !== 'true';
+function stringifyError(error) {
+ if (typeof error !== 'string' && !(error instanceof Error)) {
+ error = new Error(`"${error}" thrown`);
}
- /**
- * Determines if the CiStatsReporter is disabled by the environment, or properly
- * configured and able to send stats
- */
-
-
- hasBuildConfig() {
- var _this$config, _this$config2;
- return this.isEnabled() && !!((_this$config = this.config) !== null && _this$config !== void 0 && _this$config.apiToken) && !!((_this$config2 = this.config) !== null && _this$config2 !== void 0 && _this$config2.buildId);
+ if (typeof error === 'string') {
+ return error;
}
- /**
- * Report timings data to the ci-stats service. If running in CI then the reporter
- * will include the buildId in the report with the access token, otherwise the timings
- * data will be recorded as anonymous timing data.
- */
+ return error.stack || error.message || error;
+}
- async timings(options) {
- var _this$config3, _options$upstreamBran, _Os$cpus, _Os$cpus$, _Os$cpus$2;
+class ToolingLogTextWriter {
+ constructor(config) {
+ (0, _defineProperty2.default)(this, "level", void 0);
+ (0, _defineProperty2.default)(this, "writeTo", void 0);
+ (0, _defineProperty2.default)(this, "ignoreSources", void 0);
+ this.level = (0, _log_levels.parseLogLevel)(config.level);
+ this.writeTo = config.writeTo;
+ this.ignoreSources = config.ignoreSources;
- if (!this.isEnabled()) {
- return;
+ if (!this.writeTo || typeof this.writeTo.write !== 'function') {
+ throw new Error('ToolingLogTextWriter requires the `writeTo` option be set to a stream (like process.stdout)');
}
+ }
- const buildId = (_this$config3 = this.config) === null || _this$config3 === void 0 ? void 0 : _this$config3.buildId;
- const timings = options.timings;
- const upstreamBranch = (_options$upstreamBran = options.upstreamBranch) !== null && _options$upstreamBran !== void 0 ? _options$upstreamBran : this.getUpstreamBranch();
- const kibanaUuid = options.kibanaUuid === undefined ? this.getKibanaUuid() : options.kibanaUuid;
- let email;
- let branch;
-
- try {
- const {
- stdout
- } = await (0, _execa.default)('git', ['config', 'user.email']);
- email = stdout;
- } catch (e) {
- this.log.debug(e.message);
+ write(msg) {
+ if (!shouldWriteType(this.level, msg.type)) {
+ return false;
}
- try {
- const {
- stdout
- } = await (0, _execa.default)('git', ['rev-parse', '--abbrev-ref', 'HEAD']);
- branch = stdout;
- } catch (e) {
- this.log.debug(e.message);
+ if (this.ignoreSources && msg.source && this.ignoreSources.includes(msg.source)) {
+ if (msg.type === 'write') {
+ const txt = (0, _util.format)(msg.args[0], ...msg.args.slice(1)); // Ensure that Elasticsearch deprecation log messages from Kibana aren't ignored
+
+ if (!/elasticsearch\.deprecation/.test(txt)) {
+ return false;
+ }
+ } else {
+ return false;
+ }
}
- const memUsage = process.memoryUsage();
- const isElasticCommitter = email && email.endsWith('@elastic.co') ? true : false;
- const defaultMeta = {
- kibanaUuid,
- isElasticCommitter,
- committerHash: email ? _crypto.default.createHash('sha256').update(email).digest('hex').substring(0, 20) : undefined,
- email: isElasticCommitter ? email : undefined,
- branch: isElasticCommitter ? branch : undefined,
- cpuCount: (_Os$cpus = _os.default.cpus()) === null || _Os$cpus === void 0 ? void 0 : _Os$cpus.length,
- cpuModel: (_Os$cpus$ = _os.default.cpus()[0]) === null || _Os$cpus$ === void 0 ? void 0 : _Os$cpus$.model,
- cpuSpeed: (_Os$cpus$2 = _os.default.cpus()[0]) === null || _Os$cpus$2 === void 0 ? void 0 : _Os$cpus$2.speed,
- freeMem: _os.default.freemem(),
- memoryUsageRss: memUsage.rss,
- memoryUsageHeapTotal: memUsage.heapTotal,
- memoryUsageHeapUsed: memUsage.heapUsed,
- memoryUsageExternal: memUsage.external,
- memoryUsageArrayBuffers: memUsage.arrayBuffers,
- nestedTiming: process.env.CI_STATS_NESTED_TIMING ? true : false,
- osArch: _os.default.arch(),
- osPlatform: _os.default.platform(),
- osRelease: _os.default.release(),
- totalMem: _os.default.totalmem()
- };
- this.log.debug('CIStatsReporter committerHash: %s', defaultMeta.committerHash);
- return !!(await this.req({
- auth: !!buildId,
- path: '/v1/timings',
- body: {
- buildId,
- upstreamBranch,
- defaultMeta,
- timings
- },
- bodyDesc: timings.length === 1 ? `${timings.length} timing` : `${timings.length} timings`
- }));
+ const prefix = has(MSG_PREFIXES, msg.type) ? MSG_PREFIXES[msg.type] : '';
+ ToolingLogTextWriter.write(this.writeTo, prefix, msg);
+ return true;
}
- /**
- * Report metrics data to the ci-stats service. If running outside of CI this method
- * does nothing as metrics can only be reported when associated with a specific CI build.
- */
+ static write(writeTo, prefix, msg) {
+ const txt = msg.type === 'error' ? stringifyError(msg.args[0]) : (0, _util.format)(msg.args[0], ...msg.args.slice(1));
+ (prefix + txt).split('\n').forEach((line, i) => {
+ let lineIndent = '';
- async metrics(metrics, options) {
- var _this$config4;
+ if (msg.indent > 0) {
+ // if we are indenting write some spaces followed by a symbol
+ lineIndent += ' '.repeat(msg.indent - 1);
+ lineIndent += line.startsWith('-') ? '└' : '│';
+ }
- if (!this.hasBuildConfig()) {
- return;
- }
+ if (line && prefix && i > 0) {
+ // apply additional indentation to lines after
+ // the first if this message gets a prefix
+ lineIndent += PREFIX_INDENT;
+ }
- const buildId = (_this$config4 = this.config) === null || _this$config4 === void 0 ? void 0 : _this$config4.buildId;
+ writeTo.write(`${lineIndent}${line}\n`);
+ });
+ }
- if (!buildId) {
- throw new Error(`metrics can't be reported without a buildId`);
- }
+}
- return !!(await this.req({
- auth: true,
- path: '/v1/metrics',
- body: {
- buildId,
- defaultMeta: options === null || options === void 0 ? void 0 : options.defaultMeta,
- metrics
- },
- bodyDesc: `metrics: ${metrics.map(({
- group,
- id,
- value
- }) => `[${group}/${id}=${value}]`).join(' ')}`
- }));
- }
- /**
- * Send test reports to ci-stats
- */
+exports.ToolingLogTextWriter = ToolingLogTextWriter;
+/***/ }),
+/* 234 */
+/***/ (function(module, exports) {
- async reportTests({
- group,
- testRuns
- }) {
- var _this$config5, _this$config6, _this$config7;
+module.exports = require("util");
- if (!((_this$config5 = this.config) !== null && _this$config5 !== void 0 && _this$config5.buildId) || !((_this$config6 = this.config) !== null && _this$config6 !== void 0 && _this$config6.apiToken)) {
- throw new Error('unable to report tests unless buildId is configured and auth config available');
- }
+/***/ }),
+/* 235 */
+/***/ (function(module, exports, __webpack_require__) {
- return await this.req({
- auth: true,
- path: '/v1/test_group',
- query: {
- buildId: (_this$config7 = this.config) === null || _this$config7 === void 0 ? void 0 : _this$config7.buildId
- },
- bodyDesc: `[${group.name}/${group.type}] test groups with ${testRuns.length} tests`,
- body: [JSON.stringify({
- group
- }), ...testRuns.map(testRun => JSON.stringify({
- testRun
- }))].join('\n')
- });
- }
- /**
- * In order to allow this code to run before @kbn/utils is built, @kbn/pm will pass
- * in the upstreamBranch when calling the timings() method. Outside of @kbn/pm
- * we rely on @kbn/utils to find the package.json file.
- */
+"use strict";
+const ansiStyles = __webpack_require__(236);
+const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(242);
+const {
+ stringReplaceAll,
+ stringEncaseCRLFWithFirstIndex
+} = __webpack_require__(246);
- getUpstreamBranch() {
- // specify the module id in a way that will keep webpack from bundling extra code into @kbn/pm
- const hideFromWebpack = ['@', 'kbn/utils']; // eslint-disable-next-line @typescript-eslint/no-var-requires
+const {isArray} = Array;
- const {
- kibanaPackageJson
- } = __webpack_require__(219)(hideFromWebpack.join(''));
+// `supportsColor.level` → `ansiStyles.color[name]` mapping
+const levelMapping = [
+ 'ansi',
+ 'ansi',
+ 'ansi256',
+ 'ansi16m'
+];
- return kibanaPackageJson.branch;
- }
- /**
- * In order to allow this code to run before @kbn/utils is built, @kbn/pm will pass
- * in the kibanaUuid when calling the timings() method. Outside of @kbn/pm
- * we rely on @kbn/utils to find the repo root.
- */
+const styles = Object.create(null);
+const applyOptions = (object, options = {}) => {
+ if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
+ throw new Error('The `level` option should be an integer from 0 to 3');
+ }
- getKibanaUuid() {
- // specify the module id in a way that will keep webpack from bundling extra code into @kbn/pm
- const hideFromWebpack = ['@', 'kbn/utils']; // eslint-disable-next-line @typescript-eslint/no-var-requires
+ // Detect level if not set manually
+ const colorLevel = stdoutColor ? stdoutColor.level : 0;
+ object.level = options.level === undefined ? colorLevel : options.level;
+};
- const {
- REPO_ROOT
- } = __webpack_require__(219)(hideFromWebpack.join(''));
+class ChalkClass {
+ constructor(options) {
+ // eslint-disable-next-line no-constructor-return
+ return chalkFactory(options);
+ }
+}
- try {
- return _fs.default.readFileSync(_path.default.resolve(REPO_ROOT, 'data/uuid'), 'utf-8').trim();
- } catch (error) {
- if (error.code === 'ENOENT') {
- return undefined;
- }
+const chalkFactory = options => {
+ const chalk = {};
+ applyOptions(chalk, options);
- throw error;
- }
- }
+ chalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);
- async req({
- auth,
- body,
- bodyDesc,
- path,
- query
- }) {
- let attempt = 0;
- const maxAttempts = 5;
- let headers;
+ Object.setPrototypeOf(chalk, Chalk.prototype);
+ Object.setPrototypeOf(chalk.template, chalk);
- if (auth && this.config) {
- headers = {
- Authorization: `token ${this.config.apiToken}`
- };
- } else if (auth) {
- throw new Error('this.req() shouldnt be called with auth=true if this.config is not defined');
- }
+ chalk.template.constructor = () => {
+ throw new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');
+ };
- while (true) {
- attempt += 1;
+ chalk.template.Instance = ChalkClass;
- try {
- const resp = await _axios.default.request({
- method: 'POST',
- url: path,
- baseURL: BASE_URL,
- headers,
- data: body,
- params: query,
- adapter: _http.default,
- // if it can be serialized into a string, send it
- maxBodyLength: Infinity,
- maxContentLength: Infinity
- });
- return resp.data;
- } catch (error) {
- var _error$response;
+ return chalk.template;
+};
- if (!(error !== null && error !== void 0 && error.request)) {
- // not an axios error, must be a usage error that we should notify user about
- throw error;
- }
+function Chalk(options) {
+ return chalkFactory(options);
+}
- if (error !== null && error !== void 0 && error.response && error.response.status < 500) {
- // error response from service was received so warn the user and move on
- this.log.warning(`error reporting ${bodyDesc} [status=${error.response.status}] [resp=${(0, _util.inspect)(error.response.data)}]`);
- return;
- }
+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;
+ }
+ };
+}
- if (attempt === maxAttempts) {
- this.log.warning(`unable to report ${bodyDesc}, failed to reach ci-stats service too many times`);
- return;
- } // we failed to reach the backend and we have remaining attempts, lets retry after a short delay
+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'];
- const reason = error !== null && error !== void 0 && (_error$response = error.response) !== null && _error$response !== void 0 && _error$response.status ? `${error.response.status} response` : 'no response';
- const seconds = attempt * 10;
- this.log.warning(`failed to reach ci-stats service, retrying in ${seconds} seconds, [reason=${reason}], [error=${error.message}]`);
- await new Promise(resolve => setTimeout(resolve, seconds * 1000));
- }
- }
- }
+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);
+ };
+ }
+ };
}
-exports.CiStatsReporter = CiStatsReporter;
+const proto = Object.defineProperties(() => {}, {
+ ...styles,
+ level: {
+ enumerable: true,
+ get() {
+ return this._generator.level;
+ },
+ set(level) {
+ this._generator.level = level;
+ }
+ }
+});
-/***/ }),
-/* 132 */
-/***/ (function(module, exports) {
+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 = require("fs");
+ return {
+ open,
+ close,
+ openAll,
+ closeAll,
+ parent
+ };
+};
-/***/ }),
-/* 133 */
-/***/ (function(module, exports) {
+const createBuilder = (self, _styler, _isEmpty) => {
+ const builder = (...arguments_) => {
+ if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {
+ // Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`
+ return applyStyle(builder, chalkTag(builder, ...arguments_));
+ }
-module.exports = require("crypto");
+ // 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(' '));
+ };
-/***/ }),
-/* 134 */
-/***/ (function(module, exports, __webpack_require__) {
+ // We alter the prototype because we must return a function, but there is
+ // no way to create a function with a different prototype
+ Object.setPrototypeOf(builder, proto);
-"use strict";
+ builder._generator = self;
+ builder._styler = _styler;
+ builder._isEmpty = _isEmpty;
-const path = __webpack_require__(4);
-const childProcess = __webpack_require__(135);
-const crossSpawn = __webpack_require__(136);
-const stripFinalNewline = __webpack_require__(149);
-const npmRunPath = __webpack_require__(150);
-const onetime = __webpack_require__(152);
-const makeError = __webpack_require__(154);
-const normalizeStdio = __webpack_require__(159);
-const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__(160);
-const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__(165);
-const {mergePromise, getSpawnedPromise} = __webpack_require__(175);
-const {joinCommand, parseCommand} = __webpack_require__(176);
+ return builder;
+};
-const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;
+const applyStyle = (self, string) => {
+ if (self.level <= 0 || !string) {
+ return self._isEmpty ? '' : string;
+ }
-const getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {
- const env = extendEnv ? {...process.env, ...envOption} : envOption;
+ let styler = self._styler;
- if (preferLocal) {
- return npmRunPath.env({env, cwd: localDir, execPath});
+ if (styler === undefined) {
+ return string;
}
- return env;
-};
+ 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);
-const handleArguments = (file, args, options = {}) => {
- const parsed = crossSpawn._parse(file, args, options);
- file = parsed.command;
- args = parsed.args;
- options = parsed.options;
+ styler = styler.parent;
+ }
+ }
- 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
- };
+ // 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);
+ }
- options.env = getEnv(options);
+ return openAll + string + closeAll;
+};
- options.stdio = normalizeStdio(options);
+let template;
+const chalkTag = (chalk, ...strings) => {
+ const [firstString] = strings;
- if (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {
- // #116
- args.unshift('/q');
+ if (!isArray(firstString) || !isArray(firstString.raw)) {
+ // If chalk() was called by itself or with a string,
+ // return the string itself as a string.
+ return strings.join(' ');
}
- return {file, args, options, parsed};
-};
+ const arguments_ = strings.slice(1);
+ const parts = [firstString.raw[0]];
-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 : '';
+ for (let i = 1; i < firstString.length; i++) {
+ parts.push(
+ String(arguments_[i - 1]).replace(/[{}\\]/g, '\\$&'),
+ String(firstString.raw[i])
+ );
}
- if (options.stripFinalNewline) {
- return stripFinalNewline(value);
+ if (template === undefined) {
+ template = __webpack_require__(247);
}
- return value;
+ return template(chalk, parts.join(''));
};
-const execa = (file, args, options) => {
- const parsed = handleArguments(file, args, options);
- const command = joinCommand(file, args);
+Object.defineProperties(Chalk.prototype, styles);
- 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 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;
- const spawnedPromise = getSpawnedPromise(spawned);
- const timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);
- const processDone = setExitHandler(spawned, parsed.options, timedPromise);
+module.exports = chalk;
- const context = {isCanceled: false};
- spawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));
- spawned.cancel = spawnedCancel.bind(null, spawned, context);
+/***/ }),
+/* 236 */
+/***/ (function(module, exports, __webpack_require__) {
- 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);
+"use strict";
+/* WEBPACK VAR INJECTION */(function(module) {
- 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;
- }
+const wrapAnsi16 = (fn, offset) => (...args) => {
+ const code = fn(...args);
+ return `\u001B[${code + offset}m`;
+};
- return {
- command,
- exitCode: 0,
- stdout,
- stderr,
- all,
- failed: false,
- timedOut: false,
- isCanceled: false,
- killed: false
- };
- };
+const wrapAnsi256 = (fn, offset) => (...args) => {
+ const code = fn(...args);
+ return `\u001B[${38 + offset};5;${code}m`;
+};
- const handlePromiseOnce = onetime(handlePromise);
+const wrapAnsi16m = (fn, offset) => (...args) => {
+ const rgb = fn(...args);
+ return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
+};
- crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed);
+const ansi2ansi = n => n;
+const rgb2rgb = (r, g, b) => [r, g, b];
- handleInput(spawned, parsed.options.input);
+const setLazyProperty = (object, property, get) => {
+ Object.defineProperty(object, property, {
+ get: () => {
+ const value = get();
- spawned.all = makeAllStream(spawned, parsed.options);
+ Object.defineProperty(object, property, {
+ value,
+ enumerable: true,
+ configurable: true
+ });
- return mergePromise(spawned, handlePromiseOnce);
+ return value;
+ },
+ enumerable: true,
+ configurable: true
+ });
};
-module.exports = execa;
-
-module.exports.sync = (file, args, options) => {
- const parsed = handleArguments(file, args, options);
- const command = joinCommand(file, args);
+/** @type {typeof import('color-convert')} */
+let colorConvert;
+const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {
+ if (colorConvert === undefined) {
+ colorConvert = __webpack_require__(238);
+ }
- validateInputSync(parsed.options);
+ const offset = isBackground ? 10 : 0;
+ const styles = {};
- 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
- });
+ for (const [sourceSpace, suite] of Object.entries(colorConvert)) {
+ const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;
+ if (sourceSpace === targetSpace) {
+ styles[name] = wrap(identity, offset);
+ } else if (typeof suite === 'object') {
+ styles[name] = wrap(suite[targetSpace], offset);
+ }
}
- const stdout = handleOutput(parsed.options, result.stdout, result.error);
- const stderr = handleOutput(parsed.options, result.stderr, result.error);
+ return styles;
+};
- 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
- });
+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],
- if (!parsed.options.reject) {
- return error;
+ // Bright color
+ blackBright: [90, 39],
+ 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]
}
+ };
- throw error;
- }
+ // Alias bright black as gray (and grey)
+ styles.color.gray = styles.color.blackBright;
+ styles.bgColor.bgGray = styles.bgColor.bgBlackBright;
+ styles.color.grey = styles.color.blackBright;
+ styles.bgColor.bgGrey = styles.bgColor.bgBlackBright;
- return {
- command,
- exitCode: 0,
- stdout,
- stderr,
- failed: false,
- timedOut: false,
- isCanceled: false,
- killed: false
- };
-};
+ for (const [groupName, group] of Object.entries(styles)) {
+ for (const [styleName, style] of Object.entries(group)) {
+ styles[styleName] = {
+ open: `\u001B[${style[0]}m`,
+ close: `\u001B[${style[1]}m`
+ };
-module.exports.command = (command, options) => {
- const [file, ...args] = parseCommand(command);
- return execa(file, args, options);
-};
+ group[styleName] = styles[styleName];
-module.exports.commandSync = (command, options) => {
- const [file, ...args] = parseCommand(command);
- return execa.sync(file, args, options);
-};
+ codes.set(style[0], style[1]);
+ }
-module.exports.node = (scriptPath, args, options = {}) => {
- if (args && !Array.isArray(args) && typeof args === 'object') {
- options = args;
- args = [];
+ Object.defineProperty(styles, groupName, {
+ value: group,
+ enumerable: false
+ });
}
- const stdio = normalizeStdio.node(options);
+ Object.defineProperty(styles, 'codes', {
+ value: codes,
+ enumerable: false
+ });
- const {nodePath = process.execPath, nodeOptions = process.execArgv} = options;
+ styles.color.close = '\u001B[39m';
+ styles.bgColor.close = '\u001B[49m';
- return execa(
- nodePath,
- [
- ...nodeOptions,
- scriptPath,
- ...(Array.isArray(args) ? args : [])
- ],
- {
- ...options,
- stdin: undefined,
- stdout: undefined,
- stderr: undefined,
- stdio,
- shell: false
- }
- );
-};
+ setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));
+ setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));
+ setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));
+ setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));
+ setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));
+ setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));
+
+ return styles;
+}
+
+// Make the export immutable
+Object.defineProperty(module, 'exports', {
+ enumerable: true,
+ get: assembleStyles
+});
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(237)(module)))
/***/ }),
-/* 135 */
+/* 237 */
/***/ (function(module, exports) {
-module.exports = require("child_process");
+module.exports = function(module) {
+ if (!module.webpackPolyfill) {
+ module.deprecate = function() {};
+ module.paths = [];
+ // module.parent = undefined by default
+ if (!module.children) module.children = [];
+ Object.defineProperty(module, "loaded", {
+ enumerable: true,
+ get: function() {
+ return module.l;
+ }
+ });
+ Object.defineProperty(module, "id", {
+ enumerable: true,
+ get: function() {
+ return module.i;
+ }
+ });
+ module.webpackPolyfill = 1;
+ }
+ return module;
+};
+
/***/ }),
-/* 136 */
+/* 238 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
+const conversions = __webpack_require__(239);
+const route = __webpack_require__(241);
+const convert = {};
-const cp = __webpack_require__(135);
-const parse = __webpack_require__(137);
-const enoent = __webpack_require__(148);
+const models = Object.keys(conversions);
-function spawn(command, args, options) {
- // Parse the arguments
- const parsed = parse(command, args, options);
+function wrapRaw(fn) {
+ const wrappedFn = function (...args) {
+ const arg0 = args[0];
+ if (arg0 === undefined || arg0 === null) {
+ return arg0;
+ }
- // Spawn the child process
- const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
+ if (arg0.length > 1) {
+ args = arg0;
+ }
- // 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);
+ return fn(args);
+ };
- return spawned;
-}
+ // Preserve .conversion property if there is one
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
-function spawnSync(command, args, options) {
- // Parse the arguments
- const parsed = parse(command, args, options);
+ return wrappedFn;
+}
- // Spawn the child process
- const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
+function wrapRounded(fn) {
+ const wrappedFn = function (...args) {
+ const arg0 = args[0];
- // 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);
+ if (arg0 === undefined || arg0 === null) {
+ return arg0;
+ }
- return result;
-}
+ if (arg0.length > 1) {
+ args = arg0;
+ }
-module.exports = spawn;
-module.exports.spawn = spawn;
-module.exports.sync = spawnSync;
+ const result = fn(args);
-module.exports._parse = parse;
-module.exports._enoent = enoent;
+ // We're assuming the result is an array here.
+ // see notice in conversions.js; don't use box types
+ // in conversion functions.
+ if (typeof result === 'object') {
+ for (let len = result.length, i = 0; i < len; i++) {
+ result[i] = Math.round(result[i]);
+ }
+ }
+ return result;
+ };
-/***/ }),
-/* 137 */
-/***/ (function(module, exports, __webpack_require__) {
+ // Preserve .conversion property if there is one
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
-"use strict";
+ return wrappedFn;
+}
+models.forEach(fromModel => {
+ convert[fromModel] = {};
-const path = __webpack_require__(4);
-const resolveCommand = __webpack_require__(138);
-const escape = __webpack_require__(144);
-const readShebang = __webpack_require__(145);
+ Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
+ Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
-const isWin = process.platform === 'win32';
-const isExecutableRegExp = /\.(?:com|exe)$/i;
-const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;
+ const routes = route(fromModel);
+ const routeModels = Object.keys(routes);
-function detectShebang(parsed) {
- parsed.file = resolveCommand(parsed);
+ routeModels.forEach(toModel => {
+ const fn = routes[toModel];
- const shebang = parsed.file && readShebang(parsed.file);
+ convert[fromModel][toModel] = wrapRounded(fn);
+ convert[fromModel][toModel].raw = wrapRaw(fn);
+ });
+});
- if (shebang) {
- parsed.args.unshift(parsed.file);
- parsed.command = shebang;
+module.exports = convert;
- return resolveCommand(parsed);
- }
- return parsed.file;
-}
+/***/ }),
+/* 239 */
+/***/ (function(module, exports, __webpack_require__) {
-function parseNonShell(parsed) {
- if (!isWin) {
- return parsed;
- }
+/* MIT license */
+/* eslint-disable no-mixed-operators */
+const cssKeywords = __webpack_require__(240);
- // Detect & add support for shebangs
- const commandFile = detectShebang(parsed);
+// NOTE: conversions should only return primitive values (i.e. arrays, or
+// values that give correct `typeof` results).
+// do not use box values types (i.e. Number(), String(), etc.)
- // We don't need a shell if the command filename is an executable
- const needsShell = !isExecutableRegExp.test(commandFile);
+const reverseKeywords = {};
+for (const key of Object.keys(cssKeywords)) {
+ reverseKeywords[cssKeywords[key]] = key;
+}
- // 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 convert = {
+ rgb: {channels: 3, labels: 'rgb'},
+ hsl: {channels: 3, labels: 'hsl'},
+ hsv: {channels: 3, labels: 'hsv'},
+ hwb: {channels: 3, labels: 'hwb'},
+ cmyk: {channels: 4, labels: 'cmyk'},
+ xyz: {channels: 3, labels: 'xyz'},
+ lab: {channels: 3, labels: 'lab'},
+ lch: {channels: 3, labels: 'lch'},
+ hex: {channels: 1, labels: ['hex']},
+ keyword: {channels: 1, labels: ['keyword']},
+ ansi16: {channels: 1, labels: ['ansi16']},
+ ansi256: {channels: 1, labels: ['ansi256']},
+ hcg: {channels: 3, labels: ['h', 'c', 'g']},
+ apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
+ gray: {channels: 1, labels: ['gray']}
+};
- // 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 = convert;
- // Escape command & arguments
- parsed.command = escape.command(parsed.command);
- parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));
+// Hide .channels and .labels properties
+for (const model of Object.keys(convert)) {
+ if (!('channels' in convert[model])) {
+ throw new Error('missing channels property: ' + model);
+ }
- const shellCommand = [parsed.command].concat(parsed.args).join(' ');
+ if (!('labels' in convert[model])) {
+ throw new Error('missing channel labels property: ' + model);
+ }
- 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
- }
+ if (convert[model].labels.length !== convert[model].channels) {
+ throw new Error('channel and label counts mismatch: ' + model);
+ }
- return parsed;
+ const {channels, labels} = convert[model];
+ delete convert[model].channels;
+ delete convert[model].labels;
+ Object.defineProperty(convert[model], 'channels', {value: channels});
+ Object.defineProperty(convert[model], 'labels', {value: labels});
}
-function parse(command, args, options) {
- // Normalize arguments, similar to nodejs
- if (args && !Array.isArray(args)) {
- options = args;
- args = null;
- }
+convert.rgb.hsl = function (rgb) {
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
+ const min = Math.min(r, g, b);
+ const max = Math.max(r, g, b);
+ const delta = max - min;
+ let h;
+ let s;
- args = args ? args.slice(0) : []; // Clone array to avoid changing the original
- options = Object.assign({}, options); // Clone object to avoid changing the original
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
- // Build our parsed object
- const parsed = {
- command,
- args,
- options,
- file: undefined,
- original: {
- command,
- args,
- },
- };
+ h = Math.min(h * 60, 360);
- // Delegate further parsing to shell or non-shell
- return options.shell ? parsed : parseNonShell(parsed);
-}
+ if (h < 0) {
+ h += 360;
+ }
-module.exports = parse;
+ const l = (min + max) / 2;
+ if (max === min) {
+ s = 0;
+ } else if (l <= 0.5) {
+ s = delta / (max + min);
+ } else {
+ s = delta / (2 - max - min);
+ }
-/***/ }),
-/* 138 */
-/***/ (function(module, exports, __webpack_require__) {
+ return [h, s * 100, l * 100];
+};
-"use strict";
+convert.rgb.hsv = function (rgb) {
+ let rdif;
+ let gdif;
+ let bdif;
+ let h;
+ let s;
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
+ const v = Math.max(r, g, b);
+ const diff = v - Math.min(r, g, b);
+ const diffc = function (c) {
+ return (v - c) / 6 / diff + 1 / 2;
+ };
-const path = __webpack_require__(4);
-const which = __webpack_require__(139);
-const getPathKey = __webpack_require__(143);
+ if (diff === 0) {
+ h = 0;
+ s = 0;
+ } else {
+ s = diff / v;
+ rdif = diffc(r);
+ gdif = diffc(g);
+ bdif = diffc(b);
-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 (r === v) {
+ h = bdif - gdif;
+ } else if (g === v) {
+ h = (1 / 3) + rdif - bdif;
+ } else if (b === v) {
+ h = (2 / 3) + gdif - rdif;
+ }
- // 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 (h < 0) {
+ h += 1;
+ } else if (h > 1) {
+ h -= 1;
+ }
+ }
- let resolved;
+ return [
+ h * 360,
+ s * 100,
+ v * 100
+ ];
+};
- try {
- resolved = which.sync(parsed.command, {
- path: env[getPathKey({ env })],
- pathExt: withoutPathExt ? path.delimiter : undefined,
- });
- } catch (e) {
- /* Empty */
- } finally {
- if (shouldSwitchCwd) {
- process.chdir(cwd);
- }
- }
+convert.rgb.hwb = function (rgb) {
+ const r = rgb[0];
+ const g = rgb[1];
+ let b = rgb[2];
+ const h = convert.rgb.hsl(rgb)[0];
+ const w = 1 / 255 * Math.min(r, Math.min(g, b));
- // 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);
- }
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
- return resolved;
-}
+ return [h, w * 100, b * 100];
+};
-function resolveCommand(parsed) {
- return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);
-}
+convert.rgb.cmyk = function (rgb) {
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
-module.exports = resolveCommand;
+ const k = Math.min(1 - r, 1 - g, 1 - b);
+ const c = (1 - r - k) / (1 - k) || 0;
+ const m = (1 - g - k) / (1 - k) || 0;
+ const y = (1 - b - k) / (1 - k) || 0;
+ return [c * 100, m * 100, y * 100, k * 100];
+};
-/***/ }),
-/* 139 */
-/***/ (function(module, exports, __webpack_require__) {
+function comparativeDistance(x, y) {
+ /*
+ See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
+ */
+ return (
+ ((x[0] - y[0]) ** 2) +
+ ((x[1] - y[1]) ** 2) +
+ ((x[2] - y[2]) ** 2)
+ );
+}
-const isWindows = process.platform === 'win32' ||
- process.env.OSTYPE === 'cygwin' ||
- process.env.OSTYPE === 'msys'
+convert.rgb.keyword = function (rgb) {
+ const reversed = reverseKeywords[rgb];
+ if (reversed) {
+ return reversed;
+ }
-const path = __webpack_require__(4)
-const COLON = isWindows ? ';' : ':'
-const isexe = __webpack_require__(140)
+ let currentClosestDistance = Infinity;
+ let currentClosestKeyword;
-const getNotFoundError = (cmd) =>
- Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })
+ for (const keyword of Object.keys(cssKeywords)) {
+ const value = cssKeywords[keyword];
-const getPathInfo = (cmd, opt) => {
- const colon = opt.colon || COLON
+ // Compute comparative distance
+ const distance = comparativeDistance(rgb, value);
- // If it has a slash, then we don't bother searching the pathenv.
- // just check the file itself, and that's it.
- const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? ['']
- : (
- [
- // windows always checks the cwd first
- ...(isWindows ? [process.cwd()] : []),
- ...(opt.path || process.env.PATH ||
- /* istanbul ignore next: very unusual */ '').split(colon),
- ]
- )
- const pathExtExe = isWindows
- ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'
- : ''
- const pathExt = isWindows ? pathExtExe.split(colon) : ['']
+ // Check if its less, if so set as closest
+ if (distance < currentClosestDistance) {
+ currentClosestDistance = distance;
+ currentClosestKeyword = keyword;
+ }
+ }
- if (isWindows) {
- if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')
- pathExt.unshift('')
- }
+ return currentClosestKeyword;
+};
- return {
- pathEnv,
- pathExt,
- pathExtExe,
- }
-}
+convert.keyword.rgb = function (keyword) {
+ return cssKeywords[keyword];
+};
-const which = (cmd, opt, cb) => {
- if (typeof opt === 'function') {
- cb = opt
- opt = {}
- }
- if (!opt)
- opt = {}
+convert.rgb.xyz = function (rgb) {
+ let r = rgb[0] / 255;
+ let g = rgb[1] / 255;
+ let b = rgb[2] / 255;
- const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)
- const found = []
+ // Assume sRGB
+ r = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);
+ g = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);
+ b = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);
- const step = i => new Promise((resolve, reject) => {
- if (i === pathEnv.length)
- return opt.all && found.length ? resolve(found)
- : reject(getNotFoundError(cmd))
+ const x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
+ const y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
+ const z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
- const ppRaw = pathEnv[i]
- const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw
+ return [x * 100, y * 100, z * 100];
+};
- const pCmd = path.join(pathPart, cmd)
- const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd
- : pCmd
+convert.rgb.lab = function (rgb) {
+ const xyz = convert.rgb.xyz(rgb);
+ let x = xyz[0];
+ let y = xyz[1];
+ let z = xyz[2];
- resolve(subStep(p, i, 0))
- })
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
- const subStep = (p, i, ii) => new Promise((resolve, reject) => {
- if (ii === pathExt.length)
- return resolve(step(i + 1))
- const ext = pathExt[ii]
- isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {
- if (!er && is) {
- if (opt.all)
- found.push(p + ext)
- else
- return resolve(p + ext)
- }
- return resolve(subStep(p, i, ii + 1))
- })
- })
+ x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);
+ y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);
+ z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);
- return cb ? step(0).then(res => cb(null, res), cb) : step(0)
-}
+ const l = (116 * y) - 16;
+ const a = 500 * (x - y);
+ const b = 200 * (y - z);
-const whichSync = (cmd, opt) => {
- opt = opt || {}
+ return [l, a, b];
+};
- const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)
- const found = []
+convert.hsl.rgb = function (hsl) {
+ const h = hsl[0] / 360;
+ const s = hsl[1] / 100;
+ const l = hsl[2] / 100;
+ let t2;
+ let t3;
+ let val;
- for (let i = 0; i < pathEnv.length; i ++) {
- const ppRaw = pathEnv[i]
- const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw
+ if (s === 0) {
+ val = l * 255;
+ return [val, val, val];
+ }
- const pCmd = path.join(pathPart, cmd)
- const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd
- : pCmd
+ if (l < 0.5) {
+ t2 = l * (1 + s);
+ } else {
+ t2 = l + s - l * s;
+ }
- for (let j = 0; j < pathExt.length; j ++) {
- const cur = p + pathExt[j]
- try {
- const is = isexe.sync(cur, { pathExt: pathExtExe })
- if (is) {
- if (opt.all)
- found.push(cur)
- else
- return cur
- }
- } catch (ex) {}
- }
- }
+ const t1 = 2 * l - t2;
- if (opt.all && found.length)
- return found
+ const rgb = [0, 0, 0];
+ for (let i = 0; i < 3; i++) {
+ t3 = h + 1 / 3 * -(i - 1);
+ if (t3 < 0) {
+ t3++;
+ }
- if (opt.nothrow)
- return null
+ if (t3 > 1) {
+ t3--;
+ }
- throw getNotFoundError(cmd)
-}
+ if (6 * t3 < 1) {
+ val = t1 + (t2 - t1) * 6 * t3;
+ } else if (2 * t3 < 1) {
+ val = t2;
+ } else if (3 * t3 < 2) {
+ val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
+ } else {
+ val = t1;
+ }
-module.exports = which
-which.sync = whichSync
+ rgb[i] = val * 255;
+ }
+ return rgb;
+};
-/***/ }),
-/* 140 */
-/***/ (function(module, exports, __webpack_require__) {
+convert.hsl.hsv = function (hsl) {
+ const h = hsl[0];
+ let s = hsl[1] / 100;
+ let l = hsl[2] / 100;
+ let smin = s;
+ const lmin = Math.max(l, 0.01);
-var fs = __webpack_require__(132)
-var core
-if (process.platform === 'win32' || global.TESTING_WINDOWS) {
- core = __webpack_require__(141)
-} else {
- core = __webpack_require__(142)
-}
+ l *= 2;
+ s *= (l <= 1) ? l : 2 - l;
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
+ const v = (l + s) / 2;
+ const sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
-module.exports = isexe
-isexe.sync = sync
+ return [h, sv * 100, v * 100];
+};
-function isexe (path, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = {}
- }
+convert.hsv.rgb = function (hsv) {
+ const h = hsv[0] / 60;
+ const s = hsv[1] / 100;
+ let v = hsv[2] / 100;
+ const hi = Math.floor(h) % 6;
- if (!cb) {
- if (typeof Promise !== 'function') {
- throw new TypeError('callback not provided')
- }
+ const f = h - Math.floor(h);
+ const p = 255 * v * (1 - s);
+ const q = 255 * v * (1 - (s * f));
+ const t = 255 * v * (1 - (s * (1 - f)));
+ v *= 255;
- return new Promise(function (resolve, reject) {
- isexe(path, options || {}, function (er, is) {
- if (er) {
- reject(er)
- } else {
- resolve(is)
- }
- })
- })
- }
+ switch (hi) {
+ case 0:
+ return [v, t, p];
+ case 1:
+ return [q, v, p];
+ case 2:
+ return [p, v, t];
+ case 3:
+ return [p, q, v];
+ case 4:
+ return [t, p, v];
+ case 5:
+ return [v, p, q];
+ }
+};
- 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)
- })
-}
+convert.hsv.hsl = function (hsv) {
+ const h = hsv[0];
+ const s = hsv[1] / 100;
+ const v = hsv[2] / 100;
+ const vmin = Math.max(v, 0.01);
+ let sl;
+ let l;
-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
- }
- }
-}
+ l = (2 - s) * v;
+ const lmin = (2 - s) * vmin;
+ sl = s * vmin;
+ sl /= (lmin <= 1) ? lmin : 2 - lmin;
+ sl = sl || 0;
+ l /= 2;
+ return [h, sl * 100, l * 100];
+};
-/***/ }),
-/* 141 */
-/***/ (function(module, exports, __webpack_require__) {
+// http://dev.w3.org/csswg/css-color/#hwb-to-rgb
+convert.hwb.rgb = function (hwb) {
+ const h = hwb[0] / 360;
+ let wh = hwb[1] / 100;
+ let bl = hwb[2] / 100;
+ const ratio = wh + bl;
+ let f;
-module.exports = isexe
-isexe.sync = sync
+ // Wh + bl cant be > 1
+ if (ratio > 1) {
+ wh /= ratio;
+ bl /= ratio;
+ }
-var fs = __webpack_require__(132)
+ const i = Math.floor(6 * h);
+ const v = 1 - bl;
+ f = 6 * h - i;
-function checkPathExt (path, options) {
- var pathext = options.pathExt !== undefined ?
- options.pathExt : process.env.PATHEXT
+ if ((i & 0x01) !== 0) {
+ f = 1 - f;
+ }
- if (!pathext) {
- return true
- }
+ const n = wh + f * (v - wh); // Linear interpolation
- 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
-}
+ let r;
+ let g;
+ let b;
+ /* eslint-disable max-statements-per-line,no-multi-spaces */
+ switch (i) {
+ default:
+ case 6:
+ case 0: r = v; g = n; b = wh; break;
+ case 1: r = n; g = v; b = wh; break;
+ case 2: r = wh; g = v; b = n; break;
+ case 3: r = wh; g = n; b = v; break;
+ case 4: r = n; g = wh; b = v; break;
+ case 5: r = v; g = wh; b = n; break;
+ }
+ /* eslint-enable max-statements-per-line,no-multi-spaces */
-function checkStat (stat, path, options) {
- if (!stat.isSymbolicLink() && !stat.isFile()) {
- return false
- }
- return checkPathExt(path, options)
-}
+ return [r * 255, g * 255, b * 255];
+};
-function isexe (path, options, cb) {
- fs.stat(path, function (er, stat) {
- cb(er, er ? false : checkStat(stat, path, options))
- })
-}
+convert.cmyk.rgb = function (cmyk) {
+ const c = cmyk[0] / 100;
+ const m = cmyk[1] / 100;
+ const y = cmyk[2] / 100;
+ const k = cmyk[3] / 100;
-function sync (path, options) {
- return checkStat(fs.statSync(path), path, options)
-}
+ const r = 1 - Math.min(1, c * (1 - k) + k);
+ const g = 1 - Math.min(1, m * (1 - k) + k);
+ const b = 1 - Math.min(1, y * (1 - k) + k);
+ return [r * 255, g * 255, b * 255];
+};
-/***/ }),
-/* 142 */
-/***/ (function(module, exports, __webpack_require__) {
+convert.xyz.rgb = function (xyz) {
+ const x = xyz[0] / 100;
+ const y = xyz[1] / 100;
+ const z = xyz[2] / 100;
+ let r;
+ let g;
+ let b;
-module.exports = isexe
-isexe.sync = sync
+ r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
+ g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
+ b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
-var fs = __webpack_require__(132)
+ // Assume sRGB
+ r = r > 0.0031308
+ ? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)
+ : r * 12.92;
-function isexe (path, options, cb) {
- fs.stat(path, function (er, stat) {
- cb(er, er ? false : checkStat(stat, options))
- })
-}
-
-function sync (path, options) {
- return checkStat(fs.statSync(path), options)
-}
+ g = g > 0.0031308
+ ? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)
+ : g * 12.92;
-function checkStat (stat, options) {
- return stat.isFile() && checkMode(stat, options)
-}
+ b = b > 0.0031308
+ ? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)
+ : b * 12.92;
-function checkMode (stat, options) {
- var mod = stat.mode
- var uid = stat.uid
- var gid = stat.gid
+ r = Math.min(Math.max(0, r), 1);
+ g = Math.min(Math.max(0, g), 1);
+ b = Math.min(Math.max(0, b), 1);
- var myUid = options.uid !== undefined ?
- options.uid : process.getuid && process.getuid()
- var myGid = options.gid !== undefined ?
- options.gid : process.getgid && process.getgid()
+ return [r * 255, g * 255, b * 255];
+};
- var u = parseInt('100', 8)
- var g = parseInt('010', 8)
- var o = parseInt('001', 8)
- var ug = u | g
+convert.xyz.lab = function (xyz) {
+ let x = xyz[0];
+ let y = xyz[1];
+ let z = xyz[2];
- var ret = (mod & o) ||
- (mod & g) && gid === myGid ||
- (mod & u) && uid === myUid ||
- (mod & ug) && myUid === 0
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
- return ret
-}
+ x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);
+ y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);
+ z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);
+ const l = (116 * y) - 16;
+ const a = 500 * (x - y);
+ const b = 200 * (y - z);
-/***/ }),
-/* 143 */
-/***/ (function(module, exports, __webpack_require__) {
+ return [l, a, b];
+};
-"use strict";
+convert.lab.xyz = function (lab) {
+ const l = lab[0];
+ const a = lab[1];
+ const b = lab[2];
+ let x;
+ let y;
+ let z;
+ y = (l + 16) / 116;
+ x = a / 500 + y;
+ z = y - b / 200;
-const pathKey = (options = {}) => {
- const environment = options.env || process.env;
- const platform = options.platform || process.platform;
+ const y2 = y ** 3;
+ const x2 = x ** 3;
+ const z2 = z ** 3;
+ y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
+ x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
+ z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
- if (platform !== 'win32') {
- return 'PATH';
- }
+ x *= 95.047;
+ y *= 100;
+ z *= 108.883;
- return Object.keys(environment).find(key => key.toUpperCase() === 'PATH') || 'Path';
+ return [x, y, z];
};
-module.exports = pathKey;
-// TODO: Remove this for the next major release
-module.exports.default = pathKey;
+convert.lab.lch = function (lab) {
+ const l = lab[0];
+ const a = lab[1];
+ const b = lab[2];
+ let h;
+ const hr = Math.atan2(b, a);
+ h = hr * 360 / 2 / Math.PI;
-/***/ }),
-/* 144 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (h < 0) {
+ h += 360;
+ }
-"use strict";
+ const c = Math.sqrt(a * a + b * b);
+ return [l, c, h];
+};
-// See http://www.robvanderwoude.com/escapechars.php
-const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g;
+convert.lch.lab = function (lch) {
+ const l = lch[0];
+ const c = lch[1];
+ const h = lch[2];
-function escapeCommand(arg) {
- // Escape meta chars
- arg = arg.replace(metaCharsRegExp, '^$1');
+ const hr = h / 360 * 2 * Math.PI;
+ const a = c * Math.cos(hr);
+ const b = c * Math.sin(hr);
- return arg;
-}
+ return [l, a, b];
+};
-function escapeArgument(arg, doubleEscapeMetaChars) {
- // Convert to string
- arg = `${arg}`;
+convert.rgb.ansi16 = function (args, saturation = null) {
+ const [r, g, b] = args;
+ let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization
- // Algorithm below is based on https://qntm.org/cmd
+ value = Math.round(value / 50);
- // Sequence of backslashes followed by a double quote:
- // double up all the backslashes and escape the double quote
- arg = arg.replace(/(\\*)"/g, '$1$1\\"');
+ if (value === 0) {
+ return 30;
+ }
- // 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');
+ let ansi = 30
+ + ((Math.round(b / 255) << 2)
+ | (Math.round(g / 255) << 1)
+ | Math.round(r / 255));
- // All other backslashes occur literally
+ if (value === 2) {
+ ansi += 60;
+ }
- // Quote the whole thing:
- arg = `"${arg}"`;
+ return ansi;
+};
- // Escape meta chars
- arg = arg.replace(metaCharsRegExp, '^$1');
+convert.hsv.ansi16 = function (args) {
+ // Optimization here; we already know the value and don't need to get
+ // it converted for us.
+ return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
+};
- // Double escape meta chars if necessary
- if (doubleEscapeMetaChars) {
- arg = arg.replace(metaCharsRegExp, '^$1');
- }
+convert.rgb.ansi256 = function (args) {
+ const r = args[0];
+ const g = args[1];
+ const b = args[2];
- return arg;
-}
+ // We use the extended greyscale palette here, with the exception of
+ // black and white. normal palette only has 4 greyscale shades.
+ if (r === g && g === b) {
+ if (r < 8) {
+ return 16;
+ }
-module.exports.command = escapeCommand;
-module.exports.argument = escapeArgument;
+ if (r > 248) {
+ return 231;
+ }
+ return Math.round(((r - 8) / 247) * 24) + 232;
+ }
-/***/ }),
-/* 145 */
-/***/ (function(module, exports, __webpack_require__) {
+ const ansi = 16
+ + (36 * Math.round(r / 255 * 5))
+ + (6 * Math.round(g / 255 * 5))
+ + Math.round(b / 255 * 5);
-"use strict";
+ return ansi;
+};
+convert.ansi16.rgb = function (args) {
+ let color = args % 10;
-const fs = __webpack_require__(132);
-const shebangCommand = __webpack_require__(146);
+ // Handle greyscale
+ if (color === 0 || color === 7) {
+ if (args > 50) {
+ color += 3.5;
+ }
-function readShebang(command) {
- // Read the first 150 bytes from the file
- const size = 150;
- const buffer = Buffer.alloc(size);
+ color = color / 10.5 * 255;
- let fd;
+ return [color, color, color];
+ }
- try {
- fd = fs.openSync(command, 'r');
- fs.readSync(fd, buffer, 0, size, 0);
- fs.closeSync(fd);
- } catch (e) { /* Empty */ }
+ const mult = (~~(args > 50) + 1) * 0.5;
+ const r = ((color & 1) * mult) * 255;
+ const g = (((color >> 1) & 1) * mult) * 255;
+ const b = (((color >> 2) & 1) * mult) * 255;
- // Attempt to extract shebang (null is returned if not a shebang)
- return shebangCommand(buffer.toString());
-}
+ return [r, g, b];
+};
-module.exports = readShebang;
+convert.ansi256.rgb = function (args) {
+ // Handle greyscale
+ if (args >= 232) {
+ const c = (args - 232) * 10 + 8;
+ return [c, c, c];
+ }
+ args -= 16;
-/***/ }),
-/* 146 */
-/***/ (function(module, exports, __webpack_require__) {
+ let rem;
+ const r = Math.floor(args / 36) / 5 * 255;
+ const g = Math.floor((rem = args % 36) / 6) / 5 * 255;
+ const b = (rem % 6) / 5 * 255;
-"use strict";
+ return [r, g, b];
+};
-const shebangRegex = __webpack_require__(147);
+convert.rgb.hex = function (args) {
+ const integer = ((Math.round(args[0]) & 0xFF) << 16)
+ + ((Math.round(args[1]) & 0xFF) << 8)
+ + (Math.round(args[2]) & 0xFF);
-module.exports = (string = '') => {
- const match = string.match(shebangRegex);
+ const string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+};
+convert.hex.rgb = function (args) {
+ const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
if (!match) {
- return null;
+ return [0, 0, 0];
}
- const [path, argument] = match[0].replace(/#! ?/, '').split(' ');
- const binary = path.split('/').pop();
+ let colorString = match[0];
- if (binary === 'env') {
- return argument;
+ if (match[0].length === 3) {
+ colorString = colorString.split('').map(char => {
+ return char + char;
+ }).join('');
}
- return argument ? `${binary} ${argument}` : binary;
-};
+ const integer = parseInt(colorString, 16);
+ const r = (integer >> 16) & 0xFF;
+ const g = (integer >> 8) & 0xFF;
+ const b = integer & 0xFF;
+ return [r, g, b];
+};
-/***/ }),
-/* 147 */
-/***/ (function(module, exports, __webpack_require__) {
+convert.rgb.hcg = function (rgb) {
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
+ const max = Math.max(Math.max(r, g), b);
+ const min = Math.min(Math.min(r, g), b);
+ const chroma = (max - min);
+ let grayscale;
+ let hue;
-"use strict";
+ if (chroma < 1) {
+ grayscale = min / (1 - chroma);
+ } else {
+ grayscale = 0;
+ }
-module.exports = /^#!(.*)/;
+ if (chroma <= 0) {
+ hue = 0;
+ } else
+ if (max === r) {
+ hue = ((g - b) / chroma) % 6;
+ } else
+ if (max === g) {
+ hue = 2 + (b - r) / chroma;
+ } else {
+ hue = 4 + (r - g) / chroma;
+ }
+ hue /= 6;
+ hue %= 1;
-/***/ }),
-/* 148 */
-/***/ (function(module, exports, __webpack_require__) {
+ return [hue * 360, chroma * 100, grayscale * 100];
+};
-"use strict";
+convert.hsl.hcg = function (hsl) {
+ const s = hsl[1] / 100;
+ const l = hsl[2] / 100;
+ const c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));
-const isWin = process.platform === 'win32';
+ let f = 0;
+ if (c < 1.0) {
+ f = (l - 0.5 * c) / (1.0 - c);
+ }
-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,
- });
-}
+ return [hsl[0], c * 100, f * 100];
+};
-function hookChildProcess(cp, parsed) {
- if (!isWin) {
- return;
- }
+convert.hsv.hcg = function (hsv) {
+ const s = hsv[1] / 100;
+ const v = hsv[2] / 100;
- const originalEmit = cp.emit;
+ const c = s * v;
+ let f = 0;
- 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 (c < 1.0) {
+ f = (v - c) / (1 - c);
+ }
- if (err) {
- return originalEmit.call(cp, 'error', err);
- }
- }
+ return [hsv[0], c * 100, f * 100];
+};
- return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params
- };
-}
+convert.hcg.rgb = function (hcg) {
+ const h = hcg[0] / 360;
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
-function verifyENOENT(status, parsed) {
- if (isWin && status === 1 && !parsed.file) {
- return notFoundError(parsed.original, 'spawn');
- }
+ if (c === 0.0) {
+ return [g * 255, g * 255, g * 255];
+ }
- return null;
-}
+ const pure = [0, 0, 0];
+ const hi = (h % 1) * 6;
+ const v = hi % 1;
+ const w = 1 - v;
+ let mg = 0;
-function verifyENOENTSync(status, parsed) {
- if (isWin && status === 1 && !parsed.file) {
- return notFoundError(parsed.original, 'spawnSync');
- }
+ /* eslint-disable max-statements-per-line */
+ switch (Math.floor(hi)) {
+ case 0:
+ pure[0] = 1; pure[1] = v; pure[2] = 0; break;
+ case 1:
+ pure[0] = w; pure[1] = 1; pure[2] = 0; break;
+ case 2:
+ pure[0] = 0; pure[1] = 1; pure[2] = v; break;
+ case 3:
+ pure[0] = 0; pure[1] = w; pure[2] = 1; break;
+ case 4:
+ pure[0] = v; pure[1] = 0; pure[2] = 1; break;
+ default:
+ pure[0] = 1; pure[1] = 0; pure[2] = w;
+ }
+ /* eslint-enable max-statements-per-line */
- return null;
-}
+ mg = (1.0 - c) * g;
-module.exports = {
- hookChildProcess,
- verifyENOENT,
- verifyENOENTSync,
- notFoundError,
+ return [
+ (c * pure[0] + mg) * 255,
+ (c * pure[1] + mg) * 255,
+ (c * pure[2] + mg) * 255
+ ];
};
+convert.hcg.hsv = function (hcg) {
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
-/***/ }),
-/* 149 */
-/***/ (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);
- }
+ const v = c + g * (1.0 - c);
+ let f = 0;
- if (input[input.length - 1] === CR) {
- input = input.slice(0, input.length - 1);
+ if (v > 0.0) {
+ f = c / v;
}
- return input;
+ return [hcg[0], f * 100, v * 100];
};
+convert.hcg.hsl = function (hcg) {
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
-/***/ }),
-/* 150 */
-/***/ (function(module, exports, __webpack_require__) {
+ const l = g * (1.0 - c) + 0.5 * c;
+ let s = 0;
-"use strict";
+ if (l > 0.0 && l < 0.5) {
+ s = c / (2 * l);
+ } else
+ if (l >= 0.5 && l < 1.0) {
+ s = c / (2 * (1 - l));
+ }
-const path = __webpack_require__(4);
-const pathKey = __webpack_require__(151);
+ return [hcg[0], s * 100, l * 100];
+};
-const npmRunPath = options => {
- options = {
- cwd: process.cwd(),
- path: process.env[pathKey()],
- execPath: process.execPath,
- ...options
- };
+convert.hcg.hwb = function (hcg) {
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
+ const v = c + g * (1.0 - c);
+ return [hcg[0], (v - c) * 100, (1 - v) * 100];
+};
- let previous;
- let cwdPath = path.resolve(options.cwd);
- const result = [];
+convert.hwb.hcg = function (hwb) {
+ const w = hwb[1] / 100;
+ const b = hwb[2] / 100;
+ const v = 1 - b;
+ const c = v - w;
+ let g = 0;
- while (previous !== cwdPath) {
- result.push(path.join(cwdPath, 'node_modules/.bin'));
- previous = cwdPath;
- cwdPath = path.resolve(cwdPath, '..');
+ if (c < 1) {
+ g = (v - c) / (1 - c);
}
- // Ensure the running `node` binary is used
- const execPathDir = path.resolve(options.cwd, options.execPath, '..');
- result.push(execPathDir);
+ return [hwb[0], c * 100, g * 100];
+};
- return result.concat(options.path).join(path.delimiter);
+convert.apple.rgb = function (apple) {
+ return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
};
-module.exports = npmRunPath;
-// TODO: Remove this for the next major release
-module.exports.default = npmRunPath;
+convert.rgb.apple = function (rgb) {
+ return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
+};
-module.exports.env = options => {
- options = {
- env: process.env,
- ...options
- };
+convert.gray.rgb = function (args) {
+ return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
+};
- const env = {...options.env};
- const path = pathKey({env});
+convert.gray.hsl = function (args) {
+ return [0, 0, args[0]];
+};
- options.path = env[path];
- env[path] = module.exports(options);
+convert.gray.hsv = convert.gray.hsl;
- return env;
+convert.gray.hwb = function (gray) {
+ return [0, 100, gray[0]];
};
+convert.gray.cmyk = function (gray) {
+ return [0, 0, 0, gray[0]];
+};
-/***/ }),
-/* 151 */
-/***/ (function(module, exports, __webpack_require__) {
+convert.gray.lab = function (gray) {
+ return [gray[0], 0, 0];
+};
-"use strict";
+convert.gray.hex = function (gray) {
+ const val = Math.round(gray[0] / 100 * 255) & 0xFF;
+ const integer = (val << 16) + (val << 8) + val;
+ const string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+};
-const pathKey = (options = {}) => {
- const environment = options.env || process.env;
- const platform = options.platform || process.platform;
+convert.rgb.gray = function (rgb) {
+ const val = (rgb[0] + rgb[1] + rgb[2]) / 3;
+ return [val / 255 * 100];
+};
- if (platform !== 'win32') {
- return 'PATH';
- }
- return Object.keys(environment).find(key => key.toUpperCase() === 'PATH') || 'Path';
-};
+/***/ }),
+/* 240 */
+/***/ (function(module, exports, __webpack_require__) {
-module.exports = pathKey;
-// TODO: Remove this for the next major release
-module.exports.default = pathKey;
+"use strict";
+
+
+module.exports = {
+ "aliceblue": [240, 248, 255],
+ "antiquewhite": [250, 235, 215],
+ "aqua": [0, 255, 255],
+ "aquamarine": [127, 255, 212],
+ "azure": [240, 255, 255],
+ "beige": [245, 245, 220],
+ "bisque": [255, 228, 196],
+ "black": [0, 0, 0],
+ "blanchedalmond": [255, 235, 205],
+ "blue": [0, 0, 255],
+ "blueviolet": [138, 43, 226],
+ "brown": [165, 42, 42],
+ "burlywood": [222, 184, 135],
+ "cadetblue": [95, 158, 160],
+ "chartreuse": [127, 255, 0],
+ "chocolate": [210, 105, 30],
+ "coral": [255, 127, 80],
+ "cornflowerblue": [100, 149, 237],
+ "cornsilk": [255, 248, 220],
+ "crimson": [220, 20, 60],
+ "cyan": [0, 255, 255],
+ "darkblue": [0, 0, 139],
+ "darkcyan": [0, 139, 139],
+ "darkgoldenrod": [184, 134, 11],
+ "darkgray": [169, 169, 169],
+ "darkgreen": [0, 100, 0],
+ "darkgrey": [169, 169, 169],
+ "darkkhaki": [189, 183, 107],
+ "darkmagenta": [139, 0, 139],
+ "darkolivegreen": [85, 107, 47],
+ "darkorange": [255, 140, 0],
+ "darkorchid": [153, 50, 204],
+ "darkred": [139, 0, 0],
+ "darksalmon": [233, 150, 122],
+ "darkseagreen": [143, 188, 143],
+ "darkslateblue": [72, 61, 139],
+ "darkslategray": [47, 79, 79],
+ "darkslategrey": [47, 79, 79],
+ "darkturquoise": [0, 206, 209],
+ "darkviolet": [148, 0, 211],
+ "deeppink": [255, 20, 147],
+ "deepskyblue": [0, 191, 255],
+ "dimgray": [105, 105, 105],
+ "dimgrey": [105, 105, 105],
+ "dodgerblue": [30, 144, 255],
+ "firebrick": [178, 34, 34],
+ "floralwhite": [255, 250, 240],
+ "forestgreen": [34, 139, 34],
+ "fuchsia": [255, 0, 255],
+ "gainsboro": [220, 220, 220],
+ "ghostwhite": [248, 248, 255],
+ "gold": [255, 215, 0],
+ "goldenrod": [218, 165, 32],
+ "gray": [128, 128, 128],
+ "green": [0, 128, 0],
+ "greenyellow": [173, 255, 47],
+ "grey": [128, 128, 128],
+ "honeydew": [240, 255, 240],
+ "hotpink": [255, 105, 180],
+ "indianred": [205, 92, 92],
+ "indigo": [75, 0, 130],
+ "ivory": [255, 255, 240],
+ "khaki": [240, 230, 140],
+ "lavender": [230, 230, 250],
+ "lavenderblush": [255, 240, 245],
+ "lawngreen": [124, 252, 0],
+ "lemonchiffon": [255, 250, 205],
+ "lightblue": [173, 216, 230],
+ "lightcoral": [240, 128, 128],
+ "lightcyan": [224, 255, 255],
+ "lightgoldenrodyellow": [250, 250, 210],
+ "lightgray": [211, 211, 211],
+ "lightgreen": [144, 238, 144],
+ "lightgrey": [211, 211, 211],
+ "lightpink": [255, 182, 193],
+ "lightsalmon": [255, 160, 122],
+ "lightseagreen": [32, 178, 170],
+ "lightskyblue": [135, 206, 250],
+ "lightslategray": [119, 136, 153],
+ "lightslategrey": [119, 136, 153],
+ "lightsteelblue": [176, 196, 222],
+ "lightyellow": [255, 255, 224],
+ "lime": [0, 255, 0],
+ "limegreen": [50, 205, 50],
+ "linen": [250, 240, 230],
+ "magenta": [255, 0, 255],
+ "maroon": [128, 0, 0],
+ "mediumaquamarine": [102, 205, 170],
+ "mediumblue": [0, 0, 205],
+ "mediumorchid": [186, 85, 211],
+ "mediumpurple": [147, 112, 219],
+ "mediumseagreen": [60, 179, 113],
+ "mediumslateblue": [123, 104, 238],
+ "mediumspringgreen": [0, 250, 154],
+ "mediumturquoise": [72, 209, 204],
+ "mediumvioletred": [199, 21, 133],
+ "midnightblue": [25, 25, 112],
+ "mintcream": [245, 255, 250],
+ "mistyrose": [255, 228, 225],
+ "moccasin": [255, 228, 181],
+ "navajowhite": [255, 222, 173],
+ "navy": [0, 0, 128],
+ "oldlace": [253, 245, 230],
+ "olive": [128, 128, 0],
+ "olivedrab": [107, 142, 35],
+ "orange": [255, 165, 0],
+ "orangered": [255, 69, 0],
+ "orchid": [218, 112, 214],
+ "palegoldenrod": [238, 232, 170],
+ "palegreen": [152, 251, 152],
+ "paleturquoise": [175, 238, 238],
+ "palevioletred": [219, 112, 147],
+ "papayawhip": [255, 239, 213],
+ "peachpuff": [255, 218, 185],
+ "peru": [205, 133, 63],
+ "pink": [255, 192, 203],
+ "plum": [221, 160, 221],
+ "powderblue": [176, 224, 230],
+ "purple": [128, 0, 128],
+ "rebeccapurple": [102, 51, 153],
+ "red": [255, 0, 0],
+ "rosybrown": [188, 143, 143],
+ "royalblue": [65, 105, 225],
+ "saddlebrown": [139, 69, 19],
+ "salmon": [250, 128, 114],
+ "sandybrown": [244, 164, 96],
+ "seagreen": [46, 139, 87],
+ "seashell": [255, 245, 238],
+ "sienna": [160, 82, 45],
+ "silver": [192, 192, 192],
+ "skyblue": [135, 206, 235],
+ "slateblue": [106, 90, 205],
+ "slategray": [112, 128, 144],
+ "slategrey": [112, 128, 144],
+ "snow": [255, 250, 250],
+ "springgreen": [0, 255, 127],
+ "steelblue": [70, 130, 180],
+ "tan": [210, 180, 140],
+ "teal": [0, 128, 128],
+ "thistle": [216, 191, 216],
+ "tomato": [255, 99, 71],
+ "turquoise": [64, 224, 208],
+ "violet": [238, 130, 238],
+ "wheat": [245, 222, 179],
+ "white": [255, 255, 255],
+ "whitesmoke": [245, 245, 245],
+ "yellow": [255, 255, 0],
+ "yellowgreen": [154, 205, 50]
+};
/***/ }),
-/* 152 */
+/* 241 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
+const conversions = __webpack_require__(239);
-const mimicFn = __webpack_require__(153);
+/*
+ This function routes a model to all other models.
-const calledFunctions = new WeakMap();
+ all functions that are routed have a property `.conversion` attached
+ to the returned synthetic function. This property is an array
+ of strings, each with the steps in between the 'from' and 'to'
+ color models (inclusive).
-const onetime = (function_, options = {}) => {
- if (typeof function_ !== 'function') {
- throw new TypeError('Expected a function');
- }
+ conversions that are not possible simply are not included.
+*/
- let returnValue;
- let callCount = 0;
- const functionName = function_.displayName || function_.name || '';
+function buildGraph() {
+ const graph = {};
+ // https://jsperf.com/object-keys-vs-for-in-with-closure/3
+ const models = Object.keys(conversions);
- const onetime = function (...arguments_) {
- calledFunctions.set(onetime, ++callCount);
+ for (let len = models.length, i = 0; i < len; i++) {
+ graph[models[i]] = {
+ // http://jsperf.com/1-vs-infinity
+ // micro-opt, but this is simple.
+ distance: -1,
+ parent: null
+ };
+ }
- 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 graph;
+}
- return returnValue;
- };
+// https://en.wikipedia.org/wiki/Breadth-first_search
+function deriveBFS(fromModel) {
+ const graph = buildGraph();
+ const queue = [fromModel]; // Unshift -> queue -> pop
- mimicFn(onetime, function_);
- calledFunctions.set(onetime, callCount);
+ graph[fromModel].distance = 0;
- return onetime;
-};
+ while (queue.length) {
+ const current = queue.pop();
+ const adjacents = Object.keys(conversions[current]);
-module.exports = onetime;
-// TODO: Remove this for the next major release
-module.exports.default = onetime;
+ for (let len = adjacents.length, i = 0; i < len; i++) {
+ const adjacent = adjacents[i];
+ const node = graph[adjacent];
-module.exports.callCount = function_ => {
- if (!calledFunctions.has(function_)) {
- throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
+ if (node.distance === -1) {
+ node.distance = graph[current].distance + 1;
+ node.parent = current;
+ queue.unshift(adjacent);
+ }
+ }
}
- return calledFunctions.get(function_);
-};
+ return graph;
+}
+function link(from, to) {
+ return function (args) {
+ return to(from(args));
+ };
+}
-/***/ }),
-/* 153 */
-/***/ (function(module, exports, __webpack_require__) {
+function wrapConversion(toModel, graph) {
+ const path = [graph[toModel].parent, toModel];
+ let fn = conversions[graph[toModel].parent][toModel];
-"use strict";
+ let cur = graph[toModel].parent;
+ while (graph[cur].parent) {
+ path.unshift(graph[cur].parent);
+ fn = link(conversions[graph[cur].parent][cur], fn);
+ cur = graph[cur].parent;
+ }
+ fn.conversion = path;
+ return fn;
+}
-const mimicFn = (to, from) => {
- for (const prop of Reflect.ownKeys(from)) {
- Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));
+module.exports = function (fromModel) {
+ const graph = deriveBFS(fromModel);
+ const conversion = {};
+
+ const models = Object.keys(graph);
+ for (let len = models.length, i = 0; i < len; i++) {
+ const toModel = models[i];
+ const node = graph[toModel];
+
+ if (node.parent === null) {
+ // No possible conversion, or this node is the source model.
+ continue;
+ }
+
+ conversion[toModel] = wrapConversion(toModel, graph);
}
- return to;
+ return conversion;
};
-module.exports = mimicFn;
-// TODO: Remove this for the next major release
-module.exports.default = mimicFn;
/***/ }),
-/* 154 */
+/* 242 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const {signalsByName} = __webpack_require__(155);
+const os = __webpack_require__(243);
+const tty = __webpack_require__(244);
+const hasFlag = __webpack_require__(245);
-const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {
- if (timedOut) {
- return `timed out after ${timeout} milliseconds`;
+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);
}
+}
- if (isCanceled) {
- return 'was canceled';
+function translateLevel(level) {
+ if (level === 0) {
+ return false;
}
- if (errorCode !== undefined) {
- return `failed with ${errorCode}`;
+ return {
+ level,
+ hasBasic: true,
+ has256: level >= 2,
+ has16m: level >= 3
+ };
+}
+
+function supportsColor(haveStream, streamIsTTY) {
+ if (forceColor === 0) {
+ return 0;
}
- if (signal !== undefined) {
- return `was killed with ${signal} (${signalDescription})`;
+ if (hasFlag('color=16m') ||
+ hasFlag('color=full') ||
+ hasFlag('color=truecolor')) {
+ return 3;
}
- if (exitCode !== undefined) {
- return `failed with exit code ${exitCode}`;
+ if (hasFlag('color=256')) {
+ return 2;
}
- return 'failed';
-};
+ if (haveStream && !streamIsTTY && forceColor === undefined) {
+ return 0;
+ }
-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;
+ const min = forceColor || 0;
- const errorCode = error && error.code;
+ if (env.TERM === 'dumb') {
+ return min;
+ }
- 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');
+ 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;
+ }
- if (isError) {
- error.originalMessage = error.message;
- error.message = message;
- } else {
- error = new Error(message);
+ return 1;
}
- error.shortMessage = shortMessage;
- error.command = command;
- error.exitCode = exitCode;
- error.signal = signal;
- error.signalDescription = signalDescription;
- error.stdout = stdout;
- error.stderr = stderr;
+ if ('CI' in env) {
+ if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {
+ return 1;
+ }
- if (all !== undefined) {
- error.all = all;
+ return min;
}
- if ('bufferedData' in error) {
- delete error.bufferedData;
+ if ('TEAMCITY_VERSION' in env) {
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
}
- error.failed = true;
- error.timedOut = Boolean(timedOut);
- error.isCanceled = isCanceled;
- error.killed = killed && !timedOut;
+ if ('GITHUB_ACTIONS' in env) {
+ return 1;
+ }
- return error;
-};
+ if (env.COLORTERM === 'truecolor') {
+ return 3;
+ }
-module.exports = makeError;
+ 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
+ }
+ }
-/***/ }),
-/* 155 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (/-256(color)?$/i.test(env.TERM)) {
+ return 2;
+ }
-"use strict";
-Object.defineProperty(exports,"__esModule",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__(122);
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
+ return 1;
+ }
-var _signals=__webpack_require__(156);
-var _realtime=__webpack_require__(158);
+ if ('COLORTERM' in env) {
+ return 1;
+ }
+ return min;
+}
+function getSupportLevel(stream) {
+ const level = supportsColor(stream, stream && stream.isTTY);
+ return translateLevel(level);
+}
-const getSignalsByName=function(){
-const signals=(0,_signals.getSignals)();
-return signals.reduce(getSignalByName,{});
+module.exports = {
+ supportsColor: getSupportLevel,
+ stdout: translateLevel(supportsColor(true, tty.isatty(1))),
+ stderr: translateLevel(supportsColor(true, tty.isatty(2)))
};
-const getSignalByName=function(
-signalByNameMemo,
-{name,number,description,supported,action,forced,standard})
-{
-return{
-...signalByNameMemo,
-[name]:{name,number,description,supported,action,forced,standard}};
-};
+/***/ }),
+/* 243 */
+/***/ (function(module, exports) {
-const signalsByName=getSignalsByName();exports.signalsByName=signalsByName;
+module.exports = require("os");
+/***/ }),
+/* 244 */
+/***/ (function(module, exports) {
+module.exports = require("tty");
+/***/ }),
+/* 245 */
+/***/ (function(module, exports, __webpack_require__) {
-const getSignalsByNumber=function(){
-const signals=(0,_signals.getSignals)();
-const length=_realtime.SIGRTMAX+1;
-const signalsA=Array.from({length},(value,number)=>
-getSignalByNumber(number,signals));
+"use strict";
-return Object.assign({},...signalsA);
+
+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);
};
-const getSignalByNumber=function(number,signals){
-const signal=findSignalByNumber(number,signals);
-if(signal===undefined){
-return{};
-}
+/***/ }),
+/* 246 */
+/***/ (function(module, exports, __webpack_require__) {
-const{name,description,supported,action,forced,standard}=signal;
-return{
-[number]:{
-name,
-number,
-description,
-supported,
-action,
-forced,
-standard}};
+"use strict";
-};
+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);
+ returnValue += string.substr(endIndex);
+ return returnValue;
+};
-const findSignalByNumber=function(number,signals){
-const signal=signals.find(({name})=>_os.constants.signals[name]===number);
+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);
-if(signal!==undefined){
-return signal;
-}
+ returnValue += string.substr(endIndex);
+ return returnValue;
+};
-return signals.find(signalA=>signalA.number===number);
+module.exports = {
+ stringReplaceAll,
+ stringEncaseCRLFWithFirstIndex
};
-const signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumber;
-//# sourceMappingURL=main.js.map
/***/ }),
-/* 156 */
+/* 247 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-Object.defineProperty(exports,"__esModule",{value:true});exports.getSignals=void 0;var _os=__webpack_require__(122);
-var _core=__webpack_require__(157);
-var _realtime=__webpack_require__(158);
+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] === '{';
-const getSignals=function(){
-const realtimeSignals=(0,_realtime.getRealtimeSignals)();
-const signals=[..._core.SIGNALS,...realtimeSignals].map(normalizeSignal);
-return signals;
-};exports.getSignals=getSignals;
+ 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 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;
+}
+function parseStyle(style) {
+ STYLE_REGEX.lastIndex = 0;
-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
+ const results = [];
+ let matches;
-/***/ }),
-/* 157 */
-/***/ (function(module, exports, __webpack_require__) {
+ while ((matches = STYLE_REGEX.exec(style)) !== null) {
+ const name = matches[1];
-"use strict";
-Object.defineProperty(exports,"__esModule",{value:true});exports.SIGNALS=void 0;
+ if (matches[2]) {
+ const args = parseArguments(name, matches[2]);
+ results.push([name].concat(args));
+ } else {
+ results.push([name]);
+ }
+ }
-const SIGNALS=[
-{
-name:"SIGHUP",
-number:1,
-action:"terminate",
-description:"Terminal closed",
-standard:"posix"},
+ return results;
+}
-{
-name:"SIGINT",
-number:2,
-action:"terminate",
-description:"User interruption with CTRL-C",
-standard:"ansi"},
+function buildStyle(chalk, styles) {
+ const enabled = {};
-{
-name:"SIGQUIT",
-number:3,
-action:"core",
-description:"User interruption with CTRL-\\",
-standard:"posix"},
+ for (const layer of styles) {
+ for (const style of layer.styles) {
+ enabled[style[0]] = layer.inverse ? null : style.slice(1);
+ }
+ }
-{
-name:"SIGILL",
-number:4,
-action:"core",
-description:"Invalid machine instruction",
-standard:"ansi"},
+ let current = chalk;
+ for (const [styleName, styles] of Object.entries(enabled)) {
+ if (!Array.isArray(styles)) {
+ continue;
+ }
-{
-name:"SIGTRAP",
-number:5,
-action:"core",
-description:"Debugger breakpoint",
-standard:"posix"},
+ if (!(styleName in current)) {
+ throw new Error(`Unknown Chalk style: ${styleName}`);
+ }
-{
-name:"SIGABRT",
-number:6,
-action:"core",
-description:"Aborted",
-standard:"ansi"},
+ current = styles.length > 0 ? current[styleName](...styles) : current[styleName];
+ }
-{
-name:"SIGIOT",
-number:6,
-action:"core",
-description:"Aborted",
-standard:"bsd"},
+ return current;
+}
-{
-name:"SIGBUS",
-number:7,
-action:"core",
-description:
-"Bus error due to misaligned, non-existing address or paging error",
-standard:"bsd"},
+module.exports = (chalk, temporary) => {
+ const styles = [];
+ const chunks = [];
+ let chunk = [];
-{
-name:"SIGEMT",
-number:7,
-action:"terminate",
-description:"Command should be emulated but is not implemented",
-standard:"other"},
+ // 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');
+ }
-{
-name:"SIGFPE",
-number:8,
-action:"core",
-description:"Floating point arithmetic error",
-standard:"ansi"},
+ chunks.push(buildStyle(chalk, styles)(chunk.join('')));
+ chunk = [];
+ styles.pop();
+ } else {
+ chunk.push(character);
+ }
+ });
-{
-name:"SIGKILL",
-number:9,
-action:"terminate",
-description:"Forced termination",
-standard:"posix",
-forced:true},
+ chunks.push(chunk.join(''));
-{
-name:"SIGUSR1",
-number:10,
-action:"terminate",
-description:"Application-specific signal",
-standard:"posix"},
+ if (styles.length > 0) {
+ const errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`;
+ throw new Error(errMessage);
+ }
-{
-name:"SIGSEGV",
-number:11,
-action:"core",
-description:"Segmentation fault",
-standard:"ansi"},
+ return chunks.join('');
+};
-{
-name:"SIGUSR2",
-number:12,
-action:"terminate",
-description:"Application-specific signal",
-standard:"posix"},
-{
-name:"SIGPIPE",
-number:13,
-action:"terminate",
-description:"Broken pipe or socket",
-standard:"posix"},
+/***/ }),
+/* 248 */
+/***/ (function(module, exports, __webpack_require__) {
-{
-name:"SIGALRM",
-number:14,
-action:"terminate",
-description:"Timeout or timer",
-standard:"posix"},
+"use strict";
-{
-name:"SIGTERM",
-number:15,
-action:"terminate",
-description:"Termination",
-standard:"ansi"},
-{
-name:"SIGSTKFLT",
-number:16,
-action:"terminate",
-description:"Stack is empty or overflowed",
-standard:"other"},
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.LOG_LEVEL_FLAGS = exports.DEFAULT_LOG_LEVEL = void 0;
+exports.getLogLevelFlagsHelp = getLogLevelFlagsHelp;
+exports.parseLogLevel = parseLogLevel;
+exports.pickLevelFromFlags = pickLevelFromFlags;
-{
-name:"SIGCHLD",
-number:17,
-action:"ignore",
-description:"Child process terminated, paused or unpaused",
-standard:"posix"},
+/*
+ * 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.
+ */
+const LEVELS = ['silent', 'error', 'warning', 'success', 'info', 'debug', 'verbose'];
+const DEFAULT_LOG_LEVEL = 'info';
+exports.DEFAULT_LOG_LEVEL = DEFAULT_LOG_LEVEL;
-{
-name:"SIGCLD",
-number:17,
-action:"ignore",
-description:"Child process terminated, paused or unpaused",
-standard:"other"},
+function pickLevelFromFlags(flags, options = {}) {
+ if (flags.verbose) return 'verbose';
+ if (flags.debug) return 'debug';
+ if (flags.info) return 'info';
+ if (flags.quiet) return 'error';
+ if (flags.silent) return 'silent';
+ return options.default || DEFAULT_LOG_LEVEL;
+}
-{
-name:"SIGCONT",
-number:18,
-action:"unpause",
-description:"Unpaused",
-standard:"posix",
-forced:true},
+const LOG_LEVEL_FLAGS = [{
+ name: 'verbose',
+ help: '--verbose, -v Log verbosely'
+}, {
+ name: 'info',
+ help: "--info Don't log debug messages"
+}, {
+ name: 'debug',
+ help: '--debug Log debug messages (less than verbose)'
+}, {
+ name: 'quiet',
+ help: '--quiet Only log errors'
+}, {
+ name: 'silent',
+ help: "--silent Don't log anything"
+}];
+exports.LOG_LEVEL_FLAGS = LOG_LEVEL_FLAGS;
-{
-name:"SIGSTOP",
-number:19,
-action:"pause",
-description:"Paused",
-standard:"posix",
-forced:true},
+function getLogLevelFlagsHelp(defaultLogLevel = DEFAULT_LOG_LEVEL) {
+ return LOG_LEVEL_FLAGS.filter(({
+ name
+ }) => name !== defaultLogLevel).map(({
+ help
+ }) => help).join('\n');
+}
-{
-name:"SIGTSTP",
-number:20,
-action:"pause",
-description:"Paused using CTRL-Z or \"suspend\"",
-standard:"posix"},
+function parseLogLevel(name) {
+ const i = LEVELS.indexOf(name);
-{
-name:"SIGTTIN",
-number:21,
-action:"pause",
-description:"Background process cannot read terminal input",
-standard:"posix"},
+ if (i === -1) {
+ const msg = `Invalid log level "${name}" ` + `(expected one of ${LEVELS.join(',')})`;
+ throw new Error(msg);
+ }
-{
-name:"SIGBREAK",
-number:21,
-action:"terminate",
-description:"User interruption with CTRL-BREAK",
-standard:"other"},
+ const flags = {};
+ LEVELS.forEach((level, levelI) => {
+ flags[level] = levelI <= i;
+ });
+ return {
+ name,
+ flags: flags
+ };
+}
-{
-name:"SIGTTOU",
-number:22,
-action:"pause",
-description:"Background process cannot write to terminal output",
-standard:"posix"},
+/***/ }),
+/* 249 */
+/***/ (function(module, exports, __webpack_require__) {
-{
-name:"SIGURG",
-number:23,
-action:"ignore",
-description:"Socket received out-of-band data",
-standard:"bsd"},
+"use strict";
-{
-name:"SIGXCPU",
-number:24,
-action:"core",
-description:"Process timed out",
-standard:"bsd"},
-{
-name:"SIGXFSZ",
-number:25,
-action:"core",
-description:"File too big",
-standard:"bsd"},
+var _interopRequireDefault = __webpack_require__(7);
-{
-name:"SIGVTALRM",
-number:26,
-action:"terminate",
-description:"Timeout or timer",
-standard:"bsd"},
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ToolingLogCollectingWriter = void 0;
-{
-name:"SIGPROF",
-number:27,
-action:"terminate",
-description:"Timeout or timer",
-standard:"bsd"},
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(8));
-{
-name:"SIGWINCH",
-number:28,
-action:"ignore",
-description:"Terminal window size changed",
-standard:"bsd"},
+var _tooling_log_text_writer = __webpack_require__(233);
-{
-name:"SIGIO",
-number:29,
-action:"terminate",
-description:"I/O is available",
-standard:"other"},
+/*
+ * 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.
+ */
+class ToolingLogCollectingWriter extends _tooling_log_text_writer.ToolingLogTextWriter {
+ constructor(level = 'verbose') {
+ super({
+ level,
+ writeTo: {
+ write: msg => {
+ // trim trailing new line
+ this.messages.push(msg.slice(0, -1));
+ }
+ }
+ });
+ (0, _defineProperty2.default)(this, "messages", []);
+ }
+ /**
+ * Called by ToolingLog, extends messages with the source if message includes one.
+ */
-{
-name:"SIGPOLL",
-number:29,
-action:"terminate",
-description:"Watched event",
-standard:"other"},
-{
-name:"SIGINFO",
-number:29,
-action:"ignore",
-description:"Request for process information",
-standard:"other"},
+ write(msg) {
+ if (msg.source) {
+ return super.write({ ...msg,
+ args: [`source[${msg.source}]`, ...msg.args]
+ });
+ }
-{
-name:"SIGPWR",
-number:30,
-action:"terminate",
-description:"Device running out of power",
-standard:"systemv"},
+ return super.write(msg);
+ }
-{
-name:"SIGSYS",
-number:31,
-action:"core",
-description:"Invalid system call",
-standard:"other"},
+}
-{
-name:"SIGUNUSED",
-number:31,
-action:"terminate",
-description:"Invalid system call",
-standard:"other"}];exports.SIGNALS=SIGNALS;
-//# sourceMappingURL=core.js.map
+exports.ToolingLogCollectingWriter = ToolingLogCollectingWriter;
/***/ }),
-/* 158 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 250 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"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;
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commands", function() { return commands; });
+/* harmony import */ var _bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(251);
+/* harmony import */ var _build__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(556);
+/* harmony import */ var _clean__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(557);
+/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(581);
+/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(582);
+/* harmony import */ var _watch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(584);
+/*
+ * 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.
+ */
-const getRealtimeSignal=function(value,index){
-return{
-name:`SIGRT${index+1}`,
-number:SIGRTMIN+index,
-action:"terminate",
-description:"Application-specific signal (realtime)",
-standard:"posix"};
-};
-const SIGRTMIN=34;
-const SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX;
-//# sourceMappingURL=realtime.js.map
-/***/ }),
-/* 159 */
-/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-const aliases = ['stdin', 'stdout', 'stderr'];
+const commands = {
+ bootstrap: _bootstrap__WEBPACK_IMPORTED_MODULE_0__["BootstrapCommand"],
+ build: _build__WEBPACK_IMPORTED_MODULE_1__["BuildCommand"],
+ clean: _clean__WEBPACK_IMPORTED_MODULE_2__["CleanCommand"],
+ reset: _reset__WEBPACK_IMPORTED_MODULE_3__["ResetCommand"],
+ run: _run__WEBPACK_IMPORTED_MODULE_4__["RunCommand"],
+ watch: _watch__WEBPACK_IMPORTED_MODULE_5__["WatchCommand"]
+};
-const hasAlias = opts => aliases.some(alias => opts[alias] !== undefined);
+/***/ }),
+/* 251 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-const normalizeStdio = opts => {
- if (!opts) {
- return;
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BootstrapCommand", function() { return BootstrapCommand; });
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
+/* 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__(252);
+/* 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 _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(341);
+/* harmony import */ var _utils_child_process__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(342);
+/* harmony import */ var _utils_link_project_executables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(351);
+/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(461);
+/* harmony import */ var _utils_yarn_lock__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(530);
+/* harmony import */ var _utils_sort_package_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(533);
+/* harmony import */ var _utils_validate_dependencies__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(542);
+/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(544);
+/* harmony import */ var _utils_bazel_setup_remote_cache__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(555);
+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; }
- const {stdio} = opts;
+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; }
- if (stdio === undefined) {
- return aliases.map(alias => opts[alias]);
- }
+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; }
- if (hasAlias(opts)) {
- throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map(alias => `\`${alias}\``).join(', ')}`);
- }
+/*
+ * 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.
+ */
- if (typeof stdio === 'string') {
- return stdio;
- }
- if (!Array.isArray(stdio)) {
- throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``);
- }
- const length = Math.max(stdio.length, aliases.length);
- return Array.from({length}, (value, index) => stdio[index]);
-};
-module.exports = normalizeStdio;
-// `ipc` is pushed unless it is already present
-module.exports.node = opts => {
- const stdio = normalizeStdio(opts);
- if (stdio === 'ipc') {
- return 'ipc';
- }
- if (stdio === undefined || typeof stdio === 'string') {
- return [stdio, stdio, stdio, 'ipc'];
- }
- if (stdio.includes('ipc')) {
- return stdio;
- }
- return [...stdio, 'ipc'];
-};
-/***/ }),
-/* 160 */
-/***/ (function(module, exports, __webpack_require__) {
+const BootstrapCommand = {
+ description: 'Install dependencies and crosslink projects',
+ name: 'bootstrap',
+ reportTiming: {
+ group: 'scripts/kbn bootstrap',
+ id: 'total'
+ },
-"use strict";
+ async run(projects, projectGraph, {
+ options,
+ kbn,
+ rootPath
+ }) {
+ var _projects$get;
-const os = __webpack_require__(122);
-const onExit = __webpack_require__(161);
+ const nonBazelProjectsOnly = await Object(_utils_projects__WEBPACK_IMPORTED_MODULE_5__["getNonBazelProjectsOnly"])(projects);
+ const batchedNonBazelProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_5__["topologicallyBatchProjects"])(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"]);
+ const timings = [];
-const DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;
+ const time = async (id, body) => {
+ const start = Date.now();
-// 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;
-};
+ try {
+ return await body();
+ } finally {
+ timings.push({
+ id,
+ ms: Date.now() - start
+ });
+ }
+ }; // Force install is set in case a flag is passed into yarn kbn bootstrap
-const setKillTimeout = (kill, signal, options, killResult) => {
- if (!shouldForceKill(signal, options, killResult)) {
- return;
- }
- const timeout = getForceKillAfterTimeout(options);
- const t = setTimeout(() => {
- kill('SIGKILL');
- }, timeout);
+ const forceInstall = !!options && options['force-install'] === true; // Install bazel machinery tools if needed
- // 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();
- }
-};
+ await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_9__["installBazelTools"])(rootPath); // Setup remote cache settings in .bazelrc.cache if needed
-const shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => {
- return isSigterm(signal) && forceKillAfterTimeout !== false && killResult;
-};
+ await Object(_utils_bazel_setup_remote_cache__WEBPACK_IMPORTED_MODULE_10__["setupRemoteCache"])(rootPath); // Bootstrap process for Bazel packages
+ // Bazel is now managing dependencies so yarn install
+ // will happen as part of this
+ //
+ // NOTE: Bazel projects will be introduced incrementally
+ // And should begin from the ones with none dependencies forward.
+ // That way non bazel projects could depend on bazel projects but not the other way around
+ // That is only intended during the migration process while non Bazel projects are not removed at all.
+ //
-const isSigterm = signal => {
- return signal === os.constants.signals.SIGTERM ||
- (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');
-};
+ if (forceInstall) {
+ await time('force install dependencies', async () => {
+ await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_9__["removeYarnIntegrityFileIfExists"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(kibanaProjectPath, 'node_modules'));
+ await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_9__["runBazel"])(['clean', '--expunge']);
+ await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_9__["runBazel"])(['run', '@yarn//: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'
+ }
+ });
+ });
+ } // build packages
-const getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {
- if (forceKillAfterTimeout === true) {
- return DEFAULT_FORCE_KILL_TIMEOUT;
- }
- if (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {
- throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`);
- }
+ await time('build packages', async () => {
+ await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_9__["runBazel"])(['build', '//packages:build', '--show_result=1'], runOffline);
+ }); // Install monorepo npm dependencies outside of the Bazel managed ones
- return forceKillAfterTimeout;
-};
+ for (const batch of batchedNonBazelProjects) {
+ for (const project of batch) {
+ const isExternalPlugin = project.path.includes(`${kibanaProjectPath}${path__WEBPACK_IMPORTED_MODULE_0__["sep"]}plugins`);
-// `childProcess.cancel()`
-const spawnedCancel = (spawned, context) => {
- const killResult = spawned.kill();
+ if (!project.hasDependencies()) {
+ continue;
+ }
- if (killResult) {
- context.isCanceled = true;
- }
-};
+ if (isExternalPlugin) {
+ await project.installDependencies();
+ continue;
+ }
-const timeoutKill = (spawned, signal, reject) => {
- spawned.kill(signal);
- reject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));
-};
+ 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.`);
+ }
+ }
+ }
-// `timeout` option handling
-const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {
- if (timeout === 0 || timeout === undefined) {
- return spawnedPromise;
- }
+ await time('sort package json', async () => {
+ await Object(_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_7__["sortPackageJson"])(kbn);
+ });
+ const yarnLock = await time('read yarn.lock', async () => await Object(_utils_yarn_lock__WEBPACK_IMPORTED_MODULE_6__["readYarnLock"])(kbn));
- if (!Number.isFinite(timeout) || timeout < 0) {
- throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${timeout}\` (${typeof timeout})`);
- }
+ if (options.validate) {
+ await time('validate dependencies', async () => {
+ await Object(_utils_validate_dependencies__WEBPACK_IMPORTED_MODULE_8__["validateDependencies"])(kbn, yarnLock);
+ });
+ } // Assure all kbn projects with bin defined scripts
+ // copy those scripts into the top level node_modules folder
+ //
+ // NOTE: We don't probably need this anymore, is actually not being used
- let timeoutId;
- const timeoutPromise = new Promise((resolve, reject) => {
- timeoutId = setTimeout(() => {
- timeoutKill(spawned, killSignal, reject);
- }, timeout);
- });
- const safeSpawnedPromise = spawnedPromise.finally(() => {
- clearTimeout(timeoutId);
- });
+ await time('link project executables', async () => {
+ await Object(_utils_link_project_executables__WEBPACK_IMPORTED_MODULE_4__["linkProjectExecutables"])(projects, projectGraph);
+ });
+ await time('update vscode config', async () => {
+ // Update vscode settings
+ await Object(_utils_child_process__WEBPACK_IMPORTED_MODULE_3__["spawnStreaming"])(process.execPath, ['scripts/update_vscode_config'], {
+ cwd: kbn.getAbsolute(),
+ env: process.env
+ }, {
+ prefix: '[vscode]',
+ debug: false
+ });
+ }); // send timings
+
+ await reporter.timings({
+ upstreamBranch: kbn.kibanaProject.json.branch,
+ // prevent loading @kbn/utils by passing null
+ kibanaUuid: kbn.getUuid() || null,
+ timings: timings.map(t => _objectSpread({
+ group: 'scripts/kbn bootstrap'
+ }, t))
+ });
+ }
- return Promise.race([timeoutPromise, safeSpawnedPromise]);
};
-// `cleanup` option handling
-const setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {
- if (!cleanup || detached) {
- return timedPromise;
- }
+/***/ }),
+/* 252 */
+/***/ (function(module, exports, __webpack_require__) {
- const removeExitHandler = onExit(() => {
- spawned.kill();
- });
+"use strict";
- return timedPromise.finally(() => {
- removeExitHandler();
- });
-};
-module.exports = {
- spawnedKill,
- spawnedCancel,
- setupTimeout,
- setExitHandler
-};
+var _interopRequireDefault = __webpack_require__(7);
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.CiStatsReporter = void 0;
-/***/ }),
-/* 161 */
-/***/ (function(module, exports, __webpack_require__) {
+var _util = __webpack_require__(234);
-// 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
+var _os = _interopRequireDefault(__webpack_require__(243));
-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'
-}
+var _fs = _interopRequireDefault(__webpack_require__(253));
-// 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__(162)
- var signals = __webpack_require__(163)
- var isWin = /^win/i.test(process.platform)
+var _path = _interopRequireDefault(__webpack_require__(4));
- var EE = __webpack_require__(164)
- /* istanbul ignore if */
- if (typeof EE !== 'function') {
- EE = EE.EventEmitter
- }
+var _crypto = _interopRequireDefault(__webpack_require__(254));
- 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 = {}
- }
+var _execa = _interopRequireDefault(__webpack_require__(255));
- // 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
- }
+var _axios = _interopRequireDefault(__webpack_require__(298));
- 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')
+var _http = _interopRequireDefault(__webpack_require__(320));
- if (loaded === false) {
- load()
- }
+var _ci_stats_config = __webpack_require__(339);
- var ev = 'exit'
- if (opts && opts.alwaysLast) {
- ev = 'afterexit'
- }
+/*
+ * 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.
+ */
+// @ts-expect-error not "public", but necessary to prevent Jest shimming from breaking things
+const BASE_URL = 'https://ci-stats.kibana.dev';
+/** A ci-stats metric record */
- var remove = function () {
- emitter.removeListener(ev, cb)
- if (emitter.listeners('exit').length === 0 &&
- emitter.listeners('afterexit').length === 0) {
- unload()
- }
- }
- emitter.on(ev, cb)
+/** Object that helps report data to the ci-stats service */
+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 remove
+ constructor(config, log) {
+ this.config = config;
+ this.log = log;
}
+ /**
+ * Determine if CI_STATS is explicitly disabled by the environment. To determine
+ * if the CiStatsReporter has enough information in the environment to send metrics
+ * for builds use #hasBuildConfig().
+ */
- 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
+ isEnabled() {
+ return process.env.CI_STATS_DISABLED !== 'true';
}
- module.exports.unload = unload
+ /**
+ * Determines if the CiStatsReporter is disabled by the environment, or properly
+ * configured and able to send stats
+ */
- 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)
- }
- }
- })
+ hasBuildConfig() {
+ var _this$config, _this$config2;
- module.exports.signals = function () {
- return signals
+ return this.isEnabled() && !!((_this$config = this.config) !== null && _this$config !== void 0 && _this$config.apiToken) && !!((_this$config2 = this.config) !== null && _this$config2 !== void 0 && _this$config2.buildId);
}
+ /**
+ * Report timings data to the ci-stats service. If running in CI then the reporter
+ * will include the buildId in the report with the access token, otherwise the timings
+ * data will be recorded as anonymous timing data.
+ */
- var loaded = false
- var load = function load () {
- if (loaded || !processOk(global.process)) {
- return
+ async timings(options) {
+ var _this$config3, _options$upstreamBran, _Os$cpus, _Os$cpus$, _Os$cpus$2;
+
+ if (!this.isEnabled()) {
+ 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
+ const buildId = (_this$config3 = this.config) === null || _this$config3 === void 0 ? void 0 : _this$config3.buildId;
+ const timings = options.timings;
+ const upstreamBranch = (_options$upstreamBran = options.upstreamBranch) !== null && _options$upstreamBran !== void 0 ? _options$upstreamBran : this.getUpstreamBranch();
+ const kibanaUuid = options.kibanaUuid === undefined ? this.getKibanaUuid() : options.kibanaUuid;
+ let email;
+ let branch;
- signals = signals.filter(function (sig) {
- try {
- process.on(sig, sigListeners[sig])
- return true
- } catch (er) {
- return false
- }
- })
+ try {
+ const {
+ stdout
+ } = await (0, _execa.default)('git', ['config', 'user.email']);
+ email = stdout;
+ } catch (e) {
+ this.log.debug(e.message);
+ }
- process.emit = processEmit
- process.reallyExit = processReallyExit
+ try {
+ const {
+ stdout
+ } = await (0, _execa.default)('git', ['rev-parse', '--abbrev-ref', 'HEAD']);
+ branch = stdout;
+ } catch (e) {
+ this.log.debug(e.message);
+ }
+
+ const memUsage = process.memoryUsage();
+ const isElasticCommitter = email && email.endsWith('@elastic.co') ? true : false;
+ const defaultMeta = {
+ kibanaUuid,
+ isElasticCommitter,
+ committerHash: email ? _crypto.default.createHash('sha256').update(email).digest('hex').substring(0, 20) : undefined,
+ email: isElasticCommitter ? email : undefined,
+ branch: isElasticCommitter ? branch : undefined,
+ cpuCount: (_Os$cpus = _os.default.cpus()) === null || _Os$cpus === void 0 ? void 0 : _Os$cpus.length,
+ cpuModel: (_Os$cpus$ = _os.default.cpus()[0]) === null || _Os$cpus$ === void 0 ? void 0 : _Os$cpus$.model,
+ cpuSpeed: (_Os$cpus$2 = _os.default.cpus()[0]) === null || _Os$cpus$2 === void 0 ? void 0 : _Os$cpus$2.speed,
+ freeMem: _os.default.freemem(),
+ memoryUsageRss: memUsage.rss,
+ memoryUsageHeapTotal: memUsage.heapTotal,
+ memoryUsageHeapUsed: memUsage.heapUsed,
+ memoryUsageExternal: memUsage.external,
+ memoryUsageArrayBuffers: memUsage.arrayBuffers,
+ nestedTiming: process.env.CI_STATS_NESTED_TIMING ? true : false,
+ osArch: _os.default.arch(),
+ osPlatform: _os.default.platform(),
+ osRelease: _os.default.release(),
+ totalMem: _os.default.totalmem()
+ };
+ this.log.debug('CIStatsReporter committerHash: %s', defaultMeta.committerHash);
+ return !!(await this.req({
+ auth: !!buildId,
+ path: '/v1/timings',
+ body: {
+ buildId,
+ upstreamBranch,
+ defaultMeta,
+ timings
+ },
+ bodyDesc: timings.length === 1 ? `${timings.length} timing` : `${timings.length} timings`
+ }));
}
- module.exports.load = load
+ /**
+ * Report metrics data to the ci-stats service. If running outside of CI this method
+ * does nothing as metrics can only be reported when associated with a specific CI build.
+ */
- var originalProcessReallyExit = process.reallyExit
- var processReallyExit = function processReallyExit (code) {
- /* istanbul ignore if */
- if (!processOk(global.process)) {
- return
+
+ async metrics(metrics, options) {
+ var _this$config4;
+
+ if (!this.hasBuildConfig()) {
+ 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)
+
+ const buildId = (_this$config4 = this.config) === null || _this$config4 === void 0 ? void 0 : _this$config4.buildId;
+
+ if (!buildId) {
+ throw new Error(`metrics can't be reported without a buildId`);
+ }
+
+ return !!(await this.req({
+ auth: true,
+ path: '/v1/metrics',
+ body: {
+ buildId,
+ defaultMeta: options === null || options === void 0 ? void 0 : options.defaultMeta,
+ metrics
+ },
+ bodyDesc: `metrics: ${metrics.map(({
+ group,
+ id,
+ value
+ }) => `[${group}/${id}=${value}]`).join(' ')}`
+ }));
}
+ /**
+ * Send test reports to ci-stats
+ */
- 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
+
+ async reportTests({
+ group,
+ testRuns
+ }) {
+ var _this$config5, _this$config6, _this$config7;
+
+ if (!((_this$config5 = this.config) !== null && _this$config5 !== void 0 && _this$config5.buildId) || !((_this$config6 = this.config) !== null && _this$config6 !== void 0 && _this$config6.apiToken)) {
+ throw new Error('unable to report tests unless buildId is configured and auth config available');
+ }
+
+ return await this.req({
+ auth: true,
+ path: '/v1/test_group',
+ query: {
+ buildId: (_this$config7 = this.config) === null || _this$config7 === void 0 ? void 0 : _this$config7.buildId
+ },
+ bodyDesc: `[${group.name}/${group.type}] test groups with ${testRuns.length} tests`,
+ body: [JSON.stringify({
+ group
+ }), ...testRuns.map(testRun => JSON.stringify({
+ testRun
+ }))].join('\n')
+ });
+ }
+ /**
+ * In order to allow this code to run before @kbn/utils is built, @kbn/pm will pass
+ * in the upstreamBranch when calling the timings() method. Outside of @kbn/pm
+ * we rely on @kbn/utils to find the package.json file.
+ */
+
+
+ getUpstreamBranch() {
+ // specify the module id in a way that will keep webpack from bundling extra code into @kbn/pm
+ const hideFromWebpack = ['@', 'kbn/utils']; // eslint-disable-next-line @typescript-eslint/no-var-requires
+
+ const {
+ kibanaPackageJson
+ } = __webpack_require__(340)(hideFromWebpack.join(''));
+
+ return kibanaPackageJson.branch;
+ }
+ /**
+ * In order to allow this code to run before @kbn/utils is built, @kbn/pm will pass
+ * in the kibanaUuid when calling the timings() method. Outside of @kbn/pm
+ * we rely on @kbn/utils to find the repo root.
+ */
+
+
+ getKibanaUuid() {
+ // specify the module id in a way that will keep webpack from bundling extra code into @kbn/pm
+ const hideFromWebpack = ['@', 'kbn/utils']; // eslint-disable-next-line @typescript-eslint/no-var-requires
+
+ const {
+ REPO_ROOT
+ } = __webpack_require__(340)(hideFromWebpack.join(''));
+
+ try {
+ return _fs.default.readFileSync(_path.default.resolve(REPO_ROOT, 'data/uuid'), 'utf-8').trim();
+ } catch (error) {
+ if (error.code === 'ENOENT') {
+ return undefined;
}
- 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)
+
+ throw error;
}
}
-}
+ async req({
+ auth,
+ body,
+ bodyDesc,
+ path,
+ query
+ }) {
+ let attempt = 0;
+ const maxAttempts = 5;
+ let headers;
-/***/ }),
-/* 162 */
-/***/ (function(module, exports) {
+ if (auth && this.config) {
+ headers = {
+ Authorization: `token ${this.config.apiToken}`
+ };
+ } else if (auth) {
+ throw new Error('this.req() shouldnt be called with auth=true if this.config is not defined');
+ }
-module.exports = require("assert");
+ while (true) {
+ attempt += 1;
-/***/ }),
-/* 163 */
-/***/ (function(module, exports) {
+ try {
+ const resp = await _axios.default.request({
+ method: 'POST',
+ url: path,
+ baseURL: BASE_URL,
+ headers,
+ data: body,
+ params: query,
+ adapter: _http.default,
+ // if it can be serialized into a string, send it
+ maxBodyLength: Infinity,
+ maxContentLength: Infinity
+ });
+ return resp.data;
+ } catch (error) {
+ var _error$response;
-// 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 (!(error !== null && error !== void 0 && error.request)) {
+ // not an axios error, must be a usage error that we should notify user about
+ throw error;
+ }
-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 (error !== null && error !== void 0 && error.response && error.response.status < 500) {
+ // error response from service was received so warn the user and move on
+ this.log.warning(`error reporting ${bodyDesc} [status=${error.response.status}] [resp=${(0, _util.inspect)(error.response.data)}]`);
+ return;
+ }
+
+ if (attempt === maxAttempts) {
+ this.log.warning(`unable to report ${bodyDesc}, failed to reach ci-stats service too many times`);
+ return;
+ } // we failed to reach the backend and we have remaining attempts, lets retry after a short delay
+
+
+ const reason = error !== null && error !== void 0 && (_error$response = error.response) !== null && _error$response !== void 0 && _error$response.status ? `${error.response.status} response` : 'no response';
+ const seconds = attempt * 10;
+ this.log.warning(`failed to reach ci-stats service, retrying in ${seconds} seconds, [reason=${reason}], [error=${error.message}]`);
+ await new Promise(resolve => setTimeout(resolve, seconds * 1000));
+ }
+ }
+ }
-if (process.platform === 'linux') {
- module.exports.push(
- 'SIGIO',
- 'SIGPOLL',
- 'SIGPWR',
- 'SIGSTKFLT',
- 'SIGUNUSED'
- )
}
+exports.CiStatsReporter = CiStatsReporter;
/***/ }),
-/* 164 */
+/* 253 */
/***/ (function(module, exports) {
-module.exports = require("events");
+module.exports = require("fs");
/***/ }),
-/* 165 */
+/* 254 */
+/***/ (function(module, exports) {
+
+module.exports = require("crypto");
+
+/***/ }),
+/* 255 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const isStream = __webpack_require__(166);
-const getStream = __webpack_require__(167);
-const mergeStream = __webpack_require__(174);
+const path = __webpack_require__(4);
+const childProcess = __webpack_require__(256);
+const crossSpawn = __webpack_require__(257);
+const stripFinalNewline = __webpack_require__(270);
+const npmRunPath = __webpack_require__(271);
+const onetime = __webpack_require__(273);
+const makeError = __webpack_require__(275);
+const normalizeStdio = __webpack_require__(280);
+const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__(281);
+const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__(286);
+const {mergePromise, getSpawnedPromise} = __webpack_require__(296);
+const {joinCommand, parseCommand} = __webpack_require__(297);
-// `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;
- }
+const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;
- if (isStream(input)) {
- input.pipe(spawned.stdin);
- } else {
- spawned.stdin.end(input);
- }
-};
+const getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {
+ const env = extendEnv ? {...process.env, ...envOption} : envOption;
-// `all` interleaves `stdout` and `stderr`
-const makeAllStream = (spawned, {all}) => {
- if (!all || (!spawned.stdout && !spawned.stderr)) {
- return;
+ if (preferLocal) {
+ return npmRunPath.env({env, cwd: localDir, execPath});
}
- const mixed = mergeStream();
-
- if (spawned.stdout) {
- mixed.add(spawned.stdout);
- }
+ return env;
+};
- if (spawned.stderr) {
- mixed.add(spawned.stderr);
- }
+const handleArguments = (file, args, options = {}) => {
+ const parsed = crossSpawn._parse(file, args, options);
+ file = parsed.command;
+ args = parsed.args;
+ options = parsed.options;
- return mixed;
-};
+ 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
+ };
-// On failure, `result.stdout|stderr|all` should contain the currently buffered stream
-const getBufferedData = async (stream, streamPromise) => {
- if (!stream) {
- return;
- }
+ options.env = getEnv(options);
- stream.destroy();
+ options.stdio = normalizeStdio(options);
- try {
- return await streamPromise;
- } catch (error) {
- return error.bufferedData;
+ if (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {
+ // #116
+ args.unshift('/q');
}
+
+ return {file, args, options, parsed};
};
-const getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {
- if (!stream || !buffer) {
- return;
+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 (encoding) {
- return getStream(stream, {encoding, maxBuffer});
+ if (options.stripFinalNewline) {
+ return stripFinalNewline(value);
}
- return getStream.buffer(stream, {maxBuffer});
+ return value;
};
-// 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});
+const execa = (file, args, options) => {
+ const parsed = handleArguments(file, args, options);
+ const command = joinCommand(file, args);
+ let spawned;
try {
- return await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);
+ spawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);
} catch (error) {
- return Promise.all([
- {error, signal: error.signal, timedOut: error.timedOut},
- getBufferedData(stdout, stdoutPromise),
- getBufferedData(stderr, stderrPromise),
- getBufferedData(all, allPromise)
- ]);
+ // 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 validateInputSync = ({input}) => {
- if (isStream(input)) {
- throw new TypeError('The `input` option cannot be a stream in sync mode');
- }
-};
+ const spawnedPromise = getSpawnedPromise(spawned);
+ const timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);
+ const processDone = setExitHandler(spawned, parsed.options, timedPromise);
-module.exports = {
- handleInput,
- makeAllStream,
- getSpawnedResult,
- validateInputSync
-};
+ 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);
-/***/ }),
-/* 166 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (error || exitCode !== 0 || signal !== null) {
+ const returnedError = makeError({
+ error,
+ exitCode,
+ signal,
+ stdout,
+ stderr,
+ all,
+ command,
+ parsed,
+ timedOut,
+ isCanceled: context.isCanceled,
+ killed: spawned.killed
+ });
-"use strict";
+ if (!parsed.options.reject) {
+ return returnedError;
+ }
+ throw returnedError;
+ }
-const isStream = stream =>
- stream !== null &&
- typeof stream === 'object' &&
- typeof stream.pipe === 'function';
+ return {
+ command,
+ exitCode: 0,
+ stdout,
+ stderr,
+ all,
+ failed: false,
+ timedOut: false,
+ isCanceled: false,
+ killed: false
+ };
+ };
-isStream.writable = stream =>
- isStream(stream) &&
- stream.writable !== false &&
- typeof stream._write === 'function' &&
- typeof stream._writableState === 'object';
+ const handlePromiseOnce = onetime(handlePromise);
-isStream.readable = stream =>
- isStream(stream) &&
- stream.readable !== false &&
- typeof stream._read === 'function' &&
- typeof stream._readableState === 'object';
+ crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed);
-isStream.duplex = stream =>
- isStream.writable(stream) &&
- isStream.readable(stream);
+ handleInput(spawned, parsed.options.input);
-isStream.transform = stream =>
- isStream.duplex(stream) &&
- typeof stream._transform === 'function' &&
- typeof stream._transformState === 'object';
+ spawned.all = makeAllStream(spawned, parsed.options);
-module.exports = isStream;
+ return mergePromise(spawned, handlePromiseOnce);
+};
+module.exports = execa;
-/***/ }),
-/* 167 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
+module.exports.sync = (file, args, options) => {
+ const parsed = handleArguments(file, args, options);
+ const command = joinCommand(file, args);
-const pump = __webpack_require__(168);
-const bufferStream = __webpack_require__(172);
+ validateInputSync(parsed.options);
-class MaxBufferError extends Error {
- constructor() {
- super('maxBuffer exceeded');
- this.name = 'MaxBufferError';
+ 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
+ });
}
-}
-async function getStream(inputStream, options) {
- if (!inputStream) {
- return Promise.reject(new Error('Expected a stream'));
+ 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;
+ }
+
+ throw error;
}
- options = {
- maxBuffer: Infinity,
- ...options
+ return {
+ command,
+ exitCode: 0,
+ stdout,
+ stderr,
+ failed: false,
+ timedOut: false,
+ isCanceled: false,
+ killed: false
};
+};
- const {maxBuffer} = options;
+module.exports.command = (command, options) => {
+ const [file, ...args] = parseCommand(command);
+ return execa(file, args, options);
+};
- let stream;
- await new Promise((resolve, reject) => {
- const rejectPromise = error => {
- if (error) { // A null check
- error.bufferedData = stream.getBufferedValue();
- }
+module.exports.commandSync = (command, options) => {
+ const [file, ...args] = parseCommand(command);
+ return execa.sync(file, args, options);
+};
- reject(error);
- };
+module.exports.node = (scriptPath, args, options = {}) => {
+ if (args && !Array.isArray(args) && typeof args === 'object') {
+ options = args;
+ args = [];
+ }
- stream = pump(inputStream, bufferStream(options), error => {
- if (error) {
- rejectPromise(error);
- return;
- }
+ const stdio = normalizeStdio.node(options);
- resolve();
- });
+ const {nodePath = process.execPath, nodeOptions = process.execArgv} = options;
- stream.on('data', () => {
- if (stream.getBufferedLength() > maxBuffer) {
- rejectPromise(new MaxBufferError());
- }
- });
- });
+ return execa(
+ nodePath,
+ [
+ ...nodeOptions,
+ scriptPath,
+ ...(Array.isArray(args) ? args : [])
+ ],
+ {
+ ...options,
+ stdin: undefined,
+ stdout: undefined,
+ stderr: undefined,
+ stdio,
+ shell: false
+ }
+ );
+};
- 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;
+/***/ }),
+/* 256 */
+/***/ (function(module, exports) {
+module.exports = require("child_process");
/***/ }),
-/* 168 */
+/* 257 */
/***/ (function(module, exports, __webpack_require__) {
-var once = __webpack_require__(169)
-var eos = __webpack_require__(171)
-var fs = __webpack_require__(132) // we only need fs to get the ReadStream and WriteStream prototypes
-
-var noop = function () {}
-var ancient = /^v?\.0/.test(process.version)
+"use strict";
-var isFn = function (fn) {
- return typeof fn === 'function'
-}
-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)
-}
+const cp = __webpack_require__(256);
+const parse = __webpack_require__(258);
+const enoent = __webpack_require__(269);
-var isRequest = function (stream) {
- return stream.setHeader && isFn(stream.abort)
-}
+function spawn(command, args, options) {
+ // Parse the arguments
+ const parsed = parse(command, args, options);
-var destroyer = function (stream, reading, writing, callback) {
- callback = once(callback)
+ // Spawn the child process
+ const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
- var closed = false
- stream.on('close', function () {
- closed = true
- })
+ // 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);
- eos(stream, {readable: reading, writable: writing}, function (err) {
- if (err) return callback(err)
- closed = true
- callback()
- })
+ return spawned;
+}
- var destroyed = false
- return function (err) {
- if (closed) return
- if (destroyed) return
- destroyed = true
+function spawnSync(command, args, options) {
+ // Parse the arguments
+ const parsed = parse(command, args, options);
- 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
+ // Spawn the child process
+ const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
- if (isFn(stream.destroy)) return stream.destroy()
+ // 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);
- callback(err || new Error('stream was destroyed'))
- }
+ return result;
}
-var call = function (fn) {
- fn()
-}
+module.exports = spawn;
+module.exports.spawn = spawn;
+module.exports.sync = spawnSync;
-var pipe = function (from, to) {
- return from.pipe(to)
-}
+module.exports._parse = parse;
+module.exports._enoent = enoent;
-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')
+/***/ }),
+/* 258 */
+/***/ (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)
-}
-module.exports = pump
+const path = __webpack_require__(4);
+const resolveCommand = __webpack_require__(259);
+const escape = __webpack_require__(265);
+const readShebang = __webpack_require__(266);
+const isWin = process.platform === 'win32';
+const isExecutableRegExp = /\.(?:com|exe)$/i;
+const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;
-/***/ }),
-/* 169 */
-/***/ (function(module, exports, __webpack_require__) {
+function detectShebang(parsed) {
+ parsed.file = resolveCommand(parsed);
-var wrappy = __webpack_require__(170)
-module.exports = wrappy(once)
-module.exports.strict = wrappy(onceStrict)
+ const shebang = parsed.file && readShebang(parsed.file);
-once.proto = once(function () {
- Object.defineProperty(Function.prototype, 'once', {
- value: function () {
- return once(this)
- },
- configurable: true
- })
+ if (shebang) {
+ parsed.args.unshift(parsed.file);
+ parsed.command = shebang;
- Object.defineProperty(Function.prototype, 'onceStrict', {
- value: function () {
- return onceStrict(this)
- },
- configurable: true
- })
-})
+ return resolveCommand(parsed);
+ }
-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
+ return parsed.file;
}
-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 parseNonShell(parsed) {
+ if (!isWin) {
+ return parsed;
+ }
+ // Detect & add support for shebangs
+ const commandFile = detectShebang(parsed);
-/***/ }),
-/* 170 */
-/***/ (function(module, exports) {
+ // We don't need a shell if the command filename is an executable
+ const needsShell = !isExecutableRegExp.test(commandFile);
-// Returns a wrapper function that returns a wrapped callback
-// The wrapper function should do some stuff, and return a
-// presumably different callback function.
-// This makes sure that own properties are retained, so that
-// decorations and such are not lost along the way.
-module.exports = wrappy
-function wrappy (fn, cb) {
- if (fn && cb) return wrappy(fn)(cb)
+ // 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);
- if (typeof fn !== 'function')
- throw new TypeError('need wrapper function')
+ // 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);
- Object.keys(fn).forEach(function (k) {
- wrapper[k] = fn[k]
- })
+ // Escape command & arguments
+ parsed.command = escape.command(parsed.command);
+ parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));
- return wrapper
+ const shellCommand = [parsed.command].concat(parsed.args).join(' ');
- function wrapper() {
- var args = new Array(arguments.length)
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i]
- }
- var ret = fn.apply(this, args)
- var cb = args[args.length-1]
- if (typeof ret === 'function' && ret !== cb) {
- Object.keys(cb).forEach(function (k) {
- ret[k] = cb[k]
- })
+ 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
}
- return ret
- }
-}
-
-
-/***/ }),
-/* 171 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var once = __webpack_require__(169);
-var noop = function() {};
+ return parsed;
+}
-var isRequest = function(stream) {
- return stream.setHeader && typeof stream.abort === 'function';
-};
+function parse(command, args, options) {
+ // Normalize arguments, similar to nodejs
+ if (args && !Array.isArray(args)) {
+ options = args;
+ args = null;
+ }
-var isChildProcess = function(stream) {
- return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3
-};
+ args = args ? args.slice(0) : []; // Clone array to avoid changing the original
+ options = Object.assign({}, options); // Clone object to avoid changing the original
-var eos = function(stream, opts, callback) {
- if (typeof opts === 'function') return eos(stream, null, opts);
- if (!opts) opts = {};
+ // Build our parsed object
+ const parsed = {
+ command,
+ args,
+ options,
+ file: undefined,
+ original: {
+ command,
+ args,
+ },
+ };
- callback = once(callback || noop);
+ // Delegate further parsing to shell or non-shell
+ return options.shell ? parsed : parseNonShell(parsed);
+}
- 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;
+module.exports = parse;
- var onlegacyfinish = function() {
- if (!stream.writable) onfinish();
- };
- var onfinish = function() {
- writable = false;
- if (!readable) callback.call(stream);
- };
+/***/ }),
+/* 259 */
+/***/ (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);
- };
- var onerror = function(err) {
- callback.call(stream, err);
- };
+const path = __webpack_require__(4);
+const which = __webpack_require__(260);
+const getPathKey = __webpack_require__(264);
- var onclose = function() {
- process.nextTick(onclosenexttick);
- };
+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;
- 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'));
- };
+ // 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 */
+ }
+ }
- var onrequest = function() {
- stream.req.on('finish', onfinish);
- };
+ let resolved;
- 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);
- }
+ 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 (isChildProcess(stream)) stream.on('exit', onexit);
+ // 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);
+ }
- stream.on('end', onend);
- stream.on('finish', onfinish);
- if (opts.error !== false) stream.on('error', onerror);
- stream.on('close', onclose);
+ return resolved;
+}
- 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);
- };
-};
+function resolveCommand(parsed) {
+ return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);
+}
-module.exports = eos;
+module.exports = resolveCommand;
/***/ }),
-/* 172 */
+/* 260 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-
-const {PassThrough: PassThroughStream} = __webpack_require__(173);
-
-module.exports = options => {
- options = {...options};
+const isWindows = process.platform === 'win32' ||
+ process.env.OSTYPE === 'cygwin' ||
+ process.env.OSTYPE === 'msys'
- const {array} = options;
- let {encoding} = options;
- const isBuffer = encoding === 'buffer';
- let objectMode = false;
+const path = __webpack_require__(4)
+const COLON = isWindows ? ';' : ':'
+const isexe = __webpack_require__(261)
- if (array) {
- objectMode = !(encoding || isBuffer);
- } else {
- encoding = encoding || 'utf8';
- }
+const getNotFoundError = (cmd) =>
+ Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })
- if (isBuffer) {
- encoding = null;
- }
+const getPathInfo = (cmd, opt) => {
+ const colon = opt.colon || COLON
- const stream = new PassThroughStream({objectMode});
+ // If it has a slash, then we don't bother searching the pathenv.
+ // just check the file itself, and that's it.
+ const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? ['']
+ : (
+ [
+ // windows always checks the cwd first
+ ...(isWindows ? [process.cwd()] : []),
+ ...(opt.path || process.env.PATH ||
+ /* istanbul ignore next: very unusual */ '').split(colon),
+ ]
+ )
+ const pathExtExe = isWindows
+ ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'
+ : ''
+ const pathExt = isWindows ? pathExtExe.split(colon) : ['']
- if (encoding) {
- stream.setEncoding(encoding);
- }
+ if (isWindows) {
+ if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')
+ pathExt.unshift('')
+ }
- let length = 0;
- const chunks = [];
+ return {
+ pathEnv,
+ pathExt,
+ pathExtExe,
+ }
+}
- stream.on('data', chunk => {
- chunks.push(chunk);
+const which = (cmd, opt, cb) => {
+ if (typeof opt === 'function') {
+ cb = opt
+ opt = {}
+ }
+ if (!opt)
+ opt = {}
- if (objectMode) {
- length = chunks.length;
- } else {
- length += chunk.length;
- }
- });
+ const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)
+ const found = []
- stream.getBufferedValue = () => {
- if (array) {
- return chunks;
- }
+ const step = i => new Promise((resolve, reject) => {
+ if (i === pathEnv.length)
+ return opt.all && found.length ? resolve(found)
+ : reject(getNotFoundError(cmd))
- return isBuffer ? Buffer.concat(chunks, length) : chunks.join('');
- };
+ const ppRaw = pathEnv[i]
+ const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw
- stream.getBufferedLength = () => length;
+ const pCmd = path.join(pathPart, cmd)
+ const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd
+ : pCmd
- return stream;
-};
+ resolve(subStep(p, i, 0))
+ })
+
+ const subStep = (p, i, ii) => new Promise((resolve, reject) => {
+ if (ii === pathExt.length)
+ return resolve(step(i + 1))
+ const ext = pathExt[ii]
+ isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {
+ if (!er && is) {
+ if (opt.all)
+ found.push(p + ext)
+ else
+ return resolve(p + ext)
+ }
+ return resolve(subStep(p, i, ii + 1))
+ })
+ })
+ return cb ? step(0).then(res => cb(null, res), cb) : step(0)
+}
-/***/ }),
-/* 173 */
-/***/ (function(module, exports) {
+const whichSync = (cmd, opt) => {
+ opt = opt || {}
+
+ const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)
+ const found = []
+
+ for (let i = 0; i < pathEnv.length; i ++) {
+ const ppRaw = pathEnv[i]
+ const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw
+
+ const pCmd = path.join(pathPart, cmd)
+ const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd
+ : pCmd
+
+ for (let j = 0; j < pathExt.length; j ++) {
+ const cur = p + pathExt[j]
+ try {
+ const is = isexe.sync(cur, { pathExt: pathExtExe })
+ if (is) {
+ if (opt.all)
+ found.push(cur)
+ else
+ return cur
+ }
+ } catch (ex) {}
+ }
+ }
+
+ if (opt.all && found.length)
+ return found
+
+ if (opt.nothrow)
+ return null
+
+ throw getNotFoundError(cmd)
+}
+
+module.exports = which
+which.sync = whichSync
-module.exports = require("stream");
/***/ }),
-/* 174 */
+/* 261 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
+var fs = __webpack_require__(253)
+var core
+if (process.platform === 'win32' || global.TESTING_WINDOWS) {
+ core = __webpack_require__(262)
+} else {
+ core = __webpack_require__(263)
+}
+module.exports = isexe
+isexe.sync = sync
-const { PassThrough } = __webpack_require__(173);
+function isexe (path, options, cb) {
+ if (typeof options === 'function') {
+ cb = options
+ options = {}
+ }
-module.exports = function (/*streams...*/) {
- var sources = []
- var output = new PassThrough({objectMode: true})
+ if (!cb) {
+ if (typeof Promise !== 'function') {
+ throw new TypeError('callback not provided')
+ }
- output.setMaxListeners(0)
+ return new Promise(function (resolve, reject) {
+ isexe(path, options || {}, function (er, is) {
+ if (er) {
+ reject(er)
+ } else {
+ resolve(is)
+ }
+ })
+ })
+ }
- output.add = add
- output.isEmpty = isEmpty
+ 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)
+ })
+}
- output.on('unpipe', remove)
+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
+ }
+ }
+}
- Array.prototype.slice.call(arguments).forEach(add)
- return output
+/***/ }),
+/* 262 */
+/***/ (function(module, exports, __webpack_require__) {
- function add (source) {
- if (Array.isArray(source)) {
- source.forEach(add)
- return this
- }
+module.exports = isexe
+isexe.sync = sync
- 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
+var fs = __webpack_require__(253)
+
+function checkPathExt (path, options) {
+ var pathext = options.pathExt !== undefined ?
+ options.pathExt : process.env.PATHEXT
+
+ if (!pathext) {
+ return true
}
- function isEmpty () {
- return sources.length == 0;
+ 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
+}
- function remove (source) {
- sources = sources.filter(function (it) { return it !== source })
- if (!sources.length && output.readable) { output.end() }
+function checkStat (stat, path, options) {
+ if (!stat.isSymbolicLink() && !stat.isFile()) {
+ return false
}
+ return checkPathExt(path, options)
+}
+
+function isexe (path, options, cb) {
+ fs.stat(path, function (er, stat) {
+ cb(er, er ? false : checkStat(stat, path, options))
+ })
+}
+
+function sync (path, options) {
+ return checkStat(fs.statSync(path), path, options)
}
/***/ }),
-/* 175 */
+/* 263 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-
+module.exports = isexe
+isexe.sync = sync
-const nativePromisePrototype = (async () => {})().constructor.prototype;
-const descriptors = ['then', 'catch', 'finally'].map(property => [
- property,
- Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property)
-]);
+var fs = __webpack_require__(253)
-// 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);
+function isexe (path, options, cb) {
+ fs.stat(path, function (er, stat) {
+ cb(er, er ? false : checkStat(stat, options))
+ })
+}
- Reflect.defineProperty(spawned, property, {...descriptor, value});
- }
+function sync (path, options) {
+ return checkStat(fs.statSync(path), options)
+}
- return spawned;
-};
+function checkStat (stat, options) {
+ return stat.isFile() && checkMode(stat, options)
+}
-// Use promises instead of `child_process` events
-const getSpawnedPromise = spawned => {
- return new Promise((resolve, reject) => {
- spawned.on('exit', (exitCode, signal) => {
- resolve({exitCode, signal});
- });
+function checkMode (stat, options) {
+ var mod = stat.mode
+ var uid = stat.uid
+ var gid = stat.gid
- spawned.on('error', error => {
- reject(error);
- });
+ var myUid = options.uid !== undefined ?
+ options.uid : process.getuid && process.getuid()
+ var myGid = options.gid !== undefined ?
+ options.gid : process.getgid && process.getgid()
- if (spawned.stdin) {
- spawned.stdin.on('error', error => {
- reject(error);
- });
- }
- });
-};
+ var u = parseInt('100', 8)
+ var g = parseInt('010', 8)
+ var o = parseInt('001', 8)
+ var ug = u | g
-module.exports = {
- mergePromise,
- getSpawnedPromise
-};
+ var ret = (mod & o) ||
+ (mod & g) && gid === myGid ||
+ (mod & u) && uid === myUid ||
+ (mod & ug) && myUid === 0
+ return ret
+}
/***/ }),
-/* 176 */
+/* 264 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const SPACES_REGEXP = / +/g;
-const joinCommand = (file, args = []) => {
- if (!Array.isArray(args)) {
- return file;
+const pathKey = (options = {}) => {
+ const environment = options.env || process.env;
+ const platform = options.platform || process.platform;
+
+ if (platform !== 'win32') {
+ return 'PATH';
}
- return [file, ...args].join(' ');
+ return Object.keys(environment).find(key => key.toUpperCase() === 'PATH') || 'Path';
};
-// Allow spaces to be escaped by a backslash if not meant as a delimiter
-const handleEscaping = (tokens, token, index) => {
- if (index === 0) {
- return [token];
- }
+module.exports = pathKey;
+// TODO: Remove this for the next major release
+module.exports.default = pathKey;
- const previousToken = tokens[tokens.length - 1];
- if (previousToken.endsWith('\\')) {
- return [...tokens.slice(0, -1), `${previousToken.slice(0, -1)} ${token}`];
- }
+/***/ }),
+/* 265 */
+/***/ (function(module, exports, __webpack_require__) {
- return [...tokens, token];
-};
+"use strict";
-// Handle `execa.command()`
-const parseCommand = command => {
- return command
- .trim()
- .split(SPACES_REGEXP)
- .reduce(handleEscaping, []);
-};
-module.exports = {
- joinCommand,
- parseCommand
-};
+// See http://www.robvanderwoude.com/escapechars.php
+const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g;
+function escapeCommand(arg) {
+ // Escape meta chars
+ arg = arg.replace(metaCharsRegExp, '^$1');
-/***/ }),
-/* 177 */
-/***/ (function(module, exports, __webpack_require__) {
+ return arg;
+}
+
+function escapeArgument(arg, doubleEscapeMetaChars) {
+ // Convert to string
+ arg = `${arg}`;
+
+ // Algorithm below is based on https://qntm.org/cmd
+
+ // 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
+
+ // Quote the whole thing:
+ arg = `"${arg}"`;
+
+ // Escape meta chars
+ arg = arg.replace(metaCharsRegExp, '^$1');
+
+ // Double escape meta chars if necessary
+ if (doubleEscapeMetaChars) {
+ arg = arg.replace(metaCharsRegExp, '^$1');
+ }
+
+ return arg;
+}
+
+module.exports.command = escapeCommand;
+module.exports.argument = escapeArgument;
-module.exports = __webpack_require__(178);
/***/ }),
-/* 178 */
+/* 266 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var utils = __webpack_require__(179);
-var bind = __webpack_require__(180);
-var Axios = __webpack_require__(181);
-var mergeConfig = __webpack_require__(213);
-var defaults = __webpack_require__(187);
+const fs = __webpack_require__(253);
+const shebangCommand = __webpack_require__(267);
-/**
- * Create an instance of Axios
- *
- * @param {Object} defaultConfig The default config for the instance
- * @return {Axios} A new instance of Axios
- */
-function createInstance(defaultConfig) {
- var context = new Axios(defaultConfig);
- var instance = bind(Axios.prototype.request, context);
+function readShebang(command) {
+ // Read the first 150 bytes from the file
+ const size = 150;
+ const buffer = Buffer.alloc(size);
- // Copy axios.prototype to instance
- utils.extend(instance, Axios.prototype, context);
+ let fd;
- // Copy context to instance
- utils.extend(instance, context);
+ try {
+ fd = fs.openSync(command, 'r');
+ fs.readSync(fd, buffer, 0, size, 0);
+ fs.closeSync(fd);
+ } catch (e) { /* Empty */ }
- return instance;
+ // Attempt to extract shebang (null is returned if not a shebang)
+ return shebangCommand(buffer.toString());
}
-// Create the default instance to be exported
-var axios = createInstance(defaults);
+module.exports = readShebang;
-// Expose Axios class to allow class inheritance
-axios.Axios = Axios;
-// Factory for creating new instances
-axios.create = function create(instanceConfig) {
- return createInstance(mergeConfig(axios.defaults, instanceConfig));
-};
+/***/ }),
+/* 267 */
+/***/ (function(module, exports, __webpack_require__) {
-// Expose Cancel & CancelToken
-axios.Cancel = __webpack_require__(214);
-axios.CancelToken = __webpack_require__(215);
-axios.isCancel = __webpack_require__(186);
+"use strict";
-// Expose all/spread
-axios.all = function all(promises) {
- return Promise.all(promises);
-};
-axios.spread = __webpack_require__(216);
+const shebangRegex = __webpack_require__(268);
-// Expose isAxiosError
-axios.isAxiosError = __webpack_require__(217);
+module.exports = (string = '') => {
+ const match = string.match(shebangRegex);
-module.exports = axios;
+ if (!match) {
+ return null;
+ }
-// Allow use of default import syntax in TypeScript
-module.exports.default = axios;
+ const [path, argument] = match[0].replace(/#! ?/, '').split(' ');
+ const binary = path.split('/').pop();
+
+ if (binary === 'env') {
+ return argument;
+ }
+
+ return argument ? `${binary} ${argument}` : binary;
+};
/***/ }),
-/* 179 */
+/* 268 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+module.exports = /^#!(.*)/;
-var bind = __webpack_require__(180);
-/*global toString:true*/
+/***/ }),
+/* 269 */
+/***/ (function(module, exports, __webpack_require__) {
-// utils is a library of generic helper functions non-specific to axios
+"use strict";
-var toString = Object.prototype.toString;
-/**
- * Determine if a value is an Array
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is an Array, otherwise false
- */
-function isArray(val) {
- return toString.call(val) === '[object Array]';
-}
+const isWin = process.platform === 'win32';
-/**
- * Determine if a value is undefined
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if the value is undefined, otherwise false
- */
-function isUndefined(val) {
- return typeof val === 'undefined';
+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,
+ });
}
-/**
- * Determine if a value is a Buffer
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Buffer, otherwise false
- */
-function isBuffer(val) {
- return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
- && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);
-}
+function hookChildProcess(cp, parsed) {
+ if (!isWin) {
+ return;
+ }
-/**
- * Determine if a value is an ArrayBuffer
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is an ArrayBuffer, otherwise false
- */
-function isArrayBuffer(val) {
- return toString.call(val) === '[object ArrayBuffer]';
-}
+ const originalEmit = cp.emit;
-/**
- * Determine if a value is a FormData
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is an FormData, otherwise false
- */
-function isFormData(val) {
- return (typeof FormData !== 'undefined') && (val instanceof FormData);
-}
+ 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');
-/**
- * Determine if a value is a view on an ArrayBuffer
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
- */
-function isArrayBufferView(val) {
- var result;
- if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
- result = ArrayBuffer.isView(val);
- } else {
- result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);
- }
- return result;
-}
+ if (err) {
+ return originalEmit.call(cp, 'error', err);
+ }
+ }
-/**
- * Determine if a value is a String
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a String, otherwise false
- */
-function isString(val) {
- return typeof val === 'string';
+ return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params
+ };
}
-/**
- * Determine if a value is a Number
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Number, otherwise false
- */
-function isNumber(val) {
- return typeof val === 'number';
-}
+function verifyENOENT(status, parsed) {
+ if (isWin && status === 1 && !parsed.file) {
+ return notFoundError(parsed.original, 'spawn');
+ }
-/**
- * Determine if a value is an Object
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is an Object, otherwise false
- */
-function isObject(val) {
- return val !== null && typeof val === 'object';
+ return null;
}
-/**
- * Determine if a value is a plain Object
- *
- * @param {Object} val The value to test
- * @return {boolean} True if value is a plain Object, otherwise false
- */
-function isPlainObject(val) {
- if (toString.call(val) !== '[object Object]') {
- return false;
- }
+function verifyENOENTSync(status, parsed) {
+ if (isWin && status === 1 && !parsed.file) {
+ return notFoundError(parsed.original, 'spawnSync');
+ }
- var prototype = Object.getPrototypeOf(val);
- return prototype === null || prototype === Object.prototype;
+ return null;
}
-/**
- * Determine if a value is a Date
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Date, otherwise false
- */
-function isDate(val) {
- return toString.call(val) === '[object Date]';
-}
+module.exports = {
+ hookChildProcess,
+ verifyENOENT,
+ verifyENOENTSync,
+ notFoundError,
+};
-/**
- * Determine if a value is a File
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a File, otherwise false
- */
-function isFile(val) {
- return toString.call(val) === '[object File]';
-}
-/**
- * Determine if a value is a Blob
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Blob, otherwise false
- */
-function isBlob(val) {
- return toString.call(val) === '[object Blob]';
-}
+/***/ }),
+/* 270 */
+/***/ (function(module, exports, __webpack_require__) {
-/**
- * Determine if a value is a Function
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Function, otherwise false
- */
-function isFunction(val) {
- return toString.call(val) === '[object Function]';
-}
+"use strict";
-/**
- * Determine if a value is a Stream
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Stream, otherwise false
- */
-function isStream(val) {
- return isObject(val) && isFunction(val.pipe);
-}
-/**
- * Determine if a value is a URLSearchParams object
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a URLSearchParams object, otherwise false
- */
-function isURLSearchParams(val) {
- return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
-}
+module.exports = input => {
+ const LF = typeof input === 'string' ? '\n' : '\n'.charCodeAt();
+ const CR = typeof input === 'string' ? '\r' : '\r'.charCodeAt();
-/**
- * Trim excess whitespace off the beginning and end of a string
- *
- * @param {String} str The String to trim
- * @returns {String} The String freed of excess whitespace
- */
-function trim(str) {
- return str.replace(/^\s*/, '').replace(/\s*$/, '');
-}
+ if (input[input.length - 1] === LF) {
+ input = input.slice(0, input.length - 1);
+ }
-/**
- * Determine if we're running in a standard browser environment
- *
- * This allows axios to run in a web worker, and react-native.
- * Both environments support XMLHttpRequest, but not fully standard globals.
- *
- * web workers:
- * typeof window -> undefined
- * typeof document -> undefined
- *
- * react-native:
- * navigator.product -> 'ReactNative'
- * nativescript
- * navigator.product -> 'NativeScript' or 'NS'
- */
-function isStandardBrowserEnv() {
- if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||
- navigator.product === 'NativeScript' ||
- navigator.product === 'NS')) {
- return false;
- }
- return (
- typeof window !== 'undefined' &&
- typeof document !== 'undefined'
- );
-}
+ if (input[input.length - 1] === CR) {
+ input = input.slice(0, input.length - 1);
+ }
-/**
- * Iterate over an Array or an Object invoking a function for each item.
- *
- * If `obj` is an Array callback will be called passing
- * the value, index, and complete array for each item.
- *
- * If 'obj' is an Object callback will be called passing
- * the value, key, and complete object for each property.
- *
- * @param {Object|Array} obj The object to iterate
- * @param {Function} fn The callback to invoke for each item
- */
-function forEach(obj, fn) {
- // Don't bother if no value provided
- if (obj === null || typeof obj === 'undefined') {
- return;
- }
+ return input;
+};
- // Force an array if not already something iterable
- if (typeof obj !== 'object') {
- /*eslint no-param-reassign:0*/
- obj = [obj];
- }
- if (isArray(obj)) {
- // Iterate over array values
- for (var i = 0, l = obj.length; i < l; i++) {
- fn.call(null, obj[i], i, obj);
- }
- } else {
- // Iterate over object keys
- for (var key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
- fn.call(null, obj[key], key, obj);
- }
- }
- }
-}
+/***/ }),
+/* 271 */
+/***/ (function(module, exports, __webpack_require__) {
-/**
- * Accepts varargs expecting each argument to be an object, then
- * immutably merges the properties of each object and returns result.
- *
- * When multiple objects contain the same key the later object in
- * the arguments list will take precedence.
- *
- * Example:
- *
- * ```js
- * var result = merge({foo: 123}, {foo: 456});
- * console.log(result.foo); // outputs 456
- * ```
- *
- * @param {Object} obj1 Object to merge
- * @returns {Object} Result of all merge properties
- */
-function merge(/* obj1, obj2, obj3, ... */) {
- var result = {};
- function assignValue(val, key) {
- if (isPlainObject(result[key]) && isPlainObject(val)) {
- result[key] = merge(result[key], val);
- } else if (isPlainObject(val)) {
- result[key] = merge({}, val);
- } else if (isArray(val)) {
- result[key] = val.slice();
- } else {
- result[key] = val;
- }
- }
+"use strict";
- for (var i = 0, l = arguments.length; i < l; i++) {
- forEach(arguments[i], assignValue);
- }
- return result;
-}
+const path = __webpack_require__(4);
+const pathKey = __webpack_require__(272);
-/**
- * Extends object a by mutably adding to it the properties of object b.
- *
- * @param {Object} a The object to be extended
- * @param {Object} b The object to copy properties from
- * @param {Object} thisArg The object to bind function to
- * @return {Object} The resulting value of object a
- */
-function extend(a, b, thisArg) {
- forEach(b, function assignValue(val, key) {
- if (thisArg && typeof val === 'function') {
- a[key] = bind(val, thisArg);
- } else {
- a[key] = val;
- }
- });
- return a;
-}
+const npmRunPath = options => {
+ options = {
+ cwd: process.cwd(),
+ path: process.env[pathKey()],
+ execPath: process.execPath,
+ ...options
+ };
-/**
- * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
- *
- * @param {string} content with BOM
- * @return {string} content value without BOM
- */
-function stripBOM(content) {
- if (content.charCodeAt(0) === 0xFEFF) {
- content = content.slice(1);
- }
- return content;
-}
+ let previous;
+ let cwdPath = path.resolve(options.cwd);
+ const result = [];
-module.exports = {
- isArray: isArray,
- isArrayBuffer: isArrayBuffer,
- isBuffer: isBuffer,
- isFormData: isFormData,
- isArrayBufferView: isArrayBufferView,
- isString: isString,
- isNumber: isNumber,
- isObject: isObject,
- isPlainObject: isPlainObject,
- isUndefined: isUndefined,
- isDate: isDate,
- isFile: isFile,
- isBlob: isBlob,
- isFunction: isFunction,
- isStream: isStream,
- isURLSearchParams: isURLSearchParams,
- isStandardBrowserEnv: isStandardBrowserEnv,
- forEach: forEach,
- merge: merge,
- extend: extend,
- trim: trim,
- stripBOM: stripBOM
+ while (previous !== cwdPath) {
+ result.push(path.join(cwdPath, 'node_modules/.bin'));
+ previous = cwdPath;
+ cwdPath = path.resolve(cwdPath, '..');
+ }
+
+ // Ensure the running `node` binary is used
+ const execPathDir = path.resolve(options.cwd, options.execPath, '..');
+ result.push(execPathDir);
+
+ return result.concat(options.path).join(path.delimiter);
};
+module.exports = npmRunPath;
+// TODO: Remove this for the next major release
+module.exports.default = npmRunPath;
-/***/ }),
-/* 180 */
-/***/ (function(module, exports, __webpack_require__) {
+module.exports.env = options => {
+ options = {
+ env: process.env,
+ ...options
+ };
-"use strict";
+ const env = {...options.env};
+ const path = pathKey({env});
+ options.path = env[path];
+ env[path] = module.exports(options);
-module.exports = function bind(fn, thisArg) {
- return function wrap() {
- var args = new Array(arguments.length);
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i];
- }
- return fn.apply(thisArg, args);
- };
+ return env;
};
/***/ }),
-/* 181 */
+/* 272 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var utils = __webpack_require__(179);
-var buildURL = __webpack_require__(182);
-var InterceptorManager = __webpack_require__(183);
-var dispatchRequest = __webpack_require__(184);
-var mergeConfig = __webpack_require__(213);
+const pathKey = (options = {}) => {
+ const environment = options.env || process.env;
+ const platform = options.platform || process.platform;
-/**
- * Create a new instance of Axios
- *
- * @param {Object} instanceConfig The default config for the instance
- */
-function Axios(instanceConfig) {
- this.defaults = instanceConfig;
- this.interceptors = {
- request: new InterceptorManager(),
- response: new InterceptorManager()
- };
-}
+ if (platform !== 'win32') {
+ return 'PATH';
+ }
-/**
- * Dispatch a request
- *
- * @param {Object} config The config specific for this request (merged with this.defaults)
- */
-Axios.prototype.request = function request(config) {
- /*eslint no-param-reassign:0*/
- // Allow for axios('example/url'[, config]) a la fetch API
- if (typeof config === 'string') {
- config = arguments[1] || {};
- config.url = arguments[0];
- } else {
- config = config || {};
- }
+ return Object.keys(environment).find(key => key.toUpperCase() === 'PATH') || 'Path';
+};
- config = mergeConfig(this.defaults, config);
+module.exports = pathKey;
+// TODO: Remove this for the next major release
+module.exports.default = pathKey;
- // Set config.method
- if (config.method) {
- config.method = config.method.toLowerCase();
- } else if (this.defaults.method) {
- config.method = this.defaults.method.toLowerCase();
- } else {
- config.method = 'get';
- }
- // Hook up interceptors middleware
- var chain = [dispatchRequest, undefined];
- var promise = Promise.resolve(config);
+/***/ }),
+/* 273 */
+/***/ (function(module, exports, __webpack_require__) {
- this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
- chain.unshift(interceptor.fulfilled, interceptor.rejected);
- });
+"use strict";
- this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
- chain.push(interceptor.fulfilled, interceptor.rejected);
- });
+const mimicFn = __webpack_require__(274);
- while (chain.length) {
- promise = promise.then(chain.shift(), chain.shift());
- }
+const calledFunctions = new WeakMap();
- return promise;
-};
+const onetime = (function_, options = {}) => {
+ if (typeof function_ !== 'function') {
+ throw new TypeError('Expected a function');
+ }
-Axios.prototype.getUri = function getUri(config) {
- config = mergeConfig(this.defaults, config);
- return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, '');
+ let returnValue;
+ let callCount = 0;
+ const functionName = function_.displayName || function_.name || '';
+
+ 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;
+ };
+
+ mimicFn(onetime, function_);
+ calledFunctions.set(onetime, callCount);
+
+ return onetime;
};
-// Provide aliases for supported request methods
-utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
- /*eslint func-names:0*/
- Axios.prototype[method] = function(url, config) {
- return this.request(mergeConfig(config || {}, {
- method: method,
- url: url,
- data: (config || {}).data
- }));
- };
-});
+module.exports = onetime;
+// TODO: Remove this for the next major release
+module.exports.default = onetime;
-utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
- /*eslint func-names:0*/
- Axios.prototype[method] = function(url, data, config) {
- return this.request(mergeConfig(config || {}, {
- method: method,
- url: url,
- data: data
- }));
- };
-});
+module.exports.callCount = function_ => {
+ if (!calledFunctions.has(function_)) {
+ throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
+ }
-module.exports = Axios;
+ return calledFunctions.get(function_);
+};
/***/ }),
-/* 182 */
+/* 274 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var utils = __webpack_require__(179);
+const mimicFn = (to, from) => {
+ for (const prop of Reflect.ownKeys(from)) {
+ Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));
+ }
-function encode(val) {
- return encodeURIComponent(val).
- replace(/%3A/gi, ':').
- replace(/%24/g, '$').
- replace(/%2C/gi, ',').
- replace(/%20/g, '+').
- replace(/%5B/gi, '[').
- replace(/%5D/gi, ']');
-}
+ return to;
+};
-/**
- * Build a URL by appending params to the end
- *
- * @param {string} url The base of the url (e.g., http://www.google.com)
- * @param {object} [params] The params to be appended
- * @returns {string} The formatted url
- */
-module.exports = function buildURL(url, params, paramsSerializer) {
- /*eslint no-param-reassign:0*/
- if (!params) {
- return url;
- }
+module.exports = mimicFn;
+// TODO: Remove this for the next major release
+module.exports.default = mimicFn;
- var serializedParams;
- if (paramsSerializer) {
- serializedParams = paramsSerializer(params);
- } else if (utils.isURLSearchParams(params)) {
- serializedParams = params.toString();
- } else {
- var parts = [];
- utils.forEach(params, function serialize(val, key) {
- if (val === null || typeof val === 'undefined') {
- return;
- }
+/***/ }),
+/* 275 */
+/***/ (function(module, exports, __webpack_require__) {
- if (utils.isArray(val)) {
- key = key + '[]';
- } else {
- val = [val];
- }
+"use strict";
- utils.forEach(val, function parseValue(v) {
- if (utils.isDate(v)) {
- v = v.toISOString();
- } else if (utils.isObject(v)) {
- v = JSON.stringify(v);
- }
- parts.push(encode(key) + '=' + encode(v));
- });
- });
+const {signalsByName} = __webpack_require__(276);
- serializedParams = parts.join('&');
- }
+const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {
+ if (timedOut) {
+ return `timed out after ${timeout} milliseconds`;
+ }
- if (serializedParams) {
- var hashmarkIndex = url.indexOf('#');
- if (hashmarkIndex !== -1) {
- url = url.slice(0, hashmarkIndex);
- }
+ if (isCanceled) {
+ return 'was canceled';
+ }
- url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
- }
+ if (errorCode !== undefined) {
+ return `failed with ${errorCode}`;
+ }
- return url;
+ if (signal !== undefined) {
+ return `was killed with ${signal} (${signalDescription})`;
+ }
+
+ 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;
-/***/ }),
-/* 183 */
-/***/ (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');
+ if (isError) {
+ error.originalMessage = error.message;
+ error.message = message;
+ } else {
+ error = new Error(message);
+ }
-var utils = __webpack_require__(179);
+ error.shortMessage = shortMessage;
+ error.command = command;
+ error.exitCode = exitCode;
+ error.signal = signal;
+ error.signalDescription = signalDescription;
+ error.stdout = stdout;
+ error.stderr = stderr;
-function InterceptorManager() {
- this.handlers = [];
-}
+ if (all !== undefined) {
+ error.all = all;
+ }
-/**
- * Add a new interceptor to the stack
- *
- * @param {Function} fulfilled The function to handle `then` for a `Promise`
- * @param {Function} rejected The function to handle `reject` for a `Promise`
- *
- * @return {Number} An ID used to remove interceptor later
- */
-InterceptorManager.prototype.use = function use(fulfilled, rejected) {
- this.handlers.push({
- fulfilled: fulfilled,
- rejected: rejected
- });
- return this.handlers.length - 1;
-};
+ if ('bufferedData' in error) {
+ delete error.bufferedData;
+ }
-/**
- * Remove an interceptor from the stack
- *
- * @param {Number} id The ID that was returned by `use`
- */
-InterceptorManager.prototype.eject = function eject(id) {
- if (this.handlers[id]) {
- this.handlers[id] = null;
- }
-};
+ error.failed = true;
+ error.timedOut = Boolean(timedOut);
+ error.isCanceled = isCanceled;
+ error.killed = killed && !timedOut;
-/**
- * Iterate over all the registered interceptors
- *
- * This method is particularly useful for skipping over any
- * interceptors that may have become `null` calling `eject`.
- *
- * @param {Function} fn The function to call for each interceptor
- */
-InterceptorManager.prototype.forEach = function forEach(fn) {
- utils.forEach(this.handlers, function forEachHandler(h) {
- if (h !== null) {
- fn(h);
- }
- });
+ return error;
};
-module.exports = InterceptorManager;
+module.exports = makeError;
/***/ }),
-/* 184 */
+/* 276 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+Object.defineProperty(exports,"__esModule",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__(243);
+var _signals=__webpack_require__(277);
+var _realtime=__webpack_require__(279);
-var utils = __webpack_require__(179);
-var transformData = __webpack_require__(185);
-var isCancel = __webpack_require__(186);
-var defaults = __webpack_require__(187);
-
-/**
- * Throws a `Cancel` if cancellation has been requested.
- */
-function throwIfCancellationRequested(config) {
- if (config.cancelToken) {
- config.cancelToken.throwIfRequested();
- }
-}
-
-/**
- * Dispatch a request to the server using the configured adapter.
- *
- * @param {object} config The config that is to be used for the request
- * @returns {Promise} The Promise to be fulfilled
- */
-module.exports = function dispatchRequest(config) {
- throwIfCancellationRequested(config);
- // Ensure headers exist
- config.headers = config.headers || {};
- // Transform request data
- config.data = transformData(
- config.data,
- config.headers,
- config.transformRequest
- );
+const getSignalsByName=function(){
+const signals=(0,_signals.getSignals)();
+return signals.reduce(getSignalByName,{});
+};
- // Flatten headers
- config.headers = utils.merge(
- config.headers.common || {},
- config.headers[config.method] || {},
- config.headers
- );
+const getSignalByName=function(
+signalByNameMemo,
+{name,number,description,supported,action,forced,standard})
+{
+return{
+...signalByNameMemo,
+[name]:{name,number,description,supported,action,forced,standard}};
- utils.forEach(
- ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
- function cleanHeaderConfig(method) {
- delete config.headers[method];
- }
- );
+};
- var adapter = config.adapter || defaults.adapter;
+const signalsByName=getSignalsByName();exports.signalsByName=signalsByName;
- return adapter(config).then(function onAdapterResolution(response) {
- throwIfCancellationRequested(config);
- // Transform response data
- response.data = transformData(
- response.data,
- response.headers,
- config.transformResponse
- );
- return response;
- }, function onAdapterRejection(reason) {
- if (!isCancel(reason)) {
- throwIfCancellationRequested(config);
- // Transform response data
- if (reason && reason.response) {
- reason.response.data = transformData(
- reason.response.data,
- reason.response.headers,
- config.transformResponse
- );
- }
- }
+const getSignalsByNumber=function(){
+const signals=(0,_signals.getSignals)();
+const length=_realtime.SIGRTMAX+1;
+const signalsA=Array.from({length},(value,number)=>
+getSignalByNumber(number,signals));
- return Promise.reject(reason);
- });
+return Object.assign({},...signalsA);
};
+const getSignalByNumber=function(number,signals){
+const signal=findSignalByNumber(number,signals);
-/***/ }),
-/* 185 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
+if(signal===undefined){
+return{};
+}
-var utils = __webpack_require__(179);
+const{name,description,supported,action,forced,standard}=signal;
+return{
+[number]:{
+name,
+number,
+description,
+supported,
+action,
+forced,
+standard}};
-/**
- * Transform the data for a request or a response
- *
- * @param {Object|String} data The data to be transformed
- * @param {Array} headers The headers for the request or response
- * @param {Array|Function} fns A single function or Array of functions
- * @returns {*} The resulting transformed data
- */
-module.exports = function transformData(data, headers, fns) {
- /*eslint no-param-reassign:0*/
- utils.forEach(fns, function transform(fn) {
- data = fn(data, headers);
- });
- return data;
};
-/***/ }),
-/* 186 */
-/***/ (function(module, exports, __webpack_require__) {
-"use strict";
+const findSignalByNumber=function(number,signals){
+const signal=signals.find(({name})=>_os.constants.signals[name]===number);
+if(signal!==undefined){
+return signal;
+}
-module.exports = function isCancel(value) {
- return !!(value && value.__CANCEL__);
+return signals.find(signalA=>signalA.number===number);
};
+const signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumber;
+//# sourceMappingURL=main.js.map
/***/ }),
-/* 187 */
+/* 277 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+Object.defineProperty(exports,"__esModule",{value:true});exports.getSignals=void 0;var _os=__webpack_require__(243);
+var _core=__webpack_require__(278);
+var _realtime=__webpack_require__(279);
-var utils = __webpack_require__(179);
-var normalizeHeaderName = __webpack_require__(188);
-
-var DEFAULT_CONTENT_TYPE = {
- 'Content-Type': 'application/x-www-form-urlencoded'
-};
-
-function setContentTypeIfUnset(headers, value) {
- if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
- headers['Content-Type'] = value;
- }
-}
-function getDefaultAdapter() {
- var adapter;
- if (typeof XMLHttpRequest !== 'undefined') {
- // For browsers use XHR adapter
- adapter = __webpack_require__(189);
- } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {
- // For node use HTTP adapter
- adapter = __webpack_require__(199);
- }
- return adapter;
-}
-var defaults = {
- adapter: getDefaultAdapter(),
+const getSignals=function(){
+const realtimeSignals=(0,_realtime.getRealtimeSignals)();
+const signals=[..._core.SIGNALS,...realtimeSignals].map(normalizeSignal);
+return signals;
+};exports.getSignals=getSignals;
- transformRequest: [function transformRequest(data, headers) {
- normalizeHeaderName(headers, 'Accept');
- normalizeHeaderName(headers, 'Content-Type');
- if (utils.isFormData(data) ||
- utils.isArrayBuffer(data) ||
- utils.isBuffer(data) ||
- utils.isStream(data) ||
- utils.isFile(data) ||
- utils.isBlob(data)
- ) {
- return data;
- }
- if (utils.isArrayBufferView(data)) {
- return data.buffer;
- }
- if (utils.isURLSearchParams(data)) {
- setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
- return data.toString();
- }
- if (utils.isObject(data)) {
- setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
- return JSON.stringify(data);
- }
- return data;
- }],
- transformResponse: [function transformResponse(data) {
- /*eslint no-param-reassign:0*/
- if (typeof data === 'string') {
- try {
- data = JSON.parse(data);
- } catch (e) { /* Ignore */ }
- }
- return data;
- }],
- /**
- * A timeout in milliseconds to abort a request. If set to 0 (default) a
- * timeout is not created.
- */
- timeout: 0,
- xsrfCookieName: 'XSRF-TOKEN',
- xsrfHeaderName: 'X-XSRF-TOKEN',
- maxContentLength: -1,
- maxBodyLength: -1,
- validateStatus: function validateStatus(status) {
- return status >= 200 && status < 300;
- }
-};
-defaults.headers = {
- common: {
- 'Accept': 'application/json, text/plain, */*'
- }
+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};
};
-
-utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
- defaults.headers[method] = {};
-});
-
-utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
- defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
-});
-
-module.exports = defaults;
-
+//# sourceMappingURL=signals.js.map
/***/ }),
-/* 188 */
+/* 278 */
/***/ (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 utils = __webpack_require__(179);
+{
+name:"SIGINT",
+number:2,
+action:"terminate",
+description:"User interruption with CTRL-C",
+standard:"ansi"},
-module.exports = function normalizeHeaderName(headers, normalizedName) {
- utils.forEach(headers, function processHeader(value, name) {
- if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
- headers[normalizedName] = value;
- delete headers[name];
- }
- });
-};
+{
+name:"SIGQUIT",
+number:3,
+action:"core",
+description:"User interruption with CTRL-\\",
+standard:"posix"},
+{
+name:"SIGILL",
+number:4,
+action:"core",
+description:"Invalid machine instruction",
+standard:"ansi"},
-/***/ }),
-/* 189 */
-/***/ (function(module, exports, __webpack_require__) {
+{
+name:"SIGTRAP",
+number:5,
+action:"core",
+description:"Debugger breakpoint",
+standard:"posix"},
-"use strict";
+{
+name:"SIGABRT",
+number:6,
+action:"core",
+description:"Aborted",
+standard:"ansi"},
+{
+name:"SIGIOT",
+number:6,
+action:"core",
+description:"Aborted",
+standard:"bsd"},
-var utils = __webpack_require__(179);
-var settle = __webpack_require__(190);
-var cookies = __webpack_require__(193);
-var buildURL = __webpack_require__(182);
-var buildFullPath = __webpack_require__(194);
-var parseHeaders = __webpack_require__(197);
-var isURLSameOrigin = __webpack_require__(198);
-var createError = __webpack_require__(191);
+{
+name:"SIGBUS",
+number:7,
+action:"core",
+description:
+"Bus error due to misaligned, non-existing address or paging error",
+standard:"bsd"},
-module.exports = function xhrAdapter(config) {
- return new Promise(function dispatchXhrRequest(resolve, reject) {
- var requestData = config.data;
- var requestHeaders = config.headers;
+{
+name:"SIGEMT",
+number:7,
+action:"terminate",
+description:"Command should be emulated but is not implemented",
+standard:"other"},
- if (utils.isFormData(requestData)) {
- delete requestHeaders['Content-Type']; // Let the browser set it
- }
+{
+name:"SIGFPE",
+number:8,
+action:"core",
+description:"Floating point arithmetic error",
+standard:"ansi"},
- var request = new XMLHttpRequest();
+{
+name:"SIGKILL",
+number:9,
+action:"terminate",
+description:"Forced termination",
+standard:"posix",
+forced:true},
- // HTTP basic authentication
- if (config.auth) {
- var username = config.auth.username || '';
- var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';
- requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
- }
+{
+name:"SIGUSR1",
+number:10,
+action:"terminate",
+description:"Application-specific signal",
+standard:"posix"},
- var fullPath = buildFullPath(config.baseURL, config.url);
- request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
+{
+name:"SIGSEGV",
+number:11,
+action:"core",
+description:"Segmentation fault",
+standard:"ansi"},
- // Set the request timeout in MS
- request.timeout = config.timeout;
+{
+name:"SIGUSR2",
+number:12,
+action:"terminate",
+description:"Application-specific signal",
+standard:"posix"},
- // Listen for ready state
- request.onreadystatechange = function handleLoad() {
- if (!request || request.readyState !== 4) {
- return;
- }
+{
+name:"SIGPIPE",
+number:13,
+action:"terminate",
+description:"Broken pipe or socket",
+standard:"posix"},
- // The request errored out and we didn't get a response, this will be
- // handled by onerror instead
- // With one exception: request that using file: protocol, most browsers
- // will return status as 0 even though it's a successful request
- if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
- return;
- }
+{
+name:"SIGALRM",
+number:14,
+action:"terminate",
+description:"Timeout or timer",
+standard:"posix"},
- // Prepare the response
- var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
- var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;
- var response = {
- data: responseData,
- status: request.status,
- statusText: request.statusText,
- headers: responseHeaders,
- config: config,
- request: request
- };
+{
+name:"SIGTERM",
+number:15,
+action:"terminate",
+description:"Termination",
+standard:"ansi"},
- settle(resolve, reject, response);
+{
+name:"SIGSTKFLT",
+number:16,
+action:"terminate",
+description:"Stack is empty or overflowed",
+standard:"other"},
- // Clean up request
- request = null;
- };
+{
+name:"SIGCHLD",
+number:17,
+action:"ignore",
+description:"Child process terminated, paused or unpaused",
+standard:"posix"},
- // Handle browser request cancellation (as opposed to a manual cancellation)
- request.onabort = function handleAbort() {
- if (!request) {
- return;
- }
+{
+name:"SIGCLD",
+number:17,
+action:"ignore",
+description:"Child process terminated, paused or unpaused",
+standard:"other"},
- reject(createError('Request aborted', config, 'ECONNABORTED', request));
+{
+name:"SIGCONT",
+number:18,
+action:"unpause",
+description:"Unpaused",
+standard:"posix",
+forced:true},
- // Clean up request
- request = null;
- };
+{
+name:"SIGSTOP",
+number:19,
+action:"pause",
+description:"Paused",
+standard:"posix",
+forced:true},
- // Handle low level network errors
- request.onerror = function handleError() {
- // Real errors are hidden from us by the browser
- // onerror should only fire if it's a network error
- reject(createError('Network Error', config, null, request));
+{
+name:"SIGTSTP",
+number:20,
+action:"pause",
+description:"Paused using CTRL-Z or \"suspend\"",
+standard:"posix"},
- // Clean up request
- request = null;
- };
+{
+name:"SIGTTIN",
+number:21,
+action:"pause",
+description:"Background process cannot read terminal input",
+standard:"posix"},
- // Handle timeout
- request.ontimeout = function handleTimeout() {
- var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';
- if (config.timeoutErrorMessage) {
- timeoutErrorMessage = config.timeoutErrorMessage;
- }
- reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',
- request));
+{
+name:"SIGBREAK",
+number:21,
+action:"terminate",
+description:"User interruption with CTRL-BREAK",
+standard:"other"},
- // Clean up request
- request = null;
- };
+{
+name:"SIGTTOU",
+number:22,
+action:"pause",
+description:"Background process cannot write to terminal output",
+standard:"posix"},
- // Add xsrf header
- // This is only done if running in a standard browser environment.
- // Specifically not if we're in a web worker, or react-native.
- if (utils.isStandardBrowserEnv()) {
- // Add xsrf header
- var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?
- cookies.read(config.xsrfCookieName) :
- undefined;
+{
+name:"SIGURG",
+number:23,
+action:"ignore",
+description:"Socket received out-of-band data",
+standard:"bsd"},
- if (xsrfValue) {
- requestHeaders[config.xsrfHeaderName] = xsrfValue;
- }
- }
+{
+name:"SIGXCPU",
+number:24,
+action:"core",
+description:"Process timed out",
+standard:"bsd"},
- // Add headers to the request
- if ('setRequestHeader' in request) {
- utils.forEach(requestHeaders, function setRequestHeader(val, key) {
- if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
- // Remove Content-Type if data is undefined
- delete requestHeaders[key];
- } else {
- // Otherwise add header to the request
- request.setRequestHeader(key, val);
- }
- });
- }
+{
+name:"SIGXFSZ",
+number:25,
+action:"core",
+description:"File too big",
+standard:"bsd"},
- // Add withCredentials to request if needed
- if (!utils.isUndefined(config.withCredentials)) {
- request.withCredentials = !!config.withCredentials;
- }
+{
+name:"SIGVTALRM",
+number:26,
+action:"terminate",
+description:"Timeout or timer",
+standard:"bsd"},
- // Add responseType to request if needed
- if (config.responseType) {
- try {
- request.responseType = config.responseType;
- } catch (e) {
- // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.
- // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.
- if (config.responseType !== 'json') {
- throw e;
- }
- }
- }
+{
+name:"SIGPROF",
+number:27,
+action:"terminate",
+description:"Timeout or timer",
+standard:"bsd"},
- // Handle progress if needed
- if (typeof config.onDownloadProgress === 'function') {
- request.addEventListener('progress', config.onDownloadProgress);
- }
+{
+name:"SIGWINCH",
+number:28,
+action:"ignore",
+description:"Terminal window size changed",
+standard:"bsd"},
- // Not all browsers support upload events
- if (typeof config.onUploadProgress === 'function' && request.upload) {
- request.upload.addEventListener('progress', config.onUploadProgress);
- }
+{
+name:"SIGIO",
+number:29,
+action:"terminate",
+description:"I/O is available",
+standard:"other"},
- if (config.cancelToken) {
- // Handle cancellation
- config.cancelToken.promise.then(function onCanceled(cancel) {
- if (!request) {
- return;
- }
+{
+name:"SIGPOLL",
+number:29,
+action:"terminate",
+description:"Watched event",
+standard:"other"},
- request.abort();
- reject(cancel);
- // Clean up request
- request = null;
- });
- }
+{
+name:"SIGINFO",
+number:29,
+action:"ignore",
+description:"Request for process information",
+standard:"other"},
- if (!requestData) {
- requestData = null;
- }
+{
+name:"SIGPWR",
+number:30,
+action:"terminate",
+description:"Device running out of power",
+standard:"systemv"},
- // Send the request
- request.send(requestData);
- });
-};
+{
+name:"SIGSYS",
+number:31,
+action:"core",
+description:"Invalid system call",
+standard:"other"},
+{
+name:"SIGUNUSED",
+number:31,
+action:"terminate",
+description:"Invalid system call",
+standard:"other"}];exports.SIGNALS=SIGNALS;
+//# sourceMappingURL=core.js.map
/***/ }),
-/* 190 */
+/* 279 */
/***/ (function(module, exports, __webpack_require__) {
"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;
+const getRealtimeSignal=function(value,index){
+return{
+name:`SIGRT${index+1}`,
+number:SIGRTMIN+index,
+action:"terminate",
+description:"Application-specific signal (realtime)",
+standard:"posix"};
-var createError = __webpack_require__(191);
-
-/**
- * Resolve or reject a Promise based on response status.
- *
- * @param {Function} resolve A function that resolves the promise.
- * @param {Function} reject A function that rejects the promise.
- * @param {object} response The response.
- */
-module.exports = function settle(resolve, reject, response) {
- var validateStatus = response.config.validateStatus;
- if (!response.status || !validateStatus || validateStatus(response.status)) {
- resolve(response);
- } else {
- reject(createError(
- 'Request failed with status code ' + response.status,
- response.config,
- null,
- response.request,
- response
- ));
- }
};
+const SIGRTMIN=34;
+const SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX;
+//# sourceMappingURL=realtime.js.map
/***/ }),
-/* 191 */
+/* 280 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+const aliases = ['stdin', 'stdout', 'stderr'];
-var enhanceError = __webpack_require__(192);
-
-/**
- * Create an Error with the specified message, config, error code, request and response.
- *
- * @param {string} message The error message.
- * @param {Object} config The config.
- * @param {string} [code] The error code (for example, 'ECONNABORTED').
- * @param {Object} [request] The request.
- * @param {Object} [response] The response.
- * @returns {Error} The created error.
- */
-module.exports = function createError(message, config, code, request, response) {
- var error = new Error(message);
- return enhanceError(error, config, code, request, response);
-};
+const hasAlias = opts => aliases.some(alias => opts[alias] !== undefined);
+const normalizeStdio = opts => {
+ if (!opts) {
+ return;
+ }
-/***/ }),
-/* 192 */
-/***/ (function(module, exports, __webpack_require__) {
+ const {stdio} = opts;
-"use strict";
+ if (stdio === undefined) {
+ return aliases.map(alias => opts[alias]);
+ }
+ if (hasAlias(opts)) {
+ throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map(alias => `\`${alias}\``).join(', ')}`);
+ }
-/**
- * Update an Error with the specified config, error code, and response.
- *
- * @param {Error} error The error to update.
- * @param {Object} config The config.
- * @param {string} [code] The error code (for example, 'ECONNABORTED').
- * @param {Object} [request] The request.
- * @param {Object} [response] The response.
- * @returns {Error} The error.
- */
-module.exports = function enhanceError(error, config, code, request, response) {
- error.config = config;
- if (code) {
- error.code = code;
- }
+ if (typeof stdio === 'string') {
+ return stdio;
+ }
- error.request = request;
- error.response = response;
- error.isAxiosError = true;
+ if (!Array.isArray(stdio)) {
+ throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``);
+ }
- error.toJSON = function toJSON() {
- return {
- // Standard
- message: this.message,
- name: this.name,
- // Microsoft
- description: this.description,
- number: this.number,
- // Mozilla
- fileName: this.fileName,
- lineNumber: this.lineNumber,
- columnNumber: this.columnNumber,
- stack: this.stack,
- // Axios
- config: this.config,
- code: this.code
- };
- };
- return error;
+ const length = Math.max(stdio.length, aliases.length);
+ return Array.from({length}, (value, index) => stdio[index]);
};
+module.exports = normalizeStdio;
-/***/ }),
-/* 193 */
-/***/ (function(module, exports, __webpack_require__) {
+// `ipc` is pushed unless it is already present
+module.exports.node = opts => {
+ const stdio = normalizeStdio(opts);
-"use strict";
+ if (stdio === 'ipc') {
+ return 'ipc';
+ }
+ if (stdio === undefined || typeof stdio === 'string') {
+ return [stdio, stdio, stdio, 'ipc'];
+ }
-var utils = __webpack_require__(179);
+ if (stdio.includes('ipc')) {
+ return stdio;
+ }
-module.exports = (
- utils.isStandardBrowserEnv() ?
+ return [...stdio, 'ipc'];
+};
- // Standard browser envs support document.cookie
- (function standardBrowserEnv() {
- return {
- write: function write(name, value, expires, path, domain, secure) {
- var cookie = [];
- cookie.push(name + '=' + encodeURIComponent(value));
- if (utils.isNumber(expires)) {
- cookie.push('expires=' + new Date(expires).toGMTString());
- }
+/***/ }),
+/* 281 */
+/***/ (function(module, exports, __webpack_require__) {
- if (utils.isString(path)) {
- cookie.push('path=' + path);
- }
+"use strict";
- if (utils.isString(domain)) {
- cookie.push('domain=' + domain);
- }
+const os = __webpack_require__(243);
+const onExit = __webpack_require__(282);
- if (secure === true) {
- cookie.push('secure');
- }
+const DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;
- document.cookie = cookie.join('; ');
- },
+// 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;
+};
- read: function read(name) {
- var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
- return (match ? decodeURIComponent(match[3]) : null);
- },
+const setKillTimeout = (kill, signal, options, killResult) => {
+ if (!shouldForceKill(signal, options, killResult)) {
+ return;
+ }
- remove: function remove(name) {
- this.write(name, '', Date.now() - 86400000);
- }
- };
- })() :
+ const timeout = getForceKillAfterTimeout(options);
+ const t = setTimeout(() => {
+ kill('SIGKILL');
+ }, timeout);
- // Non standard browser env (web workers, react-native) lack needed support.
- (function nonStandardBrowserEnv() {
- return {
- write: function write() {},
- read: function read() { return null; },
- remove: function remove() {}
- };
- })()
-);
+ // 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;
+};
-/***/ }),
-/* 194 */
-/***/ (function(module, exports, __webpack_require__) {
+const isSigterm = signal => {
+ return signal === os.constants.signals.SIGTERM ||
+ (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');
+};
-"use strict";
+const getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {
+ if (forceKillAfterTimeout === true) {
+ return DEFAULT_FORCE_KILL_TIMEOUT;
+ }
+ if (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {
+ throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`);
+ }
-var isAbsoluteURL = __webpack_require__(195);
-var combineURLs = __webpack_require__(196);
+ return forceKillAfterTimeout;
+};
-/**
- * Creates a new URL by combining the baseURL with the requestedURL,
- * only when the requestedURL is not already an absolute URL.
- * If the requestURL is absolute, this function returns the requestedURL untouched.
- *
- * @param {string} baseURL The base URL
- * @param {string} requestedURL Absolute or relative URL to combine
- * @returns {string} The combined full path
- */
-module.exports = function buildFullPath(baseURL, requestedURL) {
- if (baseURL && !isAbsoluteURL(requestedURL)) {
- return combineURLs(baseURL, requestedURL);
- }
- return requestedURL;
+// `childProcess.cancel()`
+const spawnedCancel = (spawned, context) => {
+ const killResult = spawned.kill();
+
+ if (killResult) {
+ context.isCanceled = true;
+ }
};
+const timeoutKill = (spawned, signal, reject) => {
+ spawned.kill(signal);
+ reject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));
+};
-/***/ }),
-/* 195 */
-/***/ (function(module, exports, __webpack_require__) {
+// `timeout` option handling
+const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {
+ if (timeout === 0 || timeout === undefined) {
+ return spawnedPromise;
+ }
-"use strict";
+ 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);
+ });
-/**
- * Determines whether the specified URL is absolute
- *
- * @param {string} url The URL to test
- * @returns {boolean} True if the specified URL is absolute, otherwise false
- */
-module.exports = function isAbsoluteURL(url) {
- // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL).
- // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
- // by any combination of letters, digits, plus, period, or hyphen.
- return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
-};
+ const safeSpawnedPromise = spawnedPromise.finally(() => {
+ clearTimeout(timeoutId);
+ });
+ return Promise.race([timeoutPromise, safeSpawnedPromise]);
+};
-/***/ }),
-/* 196 */
-/***/ (function(module, exports, __webpack_require__) {
+// `cleanup` option handling
+const setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {
+ if (!cleanup || detached) {
+ return timedPromise;
+ }
-"use strict";
+ const removeExitHandler = onExit(() => {
+ spawned.kill();
+ });
+ return timedPromise.finally(() => {
+ removeExitHandler();
+ });
+};
-/**
- * Creates a new URL by combining the specified URLs
- *
- * @param {string} baseURL The base URL
- * @param {string} relativeURL The relative URL
- * @returns {string} The combined URL
- */
-module.exports = function combineURLs(baseURL, relativeURL) {
- return relativeURL
- ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
- : baseURL;
+module.exports = {
+ spawnedKill,
+ spawnedCancel,
+ setupTimeout,
+ setExitHandler
};
/***/ }),
-/* 197 */
+/* 282 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
+// 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'
+}
-var utils = __webpack_require__(179);
+// 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__(283)
+ var signals = __webpack_require__(284)
+ var isWin = /^win/i.test(process.platform)
-// Headers whose duplicates are ignored by node
-// c.f. https://nodejs.org/api/http.html#http_message_headers
-var ignoreDuplicateOf = [
- 'age', 'authorization', 'content-length', 'content-type', 'etag',
- 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
- 'last-modified', 'location', 'max-forwards', 'proxy-authorization',
- 'referer', 'retry-after', 'user-agent'
-];
+ var EE = __webpack_require__(285)
+ /* istanbul ignore if */
+ if (typeof EE !== 'function') {
+ EE = EE.EventEmitter
+ }
-/**
- * Parse headers into an object
- *
- * ```
- * Date: Wed, 27 Aug 2014 08:58:49 GMT
- * Content-Type: application/json
- * Connection: keep-alive
- * Transfer-Encoding: chunked
- * ```
- *
- * @param {String} headers Headers needing to be parsed
- * @returns {Object} Headers parsed into an object
- */
-module.exports = function parseHeaders(headers) {
- var parsed = {};
- var key;
- var val;
- var i;
+ 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 (!headers) { return parsed; }
+ // 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
+ }
- utils.forEach(headers.split('\n'), function parser(line) {
- i = line.indexOf(':');
- key = utils.trim(line.substr(0, i)).toLowerCase();
- val = utils.trim(line.substr(i + 1));
+ 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 (key) {
- if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
- return;
- }
- if (key === 'set-cookie') {
- parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);
- } else {
- parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
- }
+ if (loaded === false) {
+ load()
}
- });
- return parsed;
-};
+ 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)
-/***/ }),
-/* 198 */
-/***/ (function(module, exports, __webpack_require__) {
+ return remove
+ }
-"use strict";
+ 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 utils = __webpack_require__(179);
+ var emit = function emit (event, code, signal) {
+ /* istanbul ignore if */
+ if (emitter.emitted[event]) {
+ return
+ }
+ emitter.emitted[event] = true
+ emitter.emit(event, code, signal)
+ }
-module.exports = (
- utils.isStandardBrowserEnv() ?
+ // { : , ... }
+ 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)
+ }
+ }
+ })
- // Standard browser envs have full support of the APIs needed to test
- // whether the request URL is of the same origin as current location.
- (function standardBrowserEnv() {
- var msie = /(msie|trident)/i.test(navigator.userAgent);
- var urlParsingNode = document.createElement('a');
- var originURL;
+ module.exports.signals = function () {
+ return signals
+ }
- /**
- * Parse a URL to discover it's components
- *
- * @param {String} url The URL to be parsed
- * @returns {Object}
- */
- function resolveURL(url) {
- var href = url;
+ var loaded = false
- if (msie) {
- // IE needs attribute set twice to normalize properties
- urlParsingNode.setAttribute('href', href);
- href = urlParsingNode.href;
- }
+ var load = function load () {
+ if (loaded || !processOk(global.process)) {
+ return
+ }
+ loaded = true
- urlParsingNode.setAttribute('href', href);
+ // 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
- // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
- return {
- href: urlParsingNode.href,
- protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
- host: urlParsingNode.host,
- search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
- hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
- hostname: urlParsingNode.hostname,
- port: urlParsingNode.port,
- pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
- urlParsingNode.pathname :
- '/' + urlParsingNode.pathname
- };
+ signals = signals.filter(function (sig) {
+ try {
+ process.on(sig, sigListeners[sig])
+ return true
+ } catch (er) {
+ return false
}
+ })
- originURL = resolveURL(window.location.href);
+ process.emit = processEmit
+ process.reallyExit = processReallyExit
+ }
+ module.exports.load = load
- /**
- * Determine if a URL shares the same origin as the current location
- *
- * @param {String} requestURL The URL to test
- * @returns {boolean} True if URL shares the same origin, otherwise false
- */
- return function isURLSameOrigin(requestURL) {
- var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
- return (parsed.protocol === originURL.protocol &&
- parsed.host === originURL.host);
- };
- })() :
+ 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)
+ }
- // Non standard browser envs (web workers, react-native) lack needed support.
- (function nonStandardBrowserEnv() {
- return function isURLSameOrigin() {
- return true;
- };
- })()
-);
+ 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)
+ }
+ }
+}
/***/ }),
-/* 199 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
+/* 283 */
+/***/ (function(module, exports) {
-var utils = __webpack_require__(179);
-var settle = __webpack_require__(190);
-var buildFullPath = __webpack_require__(194);
-var buildURL = __webpack_require__(182);
-var http = __webpack_require__(200);
-var https = __webpack_require__(201);
-var httpFollow = __webpack_require__(202).http;
-var httpsFollow = __webpack_require__(202).https;
-var url = __webpack_require__(203);
-var zlib = __webpack_require__(211);
-var pkg = __webpack_require__(212);
-var createError = __webpack_require__(191);
-var enhanceError = __webpack_require__(192);
+module.exports = require("assert");
-var isHttps = /https:?/;
+/***/ }),
+/* 284 */
+/***/ (function(module, exports) {
-/**
- *
- * @param {http.ClientRequestArgs} options
- * @param {AxiosProxyConfig} proxy
- * @param {string} location
- */
-function setProxy(options, proxy, location) {
- options.hostname = proxy.host;
- options.host = proxy.host;
- options.port = proxy.port;
- options.path = location;
+// 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'
+]
- // Basic proxy authorization
- if (proxy.auth) {
- var base64 = Buffer.from(proxy.auth.username + ':' + proxy.auth.password, 'utf8').toString('base64');
- options.headers['Proxy-Authorization'] = 'Basic ' + base64;
- }
+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 a proxy is used, any redirects must also pass through the proxy
- options.beforeRedirect = function beforeRedirect(redirection) {
- redirection.headers.host = redirection.host;
- setProxy(redirection, proxy, redirection.href);
- };
+if (process.platform === 'linux') {
+ module.exports.push(
+ 'SIGIO',
+ 'SIGPOLL',
+ 'SIGPWR',
+ 'SIGSTKFLT',
+ 'SIGUNUSED'
+ )
}
-/*eslint consistent-return:0*/
-module.exports = function httpAdapter(config) {
- return new Promise(function dispatchHttpRequest(resolvePromise, rejectPromise) {
- var resolve = function resolve(value) {
- resolvePromise(value);
- };
- var reject = function reject(value) {
- rejectPromise(value);
- };
- var data = config.data;
- var headers = config.headers;
- // Set User-Agent (required by some servers)
- // Only set header if it hasn't been set in config
- // See https://github.com/axios/axios/issues/69
- if (!headers['User-Agent'] && !headers['user-agent']) {
- headers['User-Agent'] = 'axios/' + pkg.version;
- }
+/***/ }),
+/* 285 */
+/***/ (function(module, exports) {
- if (data && !utils.isStream(data)) {
- if (Buffer.isBuffer(data)) {
- // Nothing to do...
- } else if (utils.isArrayBuffer(data)) {
- data = Buffer.from(new Uint8Array(data));
- } else if (utils.isString(data)) {
- data = Buffer.from(data, 'utf-8');
- } else {
- return reject(createError(
- 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',
- config
- ));
- }
+module.exports = require("events");
- // Add Content-Length header if data exists
- headers['Content-Length'] = data.length;
- }
+/***/ }),
+/* 286 */
+/***/ (function(module, exports, __webpack_require__) {
- // HTTP basic authentication
- var auth = undefined;
- if (config.auth) {
- var username = config.auth.username || '';
- var password = config.auth.password || '';
- auth = username + ':' + password;
- }
+"use strict";
- // Parse url
- var fullPath = buildFullPath(config.baseURL, config.url);
- var parsed = url.parse(fullPath);
- var protocol = parsed.protocol || 'http:';
+const isStream = __webpack_require__(287);
+const getStream = __webpack_require__(288);
+const mergeStream = __webpack_require__(295);
- if (!auth && parsed.auth) {
- var urlAuth = parsed.auth.split(':');
- var urlUsername = urlAuth[0] || '';
- var urlPassword = urlAuth[1] || '';
- auth = urlUsername + ':' + urlPassword;
- }
+// `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;
+ }
- if (auth) {
- delete headers.Authorization;
- }
+ if (isStream(input)) {
+ input.pipe(spawned.stdin);
+ } else {
+ spawned.stdin.end(input);
+ }
+};
- var isHttpsRequest = isHttps.test(protocol);
- var agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;
+// `all` interleaves `stdout` and `stderr`
+const makeAllStream = (spawned, {all}) => {
+ if (!all || (!spawned.stdout && !spawned.stderr)) {
+ return;
+ }
- var options = {
- path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''),
- method: config.method.toUpperCase(),
- headers: headers,
- agent: agent,
- agents: { http: config.httpAgent, https: config.httpsAgent },
- auth: auth
- };
+ const mixed = mergeStream();
- if (config.socketPath) {
- options.socketPath = config.socketPath;
- } else {
- options.hostname = parsed.hostname;
- options.port = parsed.port;
- }
+ if (spawned.stdout) {
+ mixed.add(spawned.stdout);
+ }
- var proxy = config.proxy;
- if (!proxy && proxy !== false) {
- var proxyEnv = protocol.slice(0, -1) + '_proxy';
- var proxyUrl = process.env[proxyEnv] || process.env[proxyEnv.toUpperCase()];
- if (proxyUrl) {
- var parsedProxyUrl = url.parse(proxyUrl);
- var noProxyEnv = process.env.no_proxy || process.env.NO_PROXY;
- var shouldProxy = true;
+ if (spawned.stderr) {
+ mixed.add(spawned.stderr);
+ }
- if (noProxyEnv) {
- var noProxy = noProxyEnv.split(',').map(function trim(s) {
- return s.trim();
- });
+ return mixed;
+};
- shouldProxy = !noProxy.some(function proxyMatch(proxyElement) {
- if (!proxyElement) {
- return false;
- }
- if (proxyElement === '*') {
- return true;
- }
- if (proxyElement[0] === '.' &&
- parsed.hostname.substr(parsed.hostname.length - proxyElement.length) === proxyElement) {
- return true;
- }
+// On failure, `result.stdout|stderr|all` should contain the currently buffered stream
+const getBufferedData = async (stream, streamPromise) => {
+ if (!stream) {
+ return;
+ }
- return parsed.hostname === proxyElement;
- });
- }
+ stream.destroy();
- if (shouldProxy) {
- proxy = {
- host: parsedProxyUrl.hostname,
- port: parsedProxyUrl.port,
- protocol: parsedProxyUrl.protocol
- };
+ try {
+ return await streamPromise;
+ } catch (error) {
+ return error.bufferedData;
+ }
+};
- if (parsedProxyUrl.auth) {
- var proxyUrlAuth = parsedProxyUrl.auth.split(':');
- proxy.auth = {
- username: proxyUrlAuth[0],
- password: proxyUrlAuth[1]
- };
- }
- }
- }
- }
+const getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {
+ if (!stream || !buffer) {
+ return;
+ }
- if (proxy) {
- options.headers.host = parsed.hostname + (parsed.port ? ':' + parsed.port : '');
- setProxy(options, proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);
- }
+ if (encoding) {
+ return getStream(stream, {encoding, maxBuffer});
+ }
- var transport;
- var isHttpsProxy = isHttpsRequest && (proxy ? isHttps.test(proxy.protocol) : true);
- if (config.transport) {
- transport = config.transport;
- } else if (config.maxRedirects === 0) {
- transport = isHttpsProxy ? https : http;
- } else {
- if (config.maxRedirects) {
- options.maxRedirects = config.maxRedirects;
- }
- transport = isHttpsProxy ? httpsFollow : httpFollow;
- }
+ return getStream.buffer(stream, {maxBuffer});
+};
- if (config.maxBodyLength > -1) {
- options.maxBodyLength = config.maxBodyLength;
- }
+// 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});
- // Create the request
- var req = transport.request(options, function handleResponse(res) {
- if (req.aborted) return;
+ 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)
+ ]);
+ }
+};
- // uncompress the response body transparently if required
- var stream = res;
+const validateInputSync = ({input}) => {
+ if (isStream(input)) {
+ throw new TypeError('The `input` option cannot be a stream in sync mode');
+ }
+};
- // return the last request in case of redirects
- var lastRequest = res.req || req;
+module.exports = {
+ handleInput,
+ makeAllStream,
+ getSpawnedResult,
+ validateInputSync
+};
- // if no content, is HEAD request or decompress disabled we should not decompress
- if (res.statusCode !== 204 && lastRequest.method !== 'HEAD' && config.decompress !== false) {
- switch (res.headers['content-encoding']) {
- /*eslint default-case:0*/
- case 'gzip':
- case 'compress':
- case 'deflate':
- // add the unzipper to the body stream processing pipeline
- stream = stream.pipe(zlib.createUnzip());
- // remove the content-encoding in order to not confuse downstream operations
- delete res.headers['content-encoding'];
- break;
- }
- }
+/***/ }),
+/* 287 */
+/***/ (function(module, exports, __webpack_require__) {
- var response = {
- status: res.statusCode,
- statusText: res.statusMessage,
- headers: res.headers,
- config: config,
- request: lastRequest
- };
+"use strict";
- if (config.responseType === 'stream') {
- response.data = stream;
- settle(resolve, reject, response);
- } else {
- var responseBuffer = [];
- stream.on('data', function handleStreamData(chunk) {
- responseBuffer.push(chunk);
- // make sure the content length is not over the maxContentLength if specified
- if (config.maxContentLength > -1 && Buffer.concat(responseBuffer).length > config.maxContentLength) {
- stream.destroy();
- reject(createError('maxContentLength size of ' + config.maxContentLength + ' exceeded',
- config, null, lastRequest));
- }
- });
+const isStream = stream =>
+ stream !== null &&
+ typeof stream === 'object' &&
+ typeof stream.pipe === 'function';
- stream.on('error', function handleStreamError(err) {
- if (req.aborted) return;
- reject(enhanceError(err, config, null, lastRequest));
- });
+isStream.writable = stream =>
+ isStream(stream) &&
+ stream.writable !== false &&
+ typeof stream._write === 'function' &&
+ typeof stream._writableState === 'object';
- stream.on('end', function handleStreamEnd() {
- var responseData = Buffer.concat(responseBuffer);
- if (config.responseType !== 'arraybuffer') {
- responseData = responseData.toString(config.responseEncoding);
- if (!config.responseEncoding || config.responseEncoding === 'utf8') {
- responseData = utils.stripBOM(responseData);
- }
- }
+isStream.readable = stream =>
+ isStream(stream) &&
+ stream.readable !== false &&
+ typeof stream._read === 'function' &&
+ typeof stream._readableState === 'object';
- response.data = responseData;
- settle(resolve, reject, response);
- });
- }
- });
+isStream.duplex = stream =>
+ isStream.writable(stream) &&
+ isStream.readable(stream);
- // Handle errors
- req.on('error', function handleRequestError(err) {
- if (req.aborted && err.code !== 'ERR_FR_TOO_MANY_REDIRECTS') return;
- reject(enhanceError(err, config, null, req));
- });
+isStream.transform = stream =>
+ isStream.duplex(stream) &&
+ typeof stream._transform === 'function' &&
+ typeof stream._transformState === 'object';
- // Handle request timeout
- if (config.timeout) {
- // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.
- // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET.
- // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.
- // And then these socket which be hang up will devoring CPU little by little.
- // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.
- req.setTimeout(config.timeout, function handleRequestTimeout() {
- req.abort();
- reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', req));
- });
- }
+module.exports = isStream;
- if (config.cancelToken) {
- // Handle cancellation
- config.cancelToken.promise.then(function onCanceled(cancel) {
- if (req.aborted) return;
- req.abort();
- reject(cancel);
- });
- }
+/***/ }),
+/* 288 */
+/***/ (function(module, exports, __webpack_require__) {
- // Send the request
- if (utils.isStream(data)) {
- data.on('error', function handleStreamError(err) {
- reject(enhanceError(err, config, null, req));
- }).pipe(req);
- } else {
- req.end(data);
- }
- });
-};
+"use strict";
+const pump = __webpack_require__(289);
+const bufferStream = __webpack_require__(293);
-/***/ }),
-/* 200 */
-/***/ (function(module, exports) {
+class MaxBufferError extends Error {
+ constructor() {
+ super('maxBuffer exceeded');
+ this.name = 'MaxBufferError';
+ }
+}
-module.exports = require("http");
+async function getStream(inputStream, options) {
+ if (!inputStream) {
+ return Promise.reject(new Error('Expected a stream'));
+ }
-/***/ }),
-/* 201 */
-/***/ (function(module, exports) {
+ options = {
+ maxBuffer: Infinity,
+ ...options
+ };
-module.exports = require("https");
+ const {maxBuffer} = options;
-/***/ }),
-/* 202 */
-/***/ (function(module, exports, __webpack_require__) {
+ let stream;
+ await new Promise((resolve, reject) => {
+ const rejectPromise = error => {
+ if (error) { // A null check
+ error.bufferedData = stream.getBufferedValue();
+ }
-var url = __webpack_require__(203);
-var URL = url.URL;
-var http = __webpack_require__(200);
-var https = __webpack_require__(201);
-var Writable = __webpack_require__(173).Writable;
-var assert = __webpack_require__(162);
-var debug = __webpack_require__(204);
+ reject(error);
+ };
-// 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);
- };
-});
+ stream = pump(inputStream, bufferStream(options), error => {
+ if (error) {
+ rejectPromise(error);
+ return;
+ }
-// 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"
-);
+ resolve();
+ });
-// 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 = [];
+ stream.on('data', () => {
+ if (stream.getBufferedLength() > maxBuffer) {
+ rejectPromise(new MaxBufferError());
+ }
+ });
+ });
- // Attach a callback if passed
- if (responseCallback) {
- this.on("response", responseCallback);
- }
+ return stream.getBufferedValue();
+}
- // React to responses of native requests
- var self = this;
- this._onNativeResponse = function (response) {
- self._processResponse(response);
- };
+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;
- // Perform the first request
- this._performRequest();
-}
-RedirectableRequest.prototype = Object.create(Writable.prototype);
-RedirectableRequest.prototype.abort = function () {
- abortRequest(this._currentRequest);
- this.emit("abort");
-};
+/***/ }),
+/* 289 */
+/***/ (function(module, exports, __webpack_require__) {
-// 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();
- }
+var once = __webpack_require__(290)
+var eos = __webpack_require__(292)
+var fs = __webpack_require__(253) // we only need fs to get the ReadStream and WriteStream prototypes
- // 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;
- }
+var noop = function () {}
+var ancient = /^v?\.0/.test(process.version)
- // 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 isFn = function (fn) {
+ return typeof fn === 'function'
+}
-// 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 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)
+}
- // 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;
- }
-};
+var isRequest = function (stream) {
+ return stream.setHeader && isFn(stream.abort)
+}
-// 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);
-};
+var destroyer = function (stream, reading, writing, callback) {
+ callback = once(callback)
-// Clears a header value on the current native request
-RedirectableRequest.prototype.removeHeader = function (name) {
- delete this._options.headers[name];
- this._currentRequest.removeHeader(name);
-};
+ var closed = false
+ stream.on('close', function () {
+ closed = true
+ })
-// Global timeout for all underlying requests
-RedirectableRequest.prototype.setTimeout = function (msecs, callback) {
- var self = this;
+ eos(stream, {readable: reading, writable: writing}, function (err) {
+ if (err) return callback(err)
+ closed = true
+ callback()
+ })
- // Destroys the socket on timeout
- function destroyOnTimeout(socket) {
- socket.setTimeout(msecs);
- socket.removeListener("timeout", socket.destroy);
- socket.addListener("timeout", socket.destroy);
+ var destroyed = false
+ return function (err) {
+ if (closed) return
+ if (destroyed) return
+ destroyed = true
+
+ 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
+
+ if (isFn(stream.destroy)) return stream.destroy()
+
+ callback(err || new Error('stream was destroyed'))
}
+}
- // 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);
- }
+var call = function (fn) {
+ fn()
+}
- // Stops a timeout from triggering
- function clearTimer() {
- // Clear the timeout
- if (self._timeout) {
- clearTimeout(self._timeout);
- self._timeout = null;
- }
+var pipe = function (from, to) {
+ return from.pipe(to)
+}
- // 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);
- }
- }
+var pump = function () {
+ var streams = Array.prototype.slice.call(arguments)
+ var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop
- // Attach callback if passed
- if (callback) {
- this.on("timeout", callback);
- }
+ if (Array.isArray(streams[0])) streams = streams[0]
+ if (streams.length < 2) throw new Error('pump requires two streams per minimum')
- // Start the timer if or when the socket is opened
- if (this.socket) {
- startTimer(this.socket);
- }
- else {
- this._currentRequest.once("socket", startTimer);
- }
+ 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)
+ })
+ })
- // Clean up on events
- this.on("socket", destroyOnTimeout);
- this.on("abort", clearTimer);
- this.on("error", clearTimer);
- this.on("response", clearTimer);
+ return streams.reduce(pipe)
+}
- return this;
-};
+module.exports = pump
-// 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);
- };
-});
-// Proxy all public ClientRequest properties
-["aborted", "connection", "socket"].forEach(function (property) {
- Object.defineProperty(RedirectableRequest.prototype, property, {
- get: function () { return this._currentRequest[property]; },
- });
-});
+/***/ }),
+/* 290 */
+/***/ (function(module, exports, __webpack_require__) {
-RedirectableRequest.prototype._sanitizeOptions = function (options) {
- // Ensure headers are always present
- if (!options.headers) {
- options.headers = {};
+var wrappy = __webpack_require__(291)
+module.exports = wrappy(once)
+module.exports.strict = wrappy(onceStrict)
+
+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
+}
- // 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;
+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
+}
- // Complete the URL object when necessary
- if (!options.pathname && options.path) {
- var searchPos = options.path.indexOf("?");
- if (searchPos < 0) {
- options.pathname = options.path;
+
+/***/ }),
+/* 291 */
+/***/ (function(module, exports) {
+
+// Returns a wrapper function that returns a wrapped callback
+// The wrapper function should do some stuff, and return a
+// presumably different callback function.
+// This makes sure that own properties are retained, so that
+// decorations and such are not lost along the way.
+module.exports = wrappy
+function wrappy (fn, cb) {
+ if (fn && cb) return wrappy(fn)(cb)
+
+ if (typeof fn !== 'function')
+ throw new TypeError('need wrapper function')
+
+ Object.keys(fn).forEach(function (k) {
+ wrapper[k] = fn[k]
+ })
+
+ return wrapper
+
+ function wrapper() {
+ var args = new Array(arguments.length)
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i]
}
- else {
- options.pathname = options.path.substring(0, searchPos);
- options.search = options.path.substring(searchPos);
+ var ret = fn.apply(this, args)
+ var cb = args[args.length-1]
+ if (typeof ret === 'function' && ret !== cb) {
+ Object.keys(cb).forEach(function (k) {
+ ret[k] = cb[k]
+ })
}
+ return ret
}
-};
+}
-// 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;
- }
+/***/ }),
+/* 292 */
+/***/ (function(module, exports, __webpack_require__) {
- // 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];
- }
+var once = __webpack_require__(290);
- // Create the native request
- var request = this._currentRequest =
- nativeProtocol.request(this._options, this._onNativeResponse);
- this._currentUrl = url.format(this._options);
+var noop = function() {};
- // Set up event handlers
- request._redirectable = this;
- for (var e = 0; e < events.length; e++) {
- request.on(events[e], eventHandlers[events[e]]);
- }
+var isRequest = function(stream) {
+ return stream.setHeader && typeof stream.abort === 'function';
+};
- // 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();
- }
- }
- }());
- }
+var isChildProcess = function(stream) {
+ return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3
};
-// 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,
- });
- }
+var eos = function(stream, opts, callback) {
+ if (typeof opts === 'function') return eos(stream, null, opts);
+ if (!opts) opts = {};
- // 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.
+ callback = once(callback || noop);
- // 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);
+ 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;
- // Clean up
- this._requestBodyBuffers = [];
- return;
- }
+ var onlegacyfinish = function() {
+ if (!stream.writable) onfinish();
+ };
- // 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();
+ var onfinish = function() {
+ writable = false;
+ if (!readable) callback.call(stream);
+ };
- // 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 onend = function() {
+ readable = false;
+ if (!writable) callback.call(stream);
+ };
- // 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 onexit = function(exitCode) {
+ callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);
+ };
- // Drop the Host header, as the redirect might lead to a different host
- var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);
+ var onerror = function(err) {
+ callback.call(stream, err);
+ };
- // 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 }));
+ var onclose = function() {
+ process.nextTick(onclosenexttick);
+ };
- // Determine the URL of the redirection
- var redirectUrl;
- try {
- redirectUrl = url.resolve(currentUrl, location);
- }
- catch (cause) {
- this.emit("error", new RedirectionError(cause));
- return;
- }
+ 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'));
+ };
- // Create the redirected request
- debug("redirecting to", redirectUrl);
- this._isRedirect = true;
- var redirectUrlParts = url.parse(redirectUrl);
- Object.assign(this._options, redirectUrlParts);
+ var onrequest = function() {
+ stream.req.on('finish', onfinish);
+ };
- // 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);
- }
+ 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);
+ }
- // 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);
- }
+ if (isChildProcess(stream)) stream.on('exit', onexit);
- // Perform the redirected request
- try {
- this._performRequest();
- }
- catch (cause) {
- this.emit("error", new RedirectionError(cause));
- }
+ 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);
+ };
};
-// Wraps the key/value object of protocols with redirect functionality
-function wrap(protocols) {
- // Default settings
- var exports = {
- maxRedirects: 21,
- maxBodyLength: 10 * 1024 * 1024,
- };
+module.exports = eos;
- // 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);
- // 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;
- }
+/***/ }),
+/* 293 */
+/***/ (function(module, exports, __webpack_require__) {
- // Set defaults
- options = Object.assign({
- maxRedirects: exports.maxRedirects,
- maxBodyLength: exports.maxBodyLength,
- }, input, options);
- options.nativeProtocols = nativeProtocols;
+"use strict";
- assert.equal(options.protocol, protocol, "protocol mismatch");
- debug("options", options);
- return new RedirectableRequest(options, callback);
- }
+const {PassThrough: PassThroughStream} = __webpack_require__(294);
- // Executes a GET request, following redirects
- function get(input, options, callback) {
- var wrappedRequest = wrappedProtocol.request(input, options, callback);
- wrappedRequest.end();
- return wrappedRequest;
- }
+module.exports = options => {
+ options = {...options};
- // 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;
-}
+ const {array} = options;
+ let {encoding} = options;
+ const isBuffer = encoding === 'buffer';
+ let objectMode = false;
-/* istanbul ignore next */
-function noop() { /* empty */ }
+ if (array) {
+ objectMode = !(encoding || isBuffer);
+ } else {
+ encoding = encoding || 'utf8';
+ }
-// 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;
-}
+ if (isBuffer) {
+ encoding = null;
+ }
-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();
-}
+ const stream = new PassThroughStream({objectMode});
-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;
-}
+ if (encoding) {
+ stream.setEncoding(encoding);
+ }
-function abortRequest(request) {
- for (var e = 0; e < events.length; e++) {
- request.removeListener(events[e], eventHandlers[events[e]]);
- }
- request.on("error", noop);
- request.abort();
-}
+ let length = 0;
+ const chunks = [];
-function isSubdomain(subdomain, domain) {
- const dot = subdomain.length - domain.length - 1;
- return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
-}
+ stream.on('data', chunk => {
+ chunks.push(chunk);
-// Exports
-module.exports = wrap({ http: http, https: https });
-module.exports.wrap = wrap;
+ 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;
+
+ return stream;
+};
/***/ }),
-/* 203 */
+/* 294 */
/***/ (function(module, exports) {
-module.exports = require("url");
+module.exports = require("stream");
/***/ }),
-/* 204 */
+/* 295 */
/***/ (function(module, exports, __webpack_require__) {
-var debug;
+"use strict";
-module.exports = function () {
- if (!debug) {
- try {
- /* eslint global-require: off */
- debug = __webpack_require__(205)("follow-redirects");
- }
- catch (error) { /* */ }
- if (typeof debug !== "function") {
- debug = function () { /* */ };
+
+const { PassThrough } = __webpack_require__(294);
+
+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
+
+ function add (source) {
+ if (Array.isArray(source)) {
+ source.forEach(add)
+ return this
}
+
+ 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
}
- debug.apply(null, arguments);
-};
+
+ function isEmpty () {
+ return sources.length == 0;
+ }
+
+ function remove (source) {
+ sources = sources.filter(function (it) { return it !== source })
+ if (!sources.length && output.readable) { output.end() }
+ }
+}
/***/ }),
-/* 205 */
+/* 296 */
/***/ (function(module, exports, __webpack_require__) {
-/**
- * Detect Electron renderer process, which is node, but we should
- * treat as a browser.
- */
+"use strict";
+
+
+const nativePromisePrototype = (async () => {})().constructor.prototype;
+const descriptors = ['then', 'catch', 'finally'].map(property => [
+ property,
+ Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property)
+]);
+
+// 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;
+};
+
+// Use promises instead of `child_process` events
+const getSpawnedPromise = spawned => {
+ return new Promise((resolve, reject) => {
+ spawned.on('exit', (exitCode, signal) => {
+ resolve({exitCode, signal});
+ });
+
+ spawned.on('error', error => {
+ reject(error);
+ });
+
+ if (spawned.stdin) {
+ spawned.stdin.on('error', error => {
+ reject(error);
+ });
+ }
+ });
+};
+
+module.exports = {
+ mergePromise,
+ getSpawnedPromise
+};
-if (typeof process !== 'undefined' && process.type === 'renderer') {
- module.exports = __webpack_require__(206);
-} else {
- module.exports = __webpack_require__(209);
-}
/***/ }),
-/* 206 */
+/* 297 */
/***/ (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__(207);
-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();
+const SPACES_REGEXP = / +/g;
-/**
- * Colors.
- */
+const joinCommand = (file, args = []) => {
+ if (!Array.isArray(args)) {
+ return file;
+ }
-exports.colors = [
- 'lightseagreen',
- 'forestgreen',
- 'goldenrod',
- 'dodgerblue',
- 'darkorchid',
- 'crimson'
-];
+ return [file, ...args].join(' ');
+};
-/**
- * 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
- */
+// Allow spaces to be escaped by a backslash if not meant as a delimiter
+const handleEscaping = (tokens, token, index) => {
+ if (index === 0) {
+ return [token];
+ }
-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;
- }
+ const previousToken = tokens[tokens.length - 1];
- // 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 (previousToken.endsWith('\\')) {
+ return [...tokens.slice(0, -1), `${previousToken.slice(0, -1)} ${token}`];
+ }
-/**
- * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
- */
+ return [...tokens, token];
+};
-exports.formatters.j = function(v) {
- try {
- return JSON.stringify(v);
- } catch (err) {
- return '[UnexpectedJSONParseError]: ' + err.message;
- }
+// Handle `execa.command()`
+const parseCommand = command => {
+ return command
+ .trim()
+ .split(SPACES_REGEXP)
+ .reduce(handleEscaping, []);
};
+module.exports = {
+ joinCommand,
+ parseCommand
+};
-/**
- * Colorize log arguments if enabled.
- *
- * @api public
- */
-function formatArgs(args) {
- var useColors = this.useColors;
+/***/ }),
+/* 298 */
+/***/ (function(module, exports, __webpack_require__) {
- args[0] = (useColors ? '%c' : '')
- + this.namespace
- + (useColors ? ' %c' : ' ')
- + args[0]
- + (useColors ? '%c ' : ' ')
- + '+' + exports.humanize(this.diff);
+module.exports = __webpack_require__(299);
- if (!useColors) return;
+/***/ }),
+/* 299 */
+/***/ (function(module, exports, __webpack_require__) {
- var c = 'color: ' + this.color;
- args.splice(1, 0, c, 'color: inherit')
+"use strict";
- // 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);
-}
+var utils = __webpack_require__(300);
+var bind = __webpack_require__(301);
+var Axios = __webpack_require__(302);
+var mergeConfig = __webpack_require__(334);
+var defaults = __webpack_require__(308);
/**
- * Invokes `console.log()` when available.
- * No-op when `console.log` is not a "function".
+ * Create an instance of Axios
*
- * @api public
+ * @param {Object} defaultConfig The default config for the instance
+ * @return {Axios} A new instance of Axios
*/
+function createInstance(defaultConfig) {
+ var context = new Axios(defaultConfig);
+ var instance = bind(Axios.prototype.request, context);
-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);
-}
+ // Copy axios.prototype to instance
+ utils.extend(instance, Axios.prototype, context);
-/**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
+ // Copy context to instance
+ utils.extend(instance, context);
-function save(namespaces) {
- try {
- if (null == namespaces) {
- exports.storage.removeItem('debug');
- } else {
- exports.storage.debug = namespaces;
- }
- } catch(e) {}
+ return instance;
}
-/**
- * Load `namespaces`.
- *
- * @return {String} returns the previously persisted debug modes
- * @api private
- */
+// Create the default instance to be exported
+var axios = createInstance(defaults);
-function load() {
- var r;
- try {
- r = exports.storage.debug;
- } catch(e) {}
+// Expose Axios class to allow class inheritance
+axios.Axios = Axios;
- // 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;
- }
+// Factory for creating new instances
+axios.create = function create(instanceConfig) {
+ return createInstance(mergeConfig(axios.defaults, instanceConfig));
+};
- return r;
-}
+// Expose Cancel & CancelToken
+axios.Cancel = __webpack_require__(335);
+axios.CancelToken = __webpack_require__(336);
+axios.isCancel = __webpack_require__(307);
-/**
- * Enable namespaces listed in `localStorage.debug` initially.
- */
+// Expose all/spread
+axios.all = function all(promises) {
+ return Promise.all(promises);
+};
+axios.spread = __webpack_require__(337);
-exports.enable(load());
+// Expose isAxiosError
+axios.isAxiosError = __webpack_require__(338);
-/**
- * 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
- */
+module.exports = axios;
-function localstorage() {
- try {
- return window.localStorage;
- } catch (e) {}
-}
+// Allow use of default import syntax in TypeScript
+module.exports.default = axios;
/***/ }),
-/* 207 */
+/* 300 */
/***/ (function(module, exports, __webpack_require__) {
+"use strict";
+
+
+var bind = __webpack_require__(301);
+
+/*global toString:true*/
+
+// utils is a library of generic helper functions non-specific to axios
+
+var toString = Object.prototype.toString;
/**
- * This is the common logic for both the Node.js and web browser
- * implementations of `debug()`.
+ * Determine if a value is an Array
*
- * Expose `debug()` as the module.
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an Array, otherwise false
*/
-
-exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
-exports.coerce = coerce;
-exports.disable = disable;
-exports.enable = enable;
-exports.enabled = enabled;
-exports.humanize = __webpack_require__(208);
+function isArray(val) {
+ return toString.call(val) === '[object Array]';
+}
/**
- * The currently active debug mode names, and names to skip.
+ * Determine if a value is undefined
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if the value is undefined, otherwise false
*/
-
-exports.names = [];
-exports.skips = [];
+function isUndefined(val) {
+ return typeof val === 'undefined';
+}
/**
- * Map of special "%n" handling functions, for the debug "format" argument.
+ * Determine if a value is a Buffer
*
- * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Buffer, otherwise false
*/
-
-exports.formatters = {};
+function isBuffer(val) {
+ return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
+ && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);
+}
/**
- * Previous log timestamp.
+ * Determine if a value is an ArrayBuffer
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an ArrayBuffer, otherwise false
*/
-
-var prevTime;
+function isArrayBuffer(val) {
+ return toString.call(val) === '[object ArrayBuffer]';
+}
/**
- * Select a color.
- * @param {String} namespace
- * @return {Number}
- * @api private
+ * Determine if a value is a FormData
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an FormData, otherwise false
*/
+function isFormData(val) {
+ return (typeof FormData !== 'undefined') && (val instanceof FormData);
+}
-function selectColor(namespace) {
- var hash = 0, i;
-
- for (i in namespace) {
- hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
- hash |= 0; // Convert to 32bit integer
+/**
+ * Determine if a value is a view on an ArrayBuffer
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
+ */
+function isArrayBufferView(val) {
+ var result;
+ if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
+ result = ArrayBuffer.isView(val);
+ } else {
+ result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);
}
-
- return exports.colors[Math.abs(hash) % exports.colors.length];
+ return result;
}
/**
- * Create a debugger with the given `namespace`.
+ * Determine if a value is a String
*
- * @param {String} namespace
- * @return {Function}
- * @api public
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a String, otherwise false
*/
+function isString(val) {
+ return typeof val === 'string';
+}
-function createDebug(namespace) {
+/**
+ * Determine if a value is a Number
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Number, otherwise false
+ */
+function isNumber(val) {
+ return typeof val === 'number';
+}
- function debug() {
- // disabled?
- if (!debug.enabled) return;
-
- var self = debug;
-
- // set `diff` timestamp
- var curr = +new Date();
- var ms = curr - (prevTime || curr);
- self.diff = ms;
- self.prev = prevTime;
- self.curr = curr;
- prevTime = curr;
-
- // 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];
- }
-
- args[0] = exports.coerce(args[0]);
-
- if ('string' !== typeof args[0]) {
- // anything else let's inspect with %O
- args.unshift('%O');
- }
-
- // 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);
-
- // now we need to remove `args[index]` since it's inlined in the `format`
- args.splice(index, 1);
- index--;
- }
- return match;
- });
-
- // apply env-specific formatting (colors, etc.)
- exports.formatArgs.call(self, args);
-
- var logFn = debug.log || exports.log || console.log.bind(console);
- logFn.apply(self, args);
- }
-
- debug.namespace = namespace;
- debug.enabled = exports.enabled(namespace);
- debug.useColors = exports.useColors();
- debug.color = selectColor(namespace);
+/**
+ * Determine if a value is an Object
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an Object, otherwise false
+ */
+function isObject(val) {
+ return val !== null && typeof val === 'object';
+}
- // env-specific initialization logic for debug instances
- if ('function' === typeof exports.init) {
- exports.init(debug);
+/**
+ * Determine if a value is a plain Object
+ *
+ * @param {Object} val The value to test
+ * @return {boolean} True if value is a plain Object, otherwise false
+ */
+function isPlainObject(val) {
+ if (toString.call(val) !== '[object Object]') {
+ return false;
}
- return debug;
+ var prototype = Object.getPrototypeOf(val);
+ return prototype === null || prototype === Object.prototype;
}
/**
- * Enables a debug mode by namespaces. This can include modes
- * separated by a colon and wildcards.
+ * Determine if a value is a Date
*
- * @param {String} namespaces
- * @api public
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Date, otherwise false
*/
-
-function enable(namespaces) {
- exports.save(namespaces);
-
- exports.names = [];
- exports.skips = [];
-
- var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
- var len = split.length;
-
- 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 + '$'));
- }
- }
+function isDate(val) {
+ return toString.call(val) === '[object Date]';
}
/**
- * Disable debug output.
+ * Determine if a value is a File
*
- * @api public
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a File, otherwise false
*/
-
-function disable() {
- exports.enable('');
+function isFile(val) {
+ return toString.call(val) === '[object File]';
}
/**
- * Returns true if the given mode name is enabled, false otherwise.
+ * Determine if a value is a Blob
*
- * @param {String} name
- * @return {Boolean}
- * @api public
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Blob, otherwise false
*/
-
-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;
+function isBlob(val) {
+ return toString.call(val) === '[object Blob]';
}
/**
- * Coerce `val`.
+ * Determine if a value is a Function
*
- * @param {Mixed} val
- * @return {Mixed}
- * @api private
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Function, otherwise false
*/
-
-function coerce(val) {
- if (val instanceof Error) return val.stack || val.message;
- return val;
+function isFunction(val) {
+ return toString.call(val) === '[object Function]';
}
-
-/***/ }),
-/* 208 */
-/***/ (function(module, exports) {
+/**
+ * Determine if a value is a Stream
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Stream, otherwise false
+ */
+function isStream(val) {
+ return isObject(val) && isFunction(val.pipe);
+}
/**
- * Helpers.
+ * Determine if a value is a URLSearchParams object
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a URLSearchParams object, otherwise false
*/
+function isURLSearchParams(val) {
+ return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
+}
-var s = 1000;
-var m = s * 60;
-var h = m * 60;
-var d = h * 24;
-var y = d * 365.25;
+/**
+ * Trim excess whitespace off the beginning and end of a string
+ *
+ * @param {String} str The String to trim
+ * @returns {String} The String freed of excess whitespace
+ */
+function trim(str) {
+ return str.replace(/^\s*/, '').replace(/\s*$/, '');
+}
/**
- * Parse or format the given `val`.
+ * Determine if we're running in a standard browser environment
*
- * Options:
+ * This allows axios to run in a web worker, and react-native.
+ * Both environments support XMLHttpRequest, but not fully standard globals.
*
- * - `long` verbose formatting [false]
+ * web workers:
+ * typeof window -> undefined
+ * typeof document -> undefined
*
- * @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
+ * react-native:
+ * navigator.product -> 'ReactNative'
+ * nativescript
+ * navigator.product -> 'NativeScript' or 'NS'
*/
-
-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);
+function isStandardBrowserEnv() {
+ if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||
+ navigator.product === 'NativeScript' ||
+ navigator.product === 'NS')) {
+ return false;
}
- throw new Error(
- 'val is not a non-empty string or a valid number. val=' +
- JSON.stringify(val)
+ return (
+ typeof window !== 'undefined' &&
+ typeof document !== 'undefined'
);
-};
+}
/**
- * Parse the given `str` and return milliseconds.
+ * Iterate over an Array or an Object invoking a function for each item.
*
- * @param {String} str
- * @return {Number}
- * @api private
+ * If `obj` is an Array callback will be called passing
+ * the value, index, and complete array for each item.
+ *
+ * If 'obj' is an Object callback will be called passing
+ * the value, key, and complete object for each property.
+ *
+ * @param {Object|Array} obj The object to iterate
+ * @param {Function} fn The callback to invoke for each item
*/
-
-function parse(str) {
- str = String(str);
- if (str.length > 100) {
+function forEach(obj, fn) {
+ // Don't bother if no value provided
+ if (obj === null || typeof obj === 'undefined') {
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;
+
+ // Force an array if not already something iterable
+ if (typeof obj !== 'object') {
+ /*eslint no-param-reassign:0*/
+ obj = [obj];
}
- 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;
+
+ if (isArray(obj)) {
+ // Iterate over array values
+ for (var i = 0, l = obj.length; i < l; i++) {
+ fn.call(null, obj[i], i, obj);
+ }
+ } else {
+ // Iterate over object keys
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ fn.call(null, obj[key], key, obj);
+ }
+ }
}
}
/**
- * Short format for `ms`.
+ * Accepts varargs expecting each argument to be an object, then
+ * immutably merges the properties of each object and returns result.
*
- * @param {Number} ms
- * @return {String}
- * @api private
+ * When multiple objects contain the same key the later object in
+ * the arguments list will take precedence.
+ *
+ * Example:
+ *
+ * ```js
+ * var result = merge({foo: 123}, {foo: 456});
+ * console.log(result.foo); // outputs 456
+ * ```
+ *
+ * @param {Object} obj1 Object to merge
+ * @returns {Object} Result of all merge properties
*/
-
-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';
+function merge(/* obj1, obj2, obj3, ... */) {
+ var result = {};
+ function assignValue(val, key) {
+ if (isPlainObject(result[key]) && isPlainObject(val)) {
+ result[key] = merge(result[key], val);
+ } else if (isPlainObject(val)) {
+ result[key] = merge({}, val);
+ } else if (isArray(val)) {
+ result[key] = val.slice();
+ } else {
+ result[key] = val;
+ }
}
- if (ms >= s) {
- return Math.round(ms / s) + 's';
+
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ forEach(arguments[i], assignValue);
}
- return ms + 'ms';
+ return result;
}
/**
- * Long format for `ms`.
+ * Extends object a by mutably adding to it the properties of object b.
*
- * @param {Number} ms
- * @return {String}
- * @api private
+ * @param {Object} a The object to be extended
+ * @param {Object} b The object to copy properties from
+ * @param {Object} thisArg The object to bind function to
+ * @return {Object} The resulting value of object a
*/
-
-function fmtLong(ms) {
- return plural(ms, d, 'day') ||
- plural(ms, h, 'hour') ||
- plural(ms, m, 'minute') ||
- plural(ms, s, 'second') ||
- ms + ' ms';
+function extend(a, b, thisArg) {
+ forEach(b, function assignValue(val, key) {
+ if (thisArg && typeof val === 'function') {
+ a[key] = bind(val, thisArg);
+ } else {
+ a[key] = val;
+ }
+ });
+ return a;
}
/**
- * Pluralization helper.
+ * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
+ *
+ * @param {string} content with BOM
+ * @return {string} content value without BOM
*/
-
-function plural(ms, n, name) {
- if (ms < n) {
- return;
- }
- if (ms < n * 1.5) {
- return Math.floor(ms / n) + ' ' + name;
+function stripBOM(content) {
+ if (content.charCodeAt(0) === 0xFEFF) {
+ content = content.slice(1);
}
- return Math.ceil(ms / n) + ' ' + name + 's';
+ return content;
}
+module.exports = {
+ isArray: isArray,
+ isArrayBuffer: isArrayBuffer,
+ isBuffer: isBuffer,
+ isFormData: isFormData,
+ isArrayBufferView: isArrayBufferView,
+ isString: isString,
+ isNumber: isNumber,
+ isObject: isObject,
+ isPlainObject: isPlainObject,
+ isUndefined: isUndefined,
+ isDate: isDate,
+ isFile: isFile,
+ isBlob: isBlob,
+ isFunction: isFunction,
+ isStream: isStream,
+ isURLSearchParams: isURLSearchParams,
+ isStandardBrowserEnv: isStandardBrowserEnv,
+ forEach: forEach,
+ merge: merge,
+ extend: extend,
+ trim: trim,
+ stripBOM: stripBOM
+};
+
/***/ }),
-/* 209 */
+/* 301 */
/***/ (function(module, exports, __webpack_require__) {
-/**
- * Module dependencies.
- */
-
-var tty = __webpack_require__(123);
-var util = __webpack_require__(113);
-
-/**
- * This is the Node.js implementation of `debug()`.
- *
- * Expose `debug()` as the module.
- */
+"use strict";
-exports = module.exports = __webpack_require__(207);
-exports.init = init;
-exports.log = log;
-exports.formatArgs = formatArgs;
-exports.save = save;
-exports.load = load;
-exports.useColors = useColors;
-/**
- * Colors.
- */
+module.exports = function bind(fn, thisArg) {
+ return function wrap() {
+ var args = new Array(arguments.length);
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i];
+ }
+ return fn.apply(thisArg, args);
+ };
+};
-exports.colors = [6, 2, 3, 4, 5, 1];
-/**
- * Build up the default `inspectOpts` object from the environment variables.
- *
- * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
- */
+/***/ }),
+/* 302 */
+/***/ (function(module, exports, __webpack_require__) {
-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() });
+"use strict";
- // 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);
- obj[prop] = val;
- return obj;
-}, {});
+var utils = __webpack_require__(300);
+var buildURL = __webpack_require__(303);
+var InterceptorManager = __webpack_require__(304);
+var dispatchRequest = __webpack_require__(305);
+var mergeConfig = __webpack_require__(334);
/**
- * The file descriptor to write the `debug()` calls to.
- * Set the `DEBUG_FD` env variable to override with another value. i.e.:
+ * Create a new instance of Axios
*
- * $ DEBUG_FD=3 node script.js 3>debug.log
+ * @param {Object} instanceConfig The default config for the instance
*/
-
-var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
-
-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)')()
+function Axios(instanceConfig) {
+ this.defaults = instanceConfig;
+ this.interceptors = {
+ request: new InterceptorManager(),
+ response: new InterceptorManager()
+ };
}
-var stream = 1 === fd ? process.stdout :
- 2 === fd ? process.stderr :
- createWritableStdioStream(fd);
-
/**
- * 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.
+ * Dispatch a request
+ *
+ * @param {Object} config The config specific for this request (merged with this.defaults)
*/
+Axios.prototype.request = function request(config) {
+ /*eslint no-param-reassign:0*/
+ // Allow for axios('example/url'[, config]) a la fetch API
+ if (typeof config === 'string') {
+ config = arguments[1] || {};
+ config.url = arguments[0];
+ } else {
+ config = config || {};
+ }
-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(' ');
-};
+ config = mergeConfig(this.defaults, config);
-/**
- * Map %o to `util.inspect()`, allowing multiple lines if needed.
- */
+ // Set config.method
+ if (config.method) {
+ config.method = config.method.toLowerCase();
+ } else if (this.defaults.method) {
+ config.method = this.defaults.method.toLowerCase();
+ } else {
+ config.method = 'get';
+ }
-exports.formatters.O = function(v) {
- this.inspectOpts.colors = this.useColors;
- return util.inspect(v, this.inspectOpts);
+ // Hook up interceptors middleware
+ var chain = [dispatchRequest, undefined];
+ var promise = Promise.resolve(config);
+
+ this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
+ chain.unshift(interceptor.fulfilled, interceptor.rejected);
+ });
+
+ this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
+ chain.push(interceptor.fulfilled, interceptor.rejected);
+ });
+
+ while (chain.length) {
+ promise = promise.then(chain.shift(), chain.shift());
+ }
+
+ return promise;
};
-/**
- * Adds ANSI color escape codes if enabled.
- *
- * @api public
- */
+Axios.prototype.getUri = function getUri(config) {
+ config = mergeConfig(this.defaults, config);
+ return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, '');
+};
-function formatArgs(args) {
- var name = this.namespace;
- var useColors = this.useColors;
+// Provide aliases for supported request methods
+utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
+ /*eslint func-names:0*/
+ Axios.prototype[method] = function(url, config) {
+ return this.request(mergeConfig(config || {}, {
+ method: method,
+ url: url,
+ data: (config || {}).data
+ }));
+ };
+});
- if (useColors) {
- var c = this.color;
- var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m';
+utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
+ /*eslint func-names:0*/
+ Axios.prototype[method] = function(url, data, config) {
+ return this.request(mergeConfig(config || {}, {
+ method: method,
+ url: url,
+ data: data
+ }));
+ };
+});
- 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];
- }
-}
+module.exports = Axios;
-/**
- * Invokes `util.format()` with the specified arguments and writes to `stream`.
- */
-function log() {
- return stream.write(util.format.apply(util, arguments) + '\n');
-}
+/***/ }),
+/* 303 */
+/***/ (function(module, exports, __webpack_require__) {
-/**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
+"use strict";
-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
- */
+var utils = __webpack_require__(300);
-function load() {
- return process.env.DEBUG;
+function encode(val) {
+ return encodeURIComponent(val).
+ replace(/%3A/gi, ':').
+ replace(/%24/g, '$').
+ replace(/%2C/gi, ',').
+ replace(/%20/g, '+').
+ replace(/%5B/gi, '[').
+ replace(/%5D/gi, ']');
}
/**
- * Copied from `node/src/node.js`.
+ * Build a URL by appending params to the end
*
- * 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.
+ * @param {string} url The base of the url (e.g., http://www.google.com)
+ * @param {object} [params] The params to be appended
+ * @returns {string} The formatted url
*/
+module.exports = function buildURL(url, params, paramsSerializer) {
+ /*eslint no-param-reassign:0*/
+ if (!params) {
+ return url;
+ }
-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';
+ var serializedParams;
+ if (paramsSerializer) {
+ serializedParams = paramsSerializer(params);
+ } else if (utils.isURLSearchParams(params)) {
+ serializedParams = params.toString();
+ } else {
+ var parts = [];
- // 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();
+ utils.forEach(params, function serialize(val, key) {
+ if (val === null || typeof val === 'undefined') {
+ return;
}
- break;
- case 'FILE':
- var fs = __webpack_require__(132);
- stream = new fs.SyncWriteStream(fd, { autoClose: false });
- stream._type = 'fs';
- break;
+ if (utils.isArray(val)) {
+ key = key + '[]';
+ } else {
+ val = [val];
+ }
- case 'PIPE':
- case 'TCP':
- var net = __webpack_require__(210);
- stream = new net.Socket({
- fd: fd,
- readable: false,
- writable: true
+ utils.forEach(val, function parseValue(v) {
+ if (utils.isDate(v)) {
+ v = v.toISOString();
+ } else if (utils.isObject(v)) {
+ v = JSON.stringify(v);
+ }
+ parts.push(encode(key) + '=' + encode(v));
});
+ });
- // 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';
+ serializedParams = parts.join('&');
+ }
- // 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;
+ if (serializedParams) {
+ var hashmarkIndex = url.indexOf('#');
+ if (hashmarkIndex !== -1) {
+ url = url.slice(0, hashmarkIndex);
+ }
- default:
- // Probably an error on in uv_guess_handle()
- throw new Error('Implement me. Unknown stream file type!');
+ url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
}
- // For supporting legacy API we put the FD here.
- stream.fd = fd;
+ return url;
+};
- stream._isStdio = true;
- return stream;
+/***/ }),
+/* 304 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var utils = __webpack_require__(300);
+
+function InterceptorManager() {
+ this.handlers = [];
}
/**
- * Init logic for `debug` instances.
+ * Add a new interceptor to the stack
*
- * Create a new `inspectOpts` object in case `useColors` is set
- * differently for a particular `debug` instance.
+ * @param {Function} fulfilled The function to handle `then` for a `Promise`
+ * @param {Function} rejected The function to handle `reject` for a `Promise`
+ *
+ * @return {Number} An ID used to remove interceptor later
*/
+InterceptorManager.prototype.use = function use(fulfilled, rejected) {
+ this.handlers.push({
+ fulfilled: fulfilled,
+ rejected: rejected
+ });
+ return this.handlers.length - 1;
+};
-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]];
+/**
+ * Remove an interceptor from the stack
+ *
+ * @param {Number} id The ID that was returned by `use`
+ */
+InterceptorManager.prototype.eject = function eject(id) {
+ if (this.handlers[id]) {
+ this.handlers[id] = null;
}
-}
+};
/**
- * Enable namespaces listed in `process.env.DEBUG` initially.
+ * Iterate over all the registered interceptors
+ *
+ * This method is particularly useful for skipping over any
+ * interceptors that may have become `null` calling `eject`.
+ *
+ * @param {Function} fn The function to call for each interceptor
*/
+InterceptorManager.prototype.forEach = function forEach(fn) {
+ utils.forEach(this.handlers, function forEachHandler(h) {
+ if (h !== null) {
+ fn(h);
+ }
+ });
+};
-exports.enable(load());
-
-
-/***/ }),
-/* 210 */
-/***/ (function(module, exports) {
-
-module.exports = require("net");
-
-/***/ }),
-/* 211 */
-/***/ (function(module, exports) {
-
-module.exports = require("zlib");
-
-/***/ }),
-/* 212 */
-/***/ (function(module) {
+module.exports = InterceptorManager;
-module.exports = JSON.parse("{\"name\":\"axios\",\"version\":\"0.21.1\",\"description\":\"Promise based HTTP client for the browser and node.js\",\"main\":\"index.js\",\"scripts\":{\"test\":\"grunt test && bundlesize\",\"start\":\"node ./sandbox/server.js\",\"build\":\"NODE_ENV=production grunt build\",\"preversion\":\"npm test\",\"version\":\"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\",\"postversion\":\"git push && git push --tags\",\"examples\":\"node ./examples/server.js\",\"coveralls\":\"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\",\"fix\":\"eslint --fix lib/**/*.js\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/axios/axios.git\"},\"keywords\":[\"xhr\",\"http\",\"ajax\",\"promise\",\"node\"],\"author\":\"Matt Zabriskie\",\"license\":\"MIT\",\"bugs\":{\"url\":\"https://github.com/axios/axios/issues\"},\"homepage\":\"https://github.com/axios/axios\",\"devDependencies\":{\"bundlesize\":\"^0.17.0\",\"coveralls\":\"^3.0.0\",\"es6-promise\":\"^4.2.4\",\"grunt\":\"^1.0.2\",\"grunt-banner\":\"^0.6.0\",\"grunt-cli\":\"^1.2.0\",\"grunt-contrib-clean\":\"^1.1.0\",\"grunt-contrib-watch\":\"^1.0.0\",\"grunt-eslint\":\"^20.1.0\",\"grunt-karma\":\"^2.0.0\",\"grunt-mocha-test\":\"^0.13.3\",\"grunt-ts\":\"^6.0.0-beta.19\",\"grunt-webpack\":\"^1.0.18\",\"istanbul-instrumenter-loader\":\"^1.0.0\",\"jasmine-core\":\"^2.4.1\",\"karma\":\"^1.3.0\",\"karma-chrome-launcher\":\"^2.2.0\",\"karma-coverage\":\"^1.1.1\",\"karma-firefox-launcher\":\"^1.1.0\",\"karma-jasmine\":\"^1.1.1\",\"karma-jasmine-ajax\":\"^0.1.13\",\"karma-opera-launcher\":\"^1.0.0\",\"karma-safari-launcher\":\"^1.0.0\",\"karma-sauce-launcher\":\"^1.2.0\",\"karma-sinon\":\"^1.0.5\",\"karma-sourcemap-loader\":\"^0.3.7\",\"karma-webpack\":\"^1.7.0\",\"load-grunt-tasks\":\"^3.5.2\",\"minimist\":\"^1.2.0\",\"mocha\":\"^5.2.0\",\"sinon\":\"^4.5.0\",\"typescript\":\"^2.8.1\",\"url-search-params\":\"^0.10.0\",\"webpack\":\"^1.13.1\",\"webpack-dev-server\":\"^1.14.1\"},\"browser\":{\"./lib/adapters/http.js\":\"./lib/adapters/xhr.js\"},\"jsdelivr\":\"dist/axios.min.js\",\"unpkg\":\"dist/axios.min.js\",\"typings\":\"./index.d.ts\",\"dependencies\":{\"follow-redirects\":\"^1.10.0\"},\"bundlesize\":[{\"path\":\"./dist/axios.min.js\",\"threshold\":\"5kB\"}]}");
/***/ }),
-/* 213 */
+/* 305 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var utils = __webpack_require__(179);
+var utils = __webpack_require__(300);
+var transformData = __webpack_require__(306);
+var isCancel = __webpack_require__(307);
+var defaults = __webpack_require__(308);
/**
- * Config-specific merge-function which creates a new config-object
- * by merging two configuration objects together.
+ * Throws a `Cancel` if cancellation has been requested.
+ */
+function throwIfCancellationRequested(config) {
+ if (config.cancelToken) {
+ config.cancelToken.throwIfRequested();
+ }
+}
+
+/**
+ * Dispatch a request to the server using the configured adapter.
*
- * @param {Object} config1
- * @param {Object} config2
- * @returns {Object} New object resulting from merging config2 to config1
+ * @param {object} config The config that is to be used for the request
+ * @returns {Promise} The Promise to be fulfilled
*/
-module.exports = function mergeConfig(config1, config2) {
- // eslint-disable-next-line no-param-reassign
- config2 = config2 || {};
- var config = {};
+module.exports = function dispatchRequest(config) {
+ throwIfCancellationRequested(config);
- var valueFromConfig2Keys = ['url', 'method', 'data'];
- var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];
- var defaultToConfig2Keys = [
- 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',
- 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',
- 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',
- 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',
- 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'
- ];
- var directMergeKeys = ['validateStatus'];
+ // Ensure headers exist
+ config.headers = config.headers || {};
- function getMergedValue(target, source) {
- if (utils.isPlainObject(target) && utils.isPlainObject(source)) {
- return utils.merge(target, source);
- } else if (utils.isPlainObject(source)) {
- return utils.merge({}, source);
- } else if (utils.isArray(source)) {
- return source.slice();
- }
- return source;
- }
+ // Transform request data
+ config.data = transformData(
+ config.data,
+ config.headers,
+ config.transformRequest
+ );
- function mergeDeepProperties(prop) {
- if (!utils.isUndefined(config2[prop])) {
- config[prop] = getMergedValue(config1[prop], config2[prop]);
- } else if (!utils.isUndefined(config1[prop])) {
- config[prop] = getMergedValue(undefined, config1[prop]);
- }
- }
+ // Flatten headers
+ config.headers = utils.merge(
+ config.headers.common || {},
+ config.headers[config.method] || {},
+ config.headers
+ );
- utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {
- if (!utils.isUndefined(config2[prop])) {
- config[prop] = getMergedValue(undefined, config2[prop]);
+ utils.forEach(
+ ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
+ function cleanHeaderConfig(method) {
+ delete config.headers[method];
}
- });
-
- utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);
+ );
- utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {
- if (!utils.isUndefined(config2[prop])) {
- config[prop] = getMergedValue(undefined, config2[prop]);
- } else if (!utils.isUndefined(config1[prop])) {
- config[prop] = getMergedValue(undefined, config1[prop]);
- }
- });
+ var adapter = config.adapter || defaults.adapter;
- utils.forEach(directMergeKeys, function merge(prop) {
- if (prop in config2) {
- config[prop] = getMergedValue(config1[prop], config2[prop]);
- } else if (prop in config1) {
- config[prop] = getMergedValue(undefined, config1[prop]);
- }
- });
+ return adapter(config).then(function onAdapterResolution(response) {
+ throwIfCancellationRequested(config);
- var axiosKeys = valueFromConfig2Keys
- .concat(mergeDeepPropertiesKeys)
- .concat(defaultToConfig2Keys)
- .concat(directMergeKeys);
+ // Transform response data
+ response.data = transformData(
+ response.data,
+ response.headers,
+ config.transformResponse
+ );
- var otherKeys = Object
- .keys(config1)
- .concat(Object.keys(config2))
- .filter(function filterAxiosKeys(key) {
- return axiosKeys.indexOf(key) === -1;
- });
+ return response;
+ }, function onAdapterRejection(reason) {
+ if (!isCancel(reason)) {
+ throwIfCancellationRequested(config);
- utils.forEach(otherKeys, mergeDeepProperties);
+ // Transform response data
+ if (reason && reason.response) {
+ reason.response.data = transformData(
+ reason.response.data,
+ reason.response.headers,
+ config.transformResponse
+ );
+ }
+ }
- return config;
+ return Promise.reject(reason);
+ });
};
/***/ }),
-/* 214 */
+/* 306 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+var utils = __webpack_require__(300);
+
/**
- * A `Cancel` is an object that is thrown when an operation is canceled.
+ * Transform the data for a request or a response
*
- * @class
- * @param {string=} message The message.
+ * @param {Object|String} data The data to be transformed
+ * @param {Array} headers The headers for the request or response
+ * @param {Array|Function} fns A single function or Array of functions
+ * @returns {*} The resulting transformed data
*/
-function Cancel(message) {
- this.message = message;
-}
+module.exports = function transformData(data, headers, fns) {
+ /*eslint no-param-reassign:0*/
+ utils.forEach(fns, function transform(fn) {
+ data = fn(data, headers);
+ });
-Cancel.prototype.toString = function toString() {
- return 'Cancel' + (this.message ? ': ' + this.message : '');
+ return data;
};
-Cancel.prototype.__CANCEL__ = true;
-
-module.exports = Cancel;
-
/***/ }),
-/* 215 */
+/* 307 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var Cancel = __webpack_require__(214);
+module.exports = function isCancel(value) {
+ return !!(value && value.__CANCEL__);
+};
-/**
- * A `CancelToken` is an object that can be used to request cancellation of an operation.
- *
- * @class
- * @param {Function} executor The executor function.
- */
-function CancelToken(executor) {
- if (typeof executor !== 'function') {
- throw new TypeError('executor must be a function.');
- }
- var resolvePromise;
- this.promise = new Promise(function promiseExecutor(resolve) {
- resolvePromise = resolve;
- });
+/***/ }),
+/* 308 */
+/***/ (function(module, exports, __webpack_require__) {
- var token = this;
- executor(function cancel(message) {
- if (token.reason) {
- // Cancellation has already been requested
- return;
- }
+"use strict";
- token.reason = new Cancel(message);
- resolvePromise(token.reason);
- });
-}
-/**
- * Throws a `Cancel` if cancellation has been requested.
- */
-CancelToken.prototype.throwIfRequested = function throwIfRequested() {
- if (this.reason) {
- throw this.reason;
- }
-};
+var utils = __webpack_require__(300);
+var normalizeHeaderName = __webpack_require__(309);
-/**
- * Returns an object that contains a new `CancelToken` and a function that, when called,
- * cancels the `CancelToken`.
- */
-CancelToken.source = function source() {
- var cancel;
- var token = new CancelToken(function executor(c) {
- cancel = c;
- });
- return {
- token: token,
- cancel: cancel
- };
+var DEFAULT_CONTENT_TYPE = {
+ 'Content-Type': 'application/x-www-form-urlencoded'
};
-module.exports = CancelToken;
-
-
-/***/ }),
-/* 216 */
-/***/ (function(module, exports, __webpack_require__) {
+function setContentTypeIfUnset(headers, value) {
+ if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
+ headers['Content-Type'] = value;
+ }
+}
-"use strict";
+function getDefaultAdapter() {
+ var adapter;
+ if (typeof XMLHttpRequest !== 'undefined') {
+ // For browsers use XHR adapter
+ adapter = __webpack_require__(310);
+ } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {
+ // For node use HTTP adapter
+ adapter = __webpack_require__(320);
+ }
+ return adapter;
+}
+var defaults = {
+ adapter: getDefaultAdapter(),
-/**
- * Syntactic sugar for invoking a function and expanding an array for arguments.
- *
- * Common use case would be to use `Function.prototype.apply`.
- *
- * ```js
- * function f(x, y, z) {}
- * var args = [1, 2, 3];
- * f.apply(null, args);
- * ```
- *
- * With `spread` this example can be re-written.
- *
- * ```js
- * spread(function(x, y, z) {})([1, 2, 3]);
- * ```
- *
- * @param {Function} callback
- * @returns {Function}
- */
-module.exports = function spread(callback) {
- return function wrap(arr) {
- return callback.apply(null, arr);
- };
-};
+ transformRequest: [function transformRequest(data, headers) {
+ normalizeHeaderName(headers, 'Accept');
+ normalizeHeaderName(headers, 'Content-Type');
+ if (utils.isFormData(data) ||
+ utils.isArrayBuffer(data) ||
+ utils.isBuffer(data) ||
+ utils.isStream(data) ||
+ utils.isFile(data) ||
+ utils.isBlob(data)
+ ) {
+ return data;
+ }
+ if (utils.isArrayBufferView(data)) {
+ return data.buffer;
+ }
+ if (utils.isURLSearchParams(data)) {
+ setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
+ return data.toString();
+ }
+ if (utils.isObject(data)) {
+ setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
+ return JSON.stringify(data);
+ }
+ return data;
+ }],
+ transformResponse: [function transformResponse(data) {
+ /*eslint no-param-reassign:0*/
+ if (typeof data === 'string') {
+ try {
+ data = JSON.parse(data);
+ } catch (e) { /* Ignore */ }
+ }
+ return data;
+ }],
-/***/ }),
-/* 217 */
-/***/ (function(module, exports, __webpack_require__) {
+ /**
+ * A timeout in milliseconds to abort a request. If set to 0 (default) a
+ * timeout is not created.
+ */
+ timeout: 0,
-"use strict";
+ xsrfCookieName: 'XSRF-TOKEN',
+ xsrfHeaderName: 'X-XSRF-TOKEN',
+ maxContentLength: -1,
+ maxBodyLength: -1,
-/**
- * Determines whether the payload is an error thrown by Axios
- *
- * @param {*} payload The value to test
- * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
- */
-module.exports = function isAxiosError(payload) {
- return (typeof payload === 'object') && (payload.isAxiosError === true);
+ validateStatus: function validateStatus(status) {
+ return status >= 200 && status < 300;
+ }
};
+defaults.headers = {
+ common: {
+ 'Accept': 'application/json, text/plain, */*'
+ }
+};
-/***/ }),
-/* 218 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
- value: true
+utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
+ defaults.headers[method] = {};
});
-exports.parseConfig = parseConfig;
-
-/*
- * 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.
- */
-/**
- * Information about how CiStatsReporter should talk to the ci-stats service. Normally
- * it is read from a JSON environment variable using the `parseConfig()` function
- * exported by this module.
- */
-function validateConfig(log, config) {
- const validApiToken = typeof config.apiToken === 'string' && config.apiToken.length !== 0;
+utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
+ defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
+});
- if (!validApiToken) {
- log.warning('KIBANA_CI_STATS_CONFIG is missing a valid api token, stats will not be reported');
- return;
- }
+module.exports = defaults;
- const validId = typeof config.buildId === 'string' && config.buildId.length !== 0;
- if (!validId) {
- log.warning('KIBANA_CI_STATS_CONFIG is missing a valid build id, stats will not be reported');
- return;
- }
+/***/ }),
+/* 309 */
+/***/ (function(module, exports, __webpack_require__) {
- return config;
-}
+"use strict";
-function parseConfig(log) {
- const configJson = process.env.KIBANA_CI_STATS_CONFIG;
- if (!configJson) {
- log.debug('KIBANA_CI_STATS_CONFIG environment variable not found, disabling CiStatsReporter');
- return;
- }
+var utils = __webpack_require__(300);
- let config;
+module.exports = function normalizeHeaderName(headers, normalizedName) {
+ utils.forEach(headers, function processHeader(value, name) {
+ if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
+ headers[normalizedName] = value;
+ delete headers[name];
+ }
+ });
+};
- try {
- config = JSON.parse(configJson);
- } catch (_) {// handled below
- }
- if (typeof config === 'object' && config !== null) {
- return validateConfig(log, config);
- }
+/***/ }),
+/* 310 */
+/***/ (function(module, exports, __webpack_require__) {
- log.warning('KIBANA_CI_STATS_CONFIG is invalid, stats will not be reported');
- return;
-}
+"use strict";
-/***/ }),
-/* 219 */
-/***/ (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 = 219;
+var utils = __webpack_require__(300);
+var settle = __webpack_require__(311);
+var cookies = __webpack_require__(314);
+var buildURL = __webpack_require__(303);
+var buildFullPath = __webpack_require__(315);
+var parseHeaders = __webpack_require__(318);
+var isURLSameOrigin = __webpack_require__(319);
+var createError = __webpack_require__(312);
-/***/ }),
-/* 220 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+module.exports = function xhrAdapter(config) {
+ return new Promise(function dispatchXhrRequest(resolve, reject) {
+ var requestData = config.data;
+ var requestHeaders = config.headers;
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Log", function() { return Log; });
-/* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
-/* 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__);
-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; }
+ if (utils.isFormData(requestData)) {
+ delete requestHeaders['Content-Type']; // Let the browser set it
+ }
-/*
- * 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.
- */
+ var request = new XMLHttpRequest();
+ // HTTP basic authentication
+ if (config.auth) {
+ var username = config.auth.username || '';
+ var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';
+ requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
+ }
-class Log extends _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__["ToolingLog"] {
- constructor() {
- super();
+ var fullPath = buildFullPath(config.baseURL, config.url);
+ request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
- _defineProperty(this, "logLevel", void 0);
+ // Set the request timeout in MS
+ request.timeout = config.timeout;
- this.setLogLevel('info');
- }
+ // Listen for ready state
+ request.onreadystatechange = function handleLoad() {
+ if (!request || request.readyState !== 4) {
+ return;
+ }
- 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"]({
- level: this.logLevel.name,
- writeTo: process.stdout
- })]);
- }
+ // The request errored out and we didn't get a response, this will be
+ // handled by onerror instead
+ // With one exception: request that using file: protocol, most browsers
+ // will return status as 0 even though it's a successful request
+ if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
+ return;
+ }
- wouldLogLevel(level) {
- return this.logLevel.flags[level];
- }
+ // Prepare the response
+ var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
+ var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;
+ var response = {
+ data: responseData,
+ status: request.status,
+ statusText: request.statusText,
+ headers: responseHeaders,
+ config: config,
+ request: request
+ };
-}
+ settle(resolve, reject, response);
-const log = new Log();
+ // Clean up request
+ request = null;
+ };
+ // Handle browser request cancellation (as opposed to a manual cancellation)
+ request.onabort = function handleAbort() {
+ if (!request) {
+ return;
+ }
-/***/ }),
-/* 221 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ reject(createError('Request aborted', config, 'ECONNABORTED', request));
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "spawn", function() { return spawn; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "spawnStreaming", function() { return spawnStreaming; });
-/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(173);
-/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(stream__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(114);
-/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(134);
-/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(execa__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(222);
-/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(220);
-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; }
+ // Clean up request
+ request = null;
+ };
-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; }
+ // Handle low level network errors
+ request.onerror = function handleError() {
+ // Real errors are hidden from us by the browser
+ // onerror should only fire if it's a network error
+ reject(createError('Network Error', config, null, request));
-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; }
+ // Clean up request
+ request = null;
+ };
-/*
- * 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.
- */
+ // Handle timeout
+ request.ontimeout = function handleTimeout() {
+ var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';
+ if (config.timeoutErrorMessage) {
+ timeoutErrorMessage = config.timeoutErrorMessage;
+ }
+ reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',
+ request));
+ // Clean up request
+ request = null;
+ };
+ // Add xsrf header
+ // This is only done if running in a standard browser environment.
+ // Specifically not if we're in a web worker, or react-native.
+ if (utils.isStandardBrowserEnv()) {
+ // Add xsrf header
+ var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?
+ cookies.read(config.xsrfCookieName) :
+ undefined;
+ if (xsrfValue) {
+ requestHeaders[config.xsrfHeaderName] = xsrfValue;
+ }
+ }
+ // Add headers to the request
+ if ('setRequestHeader' in request) {
+ utils.forEach(requestHeaders, function setRequestHeader(val, key) {
+ if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
+ // Remove Content-Type if data is undefined
+ delete requestHeaders[key];
+ } else {
+ // Otherwise add header to the request
+ request.setRequestHeader(key, val);
+ }
+ });
+ }
-const colorWheel = [chalk__WEBPACK_IMPORTED_MODULE_1___default.a.cyan, chalk__WEBPACK_IMPORTED_MODULE_1___default.a.magenta, chalk__WEBPACK_IMPORTED_MODULE_1___default.a.blue, chalk__WEBPACK_IMPORTED_MODULE_1___default.a.yellow, chalk__WEBPACK_IMPORTED_MODULE_1___default.a.green];
+ // Add withCredentials to request if needed
+ if (!utils.isUndefined(config.withCredentials)) {
+ request.withCredentials = !!config.withCredentials;
+ }
-const getColor = () => {
- const color = colorWheel.shift();
- colorWheel.push(color);
- return color;
-};
+ // Add responseType to request if needed
+ if (config.responseType) {
+ try {
+ request.responseType = config.responseType;
+ } catch (e) {
+ // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.
+ // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.
+ if (config.responseType !== 'json') {
+ throw e;
+ }
+ }
+ }
-function spawn(command, args, opts) {
- return execa__WEBPACK_IMPORTED_MODULE_2___default()(command, args, _objectSpread({
- stdio: 'inherit',
- preferLocal: true
- }, opts));
-}
+ // Handle progress if needed
+ if (typeof config.onDownloadProgress === 'function') {
+ request.addEventListener('progress', config.onDownloadProgress);
+ }
-function streamToLog(debug = true) {
- return new stream__WEBPACK_IMPORTED_MODULE_0__["Writable"]({
- objectMode: true,
+ // Not all browsers support upload events
+ if (typeof config.onUploadProgress === 'function' && request.upload) {
+ request.upload.addEventListener('progress', config.onUploadProgress);
+ }
- write(line, _, cb) {
- if (line.endsWith('\n')) {
- _log__WEBPACK_IMPORTED_MODULE_4__["log"][debug ? 'debug' : 'write'](line.slice(0, -1));
- } else {
- _log__WEBPACK_IMPORTED_MODULE_4__["log"][debug ? 'debug' : 'write'](line);
- }
+ if (config.cancelToken) {
+ // Handle cancellation
+ config.cancelToken.promise.then(function onCanceled(cancel) {
+ if (!request) {
+ return;
+ }
- cb();
+ request.abort();
+ reject(cancel);
+ // Clean up request
+ request = null;
+ });
}
- });
-}
+ if (!requestData) {
+ requestData = null;
+ }
-function spawnStreaming(command, args, opts, {
- prefix,
- debug
-}) {
- const spawned = execa__WEBPACK_IMPORTED_MODULE_2___default()(command, args, _objectSpread({
- stdio: ['ignore', 'pipe', 'pipe'],
- preferLocal: true
- }, opts));
- const color = getColor();
- const prefixedStdout = strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default()({
- tag: color.bold(prefix)
- });
- const prefixedStderr = strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default()({
- mergeMultiline: true,
- tag: color.bold(prefix)
+ // Send the request
+ request.send(requestData);
});
- spawned.stdout.pipe(prefixedStdout).pipe(streamToLog(debug)); // TypeScript note: As long as the proc stdio[1] is 'pipe', then stdout will not be null
-
- spawned.stderr.pipe(prefixedStderr).pipe(streamToLog(debug)); // TypeScript note: As long as the proc stdio[2] is 'pipe', then stderr will not be null
+};
- return spawned;
-}
/***/ }),
-/* 222 */
+/* 311 */
/***/ (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
+"use strict";
-module.exports = __webpack_require__(223);
-module.exports.cli = __webpack_require__(227);
+
+var createError = __webpack_require__(312);
+
+/**
+ * Resolve or reject a Promise based on response status.
+ *
+ * @param {Function} resolve A function that resolves the promise.
+ * @param {Function} reject A function that rejects the promise.
+ * @param {object} response The response.
+ */
+module.exports = function settle(resolve, reject, response) {
+ var validateStatus = response.config.validateStatus;
+ if (!response.status || !validateStatus || validateStatus(response.status)) {
+ resolve(response);
+ } else {
+ reject(createError(
+ 'Request failed with status code ' + response.status,
+ response.config,
+ null,
+ response.request,
+ response
+ ));
+ }
+};
/***/ }),
-/* 223 */
+/* 312 */
/***/ (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__(173);
-var util = __webpack_require__(113);
-var fs = __webpack_require__(132);
-var through = __webpack_require__(224);
-var duplexer = __webpack_require__(225);
-var StringDecoder = __webpack_require__(226).StringDecoder;
-module.exports = Logger;
+var enhanceError = __webpack_require__(313);
-Logger.DEFAULTS = {
- format: 'text',
- tag: '',
- mergeMultiline: false,
- timeStamp: false,
+/**
+ * Create an Error with the specified message, config, error code, request and response.
+ *
+ * @param {string} message The error message.
+ * @param {Object} config The config.
+ * @param {string} [code] The error code (for example, 'ECONNABORTED').
+ * @param {Object} [request] The request.
+ * @param {Object} [response] The response.
+ * @returns {Error} The created error.
+ */
+module.exports = function createError(message, config, code, request, response) {
+ var error = new Error(message);
+ return enhanceError(error, config, code, request, response);
};
-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(),
- ];
+/***/ }),
+/* 313 */
+/***/ (function(module, exports, __webpack_require__) {
- if (options.tag) {
- transforms.push(staticTagger(options.tag));
- }
+"use strict";
- if (options.mergeMultiline) {
- transforms.push(lineMerger());
- }
- // TODO
- // if (options.pidStamp) {
- // transforms.push(pidStamper(options.pid));
- // }
+/**
+ * Update an Error with the specified config, error code, and response.
+ *
+ * @param {Error} error The error to update.
+ * @param {Object} config The config.
+ * @param {string} [code] The error code (for example, 'ECONNABORTED').
+ * @param {Object} [request] The request.
+ * @param {Object} [response] The response.
+ * @returns {Error} The error.
+ */
+module.exports = function enhanceError(error, config, code, request, response) {
+ error.config = config;
+ if (code) {
+ error.code = code;
+ }
- // TODO
- // if (options.workerStamp) {
- // transforms.push(workerStamper(options.worker));
- // }
+ error.request = request;
+ error.response = response;
+ error.isAxiosError = true;
- transforms.push(formatters[options.format](options));
+ error.toJSON = function toJSON() {
+ return {
+ // Standard
+ message: this.message,
+ name: this.name,
+ // Microsoft
+ description: this.description,
+ number: this.number,
+ // Mozilla
+ fileName: this.fileName,
+ lineNumber: this.lineNumber,
+ columnNumber: this.columnNumber,
+ stack: this.stack,
+ // Axios
+ config: this.config,
+ code: this.code
+ };
+ };
+ return error;
+};
- // restore line endings that were removed by line splitting
- transforms.push(reLiner());
- for (var t in transforms) {
- emitter = emitter.pipe(transforms[t]);
- }
+/***/ }),
+/* 314 */
+/***/ (function(module, exports, __webpack_require__) {
- return duplexer(catcher, emitter);
-}
+"use strict";
-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();
- },
- });
-}
+var utils = __webpack_require__(300);
-function reLiner() {
- return through(appendNewline);
+module.exports = (
+ utils.isStandardBrowserEnv() ?
- function appendNewline(line) {
- this.emit('data', line + '\n');
- }
-}
+ // Standard browser envs support document.cookie
+ (function standardBrowserEnv() {
+ return {
+ write: function write(name, value, expires, path, domain, secure) {
+ var cookie = [];
+ cookie.push(name + '=' + encodeURIComponent(value));
-function objectifier() {
- return through(objectify, null, {autoDestroy: false});
+ if (utils.isNumber(expires)) {
+ cookie.push('expires=' + new Date(expires).toGMTString());
+ }
- function objectify(line) {
- this.emit('data', {
- msg: line,
- time: Date.now(),
- });
- }
-}
+ if (utils.isString(path)) {
+ cookie.push('path=' + path);
+ }
-function staticTagger(tag) {
- return through(tagger);
+ if (utils.isString(domain)) {
+ cookie.push('domain=' + domain);
+ }
- function tagger(logEvent) {
- logEvent.tag = tag;
- this.emit('data', logEvent);
- }
-}
+ if (secure === true) {
+ cookie.push('secure');
+ }
-function textFormatter(options) {
- return through(textify);
+ document.cookie = cookie.join('; ');
+ },
- 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'));
- }
+ read: function read(name) {
+ var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
+ return (match ? decodeURIComponent(match[3]) : null);
+ },
- 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;
- }
-}
+ remove: function remove(name) {
+ this.write(name, '', Date.now() - 86400000);
+ }
+ };
+ })() :
-function jsonFormatter(options) {
- return through(jsonify);
+ // Non standard browser env (web workers, react-native) lack needed support.
+ (function nonStandardBrowserEnv() {
+ return {
+ write: function write() {},
+ read: function read() { return null; },
+ remove: function remove() {}
+ };
+ })()
+);
- 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);
+/***/ }),
+/* 315 */
+/***/ (function(module, exports, __webpack_require__) {
- return stream;
+"use strict";
- 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;
- }
- }
+var isAbsoluteURL = __webpack_require__(316);
+var combineURLs = __webpack_require__(317);
- function lineMergerEnd() {
- flush.call(this);
- this.emit('end');
+/**
+ * Creates a new URL by combining the baseURL with the requestedURL,
+ * only when the requestedURL is not already an absolute URL.
+ * If the requestURL is absolute, this function returns the requestedURL untouched.
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} requestedURL Absolute or relative URL to combine
+ * @returns {string} The combined full path
+ */
+module.exports = function buildFullPath(baseURL, requestedURL) {
+ if (baseURL && !isAbsoluteURL(requestedURL)) {
+ return combineURLs(baseURL, requestedURL);
}
-}
+ return requestedURL;
+};
/***/ }),
-/* 224 */
+/* 316 */
/***/ (function(module, exports, __webpack_require__) {
-var Stream = __webpack_require__(173)
+"use strict";
-// 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
+/**
+ * Determines whether the specified URL is absolute
+ *
+ * @param {string} url The URL to test
+ * @returns {boolean} True if the specified URL is absolute, otherwise false
+ */
+module.exports = function isAbsoluteURL(url) {
+ // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL).
+ // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
+ // by any combination of letters, digits, plus, period, or hyphen.
+ return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
+};
-//create a readable writable stream.
-function through (write, end, opts) {
- write = write || function (data) { this.queue(data) }
- end = end || function () { this.queue(null) }
+/***/ }),
+/* 317 */
+/***/ (function(module, exports, __webpack_require__) {
- var ended = false, destroyed = false, buffer = [], _ended = false
- var stream = new Stream()
- stream.readable = stream.writable = true
- stream.paused = false
+"use strict";
-// stream.autoPause = !(opts && opts.autoPause === false)
- stream.autoDestroy = !(opts && opts.autoDestroy === false)
- stream.write = function (data) {
- write.call(this, data)
- return !stream.paused
- }
+/**
+ * Creates a new URL by combining the specified URLs
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} relativeURL The relative URL
+ * @returns {string} The combined URL
+ */
+module.exports = function combineURLs(baseURL, relativeURL) {
+ return relativeURL
+ ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
+ : baseURL;
+};
- 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
- }
+/***/ }),
+/* 318 */
+/***/ (function(module, exports, __webpack_require__) {
- //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'
+"use strict";
- 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()
- }
+var utils = __webpack_require__(300);
- stream.end = function (data) {
- if(ended) return
- ended = true
- if(arguments.length) stream.write(data)
- _end() // will emit or queue
- return stream
- }
+// Headers whose duplicates are ignored by node
+// c.f. https://nodejs.org/api/http.html#http_message_headers
+var ignoreDuplicateOf = [
+ 'age', 'authorization', 'content-length', 'content-type', 'etag',
+ 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
+ 'last-modified', 'location', 'max-forwards', 'proxy-authorization',
+ 'referer', 'retry-after', 'user-agent'
+];
- stream.destroy = function () {
- if(destroyed) return
- destroyed = true
- ended = true
- buffer.length = 0
- stream.writable = stream.readable = false
- stream.emit('close')
- return stream
- }
+/**
+ * Parse headers into an object
+ *
+ * ```
+ * Date: Wed, 27 Aug 2014 08:58:49 GMT
+ * Content-Type: application/json
+ * Connection: keep-alive
+ * Transfer-Encoding: chunked
+ * ```
+ *
+ * @param {String} headers Headers needing to be parsed
+ * @returns {Object} Headers parsed into an object
+ */
+module.exports = function parseHeaders(headers) {
+ var parsed = {};
+ var key;
+ var val;
+ var i;
- stream.pause = function () {
- if(stream.paused) return
- stream.paused = true
- return stream
- }
+ if (!headers) { return parsed; }
- stream.resume = function () {
- if(stream.paused) {
- stream.paused = false
- stream.emit('resume')
+ utils.forEach(headers.split('\n'), function parser(line) {
+ i = line.indexOf(':');
+ key = utils.trim(line.substr(0, i)).toLowerCase();
+ val = utils.trim(line.substr(i + 1));
+
+ if (key) {
+ if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
+ return;
+ }
+ if (key === 'set-cookie') {
+ parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);
+ } else {
+ parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
+ }
}
- drain()
- //may have become paused again,
- //as drain emits 'data'.
- if(!stream.paused)
- stream.emit('drain')
- return stream
- }
- return stream
-}
+ });
+ return parsed;
+};
/***/ }),
-/* 225 */
+/* 319 */
/***/ (function(module, exports, __webpack_require__) {
-var Stream = __webpack_require__(173)
-var writeMethods = ["write", "end", "destroy"]
-var readMethods = ["resume", "pause"]
-var readEvents = ["data", "close"]
-var slice = Array.prototype.slice
+"use strict";
-module.exports = duplex
-function forEach (arr, fn) {
- if (arr.forEach) {
- return arr.forEach(fn)
- }
+var utils = __webpack_require__(300);
- for (var i = 0; i < arr.length; i++) {
- fn(arr[i], i)
- }
-}
+module.exports = (
+ utils.isStandardBrowserEnv() ?
-function duplex(writer, reader) {
- var stream = new Stream()
- var ended = false
+ // Standard browser envs have full support of the APIs needed to test
+ // whether the request URL is of the same origin as current location.
+ (function standardBrowserEnv() {
+ var msie = /(msie|trident)/i.test(navigator.userAgent);
+ var urlParsingNode = document.createElement('a');
+ var originURL;
- forEach(writeMethods, proxyWriter)
+ /**
+ * Parse a URL to discover it's components
+ *
+ * @param {String} url The URL to be parsed
+ * @returns {Object}
+ */
+ function resolveURL(url) {
+ var href = url;
- forEach(readMethods, proxyReader)
+ if (msie) {
+ // IE needs attribute set twice to normalize properties
+ urlParsingNode.setAttribute('href', href);
+ href = urlParsingNode.href;
+ }
- forEach(readEvents, proxyStream)
+ urlParsingNode.setAttribute('href', href);
- reader.on("end", handleEnd)
+ // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
+ return {
+ href: urlParsingNode.href,
+ protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
+ host: urlParsingNode.host,
+ search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
+ hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
+ hostname: urlParsingNode.hostname,
+ port: urlParsingNode.port,
+ pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
+ urlParsingNode.pathname :
+ '/' + urlParsingNode.pathname
+ };
+ }
- writer.on("drain", function() {
- stream.emit("drain")
- })
+ originURL = resolveURL(window.location.href);
- writer.on("error", reemit)
- reader.on("error", reemit)
+ /**
+ * Determine if a URL shares the same origin as the current location
+ *
+ * @param {String} requestURL The URL to test
+ * @returns {boolean} True if URL shares the same origin, otherwise false
+ */
+ return function isURLSameOrigin(requestURL) {
+ var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
+ return (parsed.protocol === originURL.protocol &&
+ parsed.host === originURL.host);
+ };
+ })() :
- stream.writable = writer.writable
- stream.readable = reader.readable
+ // Non standard browser envs (web workers, react-native) lack needed support.
+ (function nonStandardBrowserEnv() {
+ return function isURLSameOrigin() {
+ return true;
+ };
+ })()
+);
- return stream
- function proxyWriter(methodName) {
- stream[methodName] = method
+/***/ }),
+/* 320 */
+/***/ (function(module, exports, __webpack_require__) {
- function method() {
- return writer[methodName].apply(writer, arguments)
- }
- }
+"use strict";
- 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)
- }
- }
+var utils = __webpack_require__(300);
+var settle = __webpack_require__(311);
+var buildFullPath = __webpack_require__(315);
+var buildURL = __webpack_require__(303);
+var http = __webpack_require__(321);
+var https = __webpack_require__(322);
+var httpFollow = __webpack_require__(323).http;
+var httpsFollow = __webpack_require__(323).https;
+var url = __webpack_require__(324);
+var zlib = __webpack_require__(332);
+var pkg = __webpack_require__(333);
+var createError = __webpack_require__(312);
+var enhanceError = __webpack_require__(313);
- function proxyStream(methodName) {
- reader.on(methodName, reemit)
+var isHttps = /https:?/;
- function reemit() {
- var args = slice.call(arguments)
- args.unshift(methodName)
- stream.emit.apply(stream, args)
- }
- }
+/**
+ *
+ * @param {http.ClientRequestArgs} options
+ * @param {AxiosProxyConfig} proxy
+ * @param {string} location
+ */
+function setProxy(options, proxy, location) {
+ options.hostname = proxy.host;
+ options.host = proxy.host;
+ options.port = proxy.port;
+ options.path = location;
- function handleEnd() {
- if (ended) {
- return
- }
- ended = true
- var args = slice.call(arguments)
- args.unshift("end")
- stream.emit.apply(stream, args)
- }
+ // Basic proxy authorization
+ if (proxy.auth) {
+ var base64 = Buffer.from(proxy.auth.username + ':' + proxy.auth.password, 'utf8').toString('base64');
+ options.headers['Proxy-Authorization'] = 'Basic ' + base64;
+ }
- function reemit(err) {
- stream.emit("error", err)
- }
+ // If a proxy is used, any redirects must also pass through the proxy
+ options.beforeRedirect = function beforeRedirect(redirection) {
+ redirection.headers.host = redirection.host;
+ setProxy(redirection, proxy, redirection.href);
+ };
}
+/*eslint consistent-return:0*/
+module.exports = function httpAdapter(config) {
+ return new Promise(function dispatchHttpRequest(resolvePromise, rejectPromise) {
+ var resolve = function resolve(value) {
+ resolvePromise(value);
+ };
+ var reject = function reject(value) {
+ rejectPromise(value);
+ };
+ var data = config.data;
+ var headers = config.headers;
-/***/ }),
-/* 226 */
-/***/ (function(module, exports) {
-
-module.exports = require("string_decoder");
+ // Set User-Agent (required by some servers)
+ // Only set header if it hasn't been set in config
+ // See https://github.com/axios/axios/issues/69
+ if (!headers['User-Agent'] && !headers['user-agent']) {
+ headers['User-Agent'] = 'axios/' + pkg.version;
+ }
-/***/ }),
-/* 227 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (data && !utils.isStream(data)) {
+ if (Buffer.isBuffer(data)) {
+ // Nothing to do...
+ } else if (utils.isArrayBuffer(data)) {
+ data = Buffer.from(new Uint8Array(data));
+ } else if (utils.isString(data)) {
+ data = Buffer.from(data, 'utf-8');
+ } else {
+ return reject(createError(
+ 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',
+ config
+ ));
+ }
-"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
+ // Add Content-Length header if data exists
+ headers['Content-Length'] = data.length;
+ }
+ // HTTP basic authentication
+ var auth = undefined;
+ if (config.auth) {
+ var username = config.auth.username || '';
+ var password = config.auth.password || '';
+ auth = username + ':' + password;
+ }
+ // Parse url
+ var fullPath = buildFullPath(config.baseURL, config.url);
+ var parsed = url.parse(fullPath);
+ var protocol = parsed.protocol || 'http:';
-var minimist = __webpack_require__(228);
-var path = __webpack_require__(4);
+ if (!auth && parsed.auth) {
+ var urlAuth = parsed.auth.split(':');
+ var urlUsername = urlAuth[0] || '';
+ var urlPassword = urlAuth[1] || '';
+ auth = urlUsername + ':' + urlPassword;
+ }
-var Logger = __webpack_require__(223);
-var pkg = __webpack_require__(229);
+ if (auth) {
+ delete headers.Authorization;
+ }
-module.exports = cli;
+ var isHttpsRequest = isHttps.test(protocol);
+ var agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;
-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);
- }
-}
+ var options = {
+ path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''),
+ method: config.method.toUpperCase(),
+ headers: headers,
+ agent: agent,
+ agents: { http: config.httpAgent, https: config.httpsAgent },
+ auth: auth
+ };
-function version($0, p) {
- p('%s v%s', pkg.name, pkg.version);
-}
+ if (config.socketPath) {
+ options.socketPath = config.socketPath;
+ } else {
+ options.hostname = parsed.hostname;
+ options.port = parsed.port;
+ }
-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('');
+ var proxy = config.proxy;
+ if (!proxy && proxy !== false) {
+ var proxyEnv = protocol.slice(0, -1) + '_proxy';
+ var proxyUrl = process.env[proxyEnv] || process.env[proxyEnv.toUpperCase()];
+ if (proxyUrl) {
+ var parsedProxyUrl = url.parse(proxyUrl);
+ var noProxyEnv = process.env.no_proxy || process.env.NO_PROXY;
+ var shouldProxy = true;
- function boolOpt(name, def) {
- name = name + PADDING.slice(0, 20-name.length);
- p(' --%s default: %s', name, def);
- }
+ if (noProxyEnv) {
+ var noProxy = noProxyEnv.split(',').map(function trim(s) {
+ return s.trim();
+ });
- function stdOpt(name, def) {
- var value = name.toUpperCase() +
- PADDING.slice(0, 19 - name.length*2);
- p(' --%s %s default: %j', name, value, def);
- }
-}
+ shouldProxy = !noProxy.some(function proxyMatch(proxyElement) {
+ if (!proxyElement) {
+ return false;
+ }
+ if (proxyElement === '*') {
+ return true;
+ }
+ if (proxyElement[0] === '.' &&
+ parsed.hostname.substr(parsed.hostname.length - proxyElement.length) === proxyElement) {
+ return true;
+ }
+ return parsed.hostname === proxyElement;
+ });
+ }
-/***/ }),
-/* 228 */
-/***/ (function(module, exports) {
+ if (shouldProxy) {
+ proxy = {
+ host: parsedProxyUrl.hostname,
+ port: parsedProxyUrl.port,
+ protocol: parsedProxyUrl.protocol
+ };
-module.exports = function (args, opts) {
- if (!opts) opts = {};
-
- var flags = { bools : {}, strings : {}, unknownFn: null };
+ if (parsedProxyUrl.auth) {
+ var proxyUrlAuth = parsedProxyUrl.auth.split(':');
+ proxy.auth = {
+ username: proxyUrlAuth[0],
+ password: proxyUrlAuth[1]
+ };
+ }
+ }
+ }
+ }
- if (typeof opts['unknown'] === 'function') {
- flags.unknownFn = opts['unknown'];
+ if (proxy) {
+ options.headers.host = parsed.hostname + (parsed.port ? ':' + parsed.port : '');
+ setProxy(options, proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);
}
- if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
- flags.allBools = true;
+ var transport;
+ var isHttpsProxy = isHttpsRequest && (proxy ? isHttps.test(proxy.protocol) : true);
+ if (config.transport) {
+ transport = config.transport;
+ } else if (config.maxRedirects === 0) {
+ transport = isHttpsProxy ? https : http;
} else {
- [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
- flags.bools[key] = true;
- });
+ if (config.maxRedirects) {
+ options.maxRedirects = config.maxRedirects;
+ }
+ transport = isHttpsProxy ? httpsFollow : httpFollow;
}
-
- 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;
- }));
- });
- });
- [].concat(opts.string).filter(Boolean).forEach(function (key) {
- flags.strings[key] = true;
- if (aliases[key]) {
- flags.strings[aliases[key]] = true;
- }
- });
+ if (config.maxBodyLength > -1) {
+ options.maxBodyLength = config.maxBodyLength;
+ }
- var defaults = opts['default'] || {};
-
- var argv = { _ : [] };
- Object.keys(flags.bools).forEach(function (key) {
- setArg(key, defaults[key] === undefined ? false : defaults[key]);
- });
-
- var notFlags = [];
+ // Create the request
+ var req = transport.request(options, function handleResponse(res) {
+ if (req.aborted) return;
- if (args.indexOf('--') !== -1) {
- notFlags = args.slice(args.indexOf('--')+1);
- args = args.slice(0, args.indexOf('--'));
- }
+ // uncompress the response body transparently if required
+ var stream = res;
- function argDefined(key, arg) {
- return (flags.allBools && /^--[^=]+$/.test(arg)) ||
- flags.strings[key] || flags.bools[key] || aliases[key];
- }
+ // return the last request in case of redirects
+ var lastRequest = res.req || req;
- function setArg (key, val, arg) {
- if (arg && flags.unknownFn && !argDefined(key, arg)) {
- if (flags.unknownFn(arg) === false) return;
- }
- 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);
- });
- }
+ // if no content, is HEAD request or decompress disabled we should not decompress
+ if (res.statusCode !== 204 && lastRequest.method !== 'HEAD' && config.decompress !== false) {
+ switch (res.headers['content-encoding']) {
+ /*eslint default-case:0*/
+ case 'gzip':
+ case 'compress':
+ case 'deflate':
+ // add the unzipper to the body stream processing pipeline
+ stream = stream.pipe(zlib.createUnzip());
- 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];
+ // remove the content-encoding in order to not confuse downstream operations
+ delete res.headers['content-encoding'];
+ break;
}
+ }
- 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];
- });
- }
+ var response = {
+ status: res.statusCode,
+ statusText: res.statusMessage,
+ headers: res.headers,
+ config: config,
+ request: lastRequest
+ };
- 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);
+ if (config.responseType === 'stream') {
+ response.data = stream;
+ settle(resolve, reject, response);
+ } else {
+ var responseBuffer = [];
+ stream.on('data', function handleStreamData(chunk) {
+ responseBuffer.push(chunk);
+
+ // make sure the content length is not over the maxContentLength if specified
+ if (config.maxContentLength > -1 && Buffer.concat(responseBuffer).length > config.maxContentLength) {
+ stream.destroy();
+ reject(createError('maxContentLength size of ' + config.maxContentLength + ' exceeded',
+ config, null, lastRequest));
+ }
});
- }
- else {
- notFlags.forEach(function(key) {
- argv._.push(key);
+
+ stream.on('error', function handleStreamError(err) {
+ if (req.aborted) return;
+ reject(enhanceError(err, config, null, lastRequest));
});
- }
- return argv;
-};
+ stream.on('end', function handleStreamEnd() {
+ var responseData = Buffer.concat(responseBuffer);
+ if (config.responseType !== 'arraybuffer') {
+ responseData = responseData.toString(config.responseEncoding);
+ if (!config.responseEncoding || config.responseEncoding === 'utf8') {
+ responseData = utils.stripBOM(responseData);
+ }
+ }
-function hasKey (obj, keys) {
- var o = obj;
- keys.slice(0,-1).forEach(function (key) {
- o = (o[key] || {});
+ response.data = responseData;
+ settle(resolve, reject, response);
+ });
+ }
});
- var key = keys[keys.length - 1];
- return key in o;
-}
-
-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);
-}
-
+ // Handle errors
+ req.on('error', function handleRequestError(err) {
+ if (req.aborted && err.code !== 'ERR_FR_TOO_MANY_REDIRECTS') return;
+ reject(enhanceError(err, config, null, req));
+ });
-function isConstructorOrProto (obj, key) {
- return key === 'constructor' && typeof obj[key] === 'function' || key === '__proto__';
-}
+ // Handle request timeout
+ if (config.timeout) {
+ // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.
+ // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET.
+ // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.
+ // And then these socket which be hang up will devoring CPU little by little.
+ // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.
+ req.setTimeout(config.timeout, function handleRequestTimeout() {
+ req.abort();
+ reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', req));
+ });
+ }
+ if (config.cancelToken) {
+ // Handle cancellation
+ config.cancelToken.promise.then(function onCanceled(cancel) {
+ if (req.aborted) return;
-/***/ }),
-/* 229 */
-/***/ (function(module) {
+ req.abort();
+ reject(cancel);
+ });
+ }
-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\"}}");
+ // Send the request
+ if (utils.isStream(data)) {
+ data.on('error', function handleStreamError(err) {
+ reject(enhanceError(err, config, null, req));
+ }).pipe(req);
+ } else {
+ req.end(data);
+ }
+ });
+};
-/***/ }),
-/* 230 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "linkProjectExecutables", function() { return linkProjectExecutables; });
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(231);
-/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(220);
-/*
- * 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.
- */
+/***/ }),
+/* 321 */
+/***/ (function(module, exports) {
+module.exports = require("http");
+/***/ }),
+/* 322 */
+/***/ (function(module, exports) {
+module.exports = require("https");
-/**
- * Yarn does not link the executables from dependencies that are installed
- * using `link:` https://github.com/yarnpkg/yarn/pull/5046
- *
- * We simulate this functionality by walking through each project's project
- * dependencies, and manually linking their executables if defined. The logic
- * for linking was mostly adapted from lerna: https://github.com/lerna/lerna/blob/1d7eb9eeff65d5a7de64dea73613b1bf6bfa8d57/src/PackageUtilities.js#L348
- */
-async function linkProjectExecutables(projectsByName, projectGraph) {
- _log__WEBPACK_IMPORTED_MODULE_2__["log"].debug(`Linking package executables`); // Find root and generate executables from dependencies for it
+/***/ }),
+/* 323 */
+/***/ (function(module, exports, __webpack_require__) {
- let rootProject = null;
- let rootProjectDeps = [];
+var url = __webpack_require__(324);
+var URL = url.URL;
+var http = __webpack_require__(321);
+var https = __webpack_require__(322);
+var Writable = __webpack_require__(294).Writable;
+var assert = __webpack_require__(283);
+var debug = __webpack_require__(325);
- for (const [projectName, projectDeps] of projectGraph) {
- const project = projectsByName.get(projectName);
+// 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);
+ };
+});
- if (project.isSinglePackageJsonProject) {
- rootProject = projectsByName.get(projectName);
- rootProjectDeps = projectDeps;
- break;
- }
- }
+// 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 (!rootProject) {
- throw new Error('Could not finding root project while linking package executables');
- } // Prepare root project node_modules/.bin
+// 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 = [];
+ // Attach a callback if passed
+ if (responseCallback) {
+ this.on("response", responseCallback);
+ }
- const rootBinsDir = Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootProject.nodeModulesLocation, '.bin');
+ // React to responses of native requests
+ var self = this;
+ this._onNativeResponse = function (response) {
+ self._processResponse(response);
+ };
- for (const rootProjectDep of rootProjectDeps) {
- const executables = rootProjectDep.getExecutables();
+ // Perform the first request
+ this._performRequest();
+}
+RedirectableRequest.prototype = Object.create(Writable.prototype);
- for (const name of Object.keys(executables)) {
- const srcPath = executables[name]; // existing logic from lerna -- ensure that the bin we are going to
- // point to exists or ignore it
+RedirectableRequest.prototype.abort = function () {
+ abortRequest(this._currentRequest);
+ this.emit("abort");
+};
- if (!(await Object(_fs__WEBPACK_IMPORTED_MODULE_1__["isFile"])(srcPath))) {
- continue;
- }
+// 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 dest = Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootBinsDir, name); // Get relative project path with normalized path separators.
+ // 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;
+ }
- const rootProjectRelativePath = Object(path__WEBPACK_IMPORTED_MODULE_0__["relative"])(rootProject.path, srcPath).split(path__WEBPACK_IMPORTED_MODULE_0__["sep"]).join('/');
- _log__WEBPACK_IMPORTED_MODULE_2__["log"].debug(`[${rootProject.name}] ${name} -> ${rootProjectRelativePath}`);
- await Object(_fs__WEBPACK_IMPORTED_MODULE_1__["mkdirp"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["dirname"])(dest));
- await Object(_fs__WEBPACK_IMPORTED_MODULE_1__["createSymlink"])(srcPath, dest, 'exec');
- await Object(_fs__WEBPACK_IMPORTED_MODULE_1__["chmod"])(dest, '755');
+ // 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;
}
-}
-
-/***/ }),
-/* 231 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readFile", function() { return readFile; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "writeFile", function() { return writeFile; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "chmod", function() { return chmod; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mkdirp", function() { return mkdirp; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rmdirp", function() { return rmdirp; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unlink", function() { return unlink; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyDirectory", function() { return copyDirectory; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSymlink", function() { return isSymlink; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDirectory", function() { return isDirectory; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFile", function() { return isFile; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createSymlink", function() { return createSymlink; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryRealpath", function() { return tryRealpath; });
-/* harmony import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(232);
-/* harmony import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cmd_shim__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(240);
-/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(132);
-/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var ncp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(339);
-/* harmony import */ var ncp__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(ncp__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_4__);
-/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(113);
-/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_5__);
-/*
- * 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.
- */
+ // 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();
+ }
+};
+// 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;
+ }
+ // 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;
+ }
+};
+// 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);
+};
+// Clears a header value on the current native request
+RedirectableRequest.prototype.removeHeader = function (name) {
+ delete this._options.headers[name];
+ this._currentRequest.removeHeader(name);
+};
+// Global timeout for all underlying requests
+RedirectableRequest.prototype.setTimeout = function (msecs, callback) {
+ var self = this;
-const lstat = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.lstat);
-const readFile = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.readFile);
-const writeFile = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.writeFile);
-const symlink = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.symlink);
-const chmod = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.chmod);
-const cmdShim = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(cmd_shim__WEBPACK_IMPORTED_MODULE_0___default.a);
-const mkdir = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.mkdir);
-const realpathNative = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.realpath.native);
-const mkdirp = async path => await mkdir(path, {
- recursive: true
-});
-const rmdirp = async path => await del__WEBPACK_IMPORTED_MODULE_1___default()(path, {
- force: true
-});
-const unlink = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.unlink);
-const copyDirectory = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(ncp__WEBPACK_IMPORTED_MODULE_3__["ncp"]);
+ // Destroys the socket on timeout
+ function destroyOnTimeout(socket) {
+ socket.setTimeout(msecs);
+ socket.removeListener("timeout", socket.destroy);
+ socket.addListener("timeout", socket.destroy);
+ }
-async function statTest(path, block) {
- try {
- return block(await lstat(path));
- } catch (e) {
- if (e.code === 'ENOENT') {
- return false;
+ // Sets up a timer to trigger a timeout event
+ function startTimer(socket) {
+ if (self._timeout) {
+ clearTimeout(self._timeout);
}
-
- throw e;
+ self._timeout = setTimeout(function () {
+ self.emit("timeout");
+ clearTimer();
+ }, msecs);
+ destroyOnTimeout(socket);
}
-}
-/**
- * Test if a path points to a symlink.
- * @param path
- */
-
-
-async function isSymlink(path) {
- return await statTest(path, stats => stats.isSymbolicLink());
-}
-/**
- * Test if a path points to a directory.
- * @param path
- */
-
-async function isDirectory(path) {
- return await statTest(path, stats => stats.isDirectory());
-}
-/**
- * Test if a path points to a regular file.
- * @param path
- */
-async function isFile(path) {
- return await statTest(path, stats => stats.isFile());
-}
-/**
- * Create a symlink at dest that points to src. Adapted from
- * https://github.com/lerna/lerna/blob/2f1b87d9e2295f587e4ac74269f714271d8ed428/src/FileSystemUtilities.js#L103.
- *
- * @param src
- * @param dest
- * @param type 'dir', 'file', 'junction', or 'exec'. 'exec' on
- * windows will use the `cmd-shim` module since symlinks can't be used
- * for executable files on windows.
- */
-
-async function createSymlink(src, dest, type) {
- if (process.platform === 'win32') {
- if (type === 'exec') {
- await cmdShim(src, dest);
- } else {
- await forceCreate(src, dest, type);
+ // Stops a timeout from triggering
+ function clearTimer() {
+ // Clear the timeout
+ if (self._timeout) {
+ clearTimeout(self._timeout);
+ self._timeout = null;
}
- } else {
- const posixType = type === 'exec' ? 'file' : type;
- const relativeSource = Object(path__WEBPACK_IMPORTED_MODULE_4__["relative"])(Object(path__WEBPACK_IMPORTED_MODULE_4__["dirname"])(dest), src);
- await forceCreate(relativeSource, dest, posixType);
- }
-}
-async function forceCreate(src, dest, type) {
- try {
- // If something exists at `dest` we need to remove it first.
- await unlink(dest);
- } catch (error) {
- if (error.code !== 'ENOENT') {
- throw error;
+ // 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);
}
}
- await symlink(src, dest, type);
-}
-
-async function tryRealpath(path) {
- let calculatedPath = path;
+ // Attach callback if passed
+ if (callback) {
+ this.on("timeout", callback);
+ }
- try {
- calculatedPath = await realpathNative(path);
- } catch (error) {
- if (error.code !== 'ENOENT') {
- throw error;
- }
+ // Start the timer if or when the socket is opened
+ if (this.socket) {
+ startTimer(this.socket);
+ }
+ else {
+ this._currentRequest.once("socket", startTimer);
}
- return calculatedPath;
-}
+ // Clean up on events
+ this.on("socket", destroyOnTimeout);
+ this.on("abort", clearTimer);
+ this.on("error", clearTimer);
+ this.on("response", clearTimer);
-/***/ }),
-/* 232 */
-/***/ (function(module, exports, __webpack_require__) {
+ return this;
+};
-// On windows, create a .cmd file.
-// Read the #! in the file to see what it uses. The vast majority
-// of the time, this will be either:
-// "#!/usr/bin/env "
-// or:
-// "#! "
-//
-// Write a binroot/pkg.bin + ".cmd" file that has this line in it:
-// @ %~dp0 %*
+// 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);
+ };
+});
-module.exports = cmdShim
-cmdShim.ifExists = cmdShimIfExists
+// Proxy all public ClientRequest properties
+["aborted", "connection", "socket"].forEach(function (property) {
+ Object.defineProperty(RedirectableRequest.prototype, property, {
+ get: function () { return this._currentRequest[property]; },
+ });
+});
-var fs = __webpack_require__(233)
+RedirectableRequest.prototype._sanitizeOptions = function (options) {
+ // Ensure headers are always present
+ if (!options.headers) {
+ options.headers = {};
+ }
-var mkdir = __webpack_require__(238)
- , path = __webpack_require__(4)
- , toBatchSyntax = __webpack_require__(239)
- , shebangExpr = /^#\!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+=[^ \t]+\s+)*\s*([^ \t]+)(.*)$/
+ // 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;
+ }
-function cmdShimIfExists (from, to, cb) {
- fs.stat(from, function (er) {
- if (er) return cb()
- cmdShim(from, to, cb)
- })
-}
+ // 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);
+ }
+ }
+};
-// Try to unlink, but ignore errors.
-// Any problems will surface later.
-function rm (path, cb) {
- fs.unlink(path, function(er) {
- cb()
- })
-}
-function cmdShim (from, to, cb) {
- fs.stat(from, function (er, stat) {
- if (er)
- return cb(er)
+// 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;
+ }
- cmdShim_(from, to, 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 cmdShim_ (from, to, cb) {
- var then = times(2, next, cb)
- rm(to, then)
- rm(to + ".cmd", then)
+ // Create the native request
+ var request = this._currentRequest =
+ nativeProtocol.request(this._options, this._onNativeResponse);
+ this._currentUrl = url.format(this._options);
- function next(er) {
- writeShim(from, to, cb)
+ // Set up event handlers
+ request._redirectable = this;
+ for (var e = 0; e < events.length; e++) {
+ request.on(events[e], eventHandlers[events[e]]);
}
-}
-function writeShim (from, to, cb) {
- // make a cmd file and a sh script
- // First, check if the bin is a #! of some sort.
- // If not, then assume it's something that'll be compiled, or some other
- // sort of script, and just call it directly.
- mkdir(path.dirname(to), function (er) {
- if (er)
- return cb(er)
- fs.readFile(from, "utf8", function (er, data) {
- if (er) return writeShim_(from, to, null, null, cb)
- var firstLine = data.trim().split(/\r*\n/)[0]
- , shebang = firstLine.match(shebangExpr)
- if (!shebang) return writeShim_(from, to, null, null, null, cb)
- var vars = shebang[1] || ""
- , prog = shebang[2]
- , args = shebang[3] || ""
- return writeShim_(from, to, prog, args, vars, cb)
- })
- })
-}
-
-
-function writeShim_ (from, to, prog, args, variables, cb) {
- var shTarget = path.relative(path.dirname(to), from)
- , target = shTarget.split("/").join("\\")
- , longProg
- , shProg = prog && prog.split("\\").join("/")
- , shLongProg
- , pwshProg = shProg && "\"" + shProg + "$exe\""
- , pwshLongProg
- shTarget = shTarget.split("\\").join("/")
- args = args || ""
- variables = variables || ""
- if (!prog) {
- prog = "\"%~dp0\\" + target + "\""
- shProg = "\"$basedir/" + shTarget + "\""
- pwshProg = shProg
- args = ""
- target = ""
- shTarget = ""
- } else {
- longProg = "\"%~dp0\\" + prog + ".exe\""
- shLongProg = "\"$basedir/" + prog + "\""
- pwshLongProg = "\"$basedir/" + prog + "$exe\""
- target = "\"%~dp0\\" + target + "\""
- shTarget = "\"$basedir/" + shTarget + "\""
+ // 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();
+ }
+ }
+ }());
}
+};
- // @SETLOCAL
- //
- // @IF EXIST "%~dp0\node.exe" (
- // @SET "_prog=%~dp0\node.exe"
- // ) ELSE (
- // @SET "_prog=node"
- // @SET PATHEXT=%PATHEXT:;.JS;=;%
- // )
- //
- // "%_prog%" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
- // @ENDLOCAL
- var cmd
- if (longProg) {
- shLongProg = shLongProg.trim();
- args = args.trim();
- var variableDeclarationsAsBatch = toBatchSyntax.convertToSetCommands(variables)
- cmd = "@SETLOCAL\r\n"
- + variableDeclarationsAsBatch
- + "\r\n"
- + "@IF EXIST " + longProg + " (\r\n"
- + " @SET \"_prog=" + longProg.replace(/(^")|("$)/g, '') + "\"\r\n"
- + ") ELSE (\r\n"
- + " @SET \"_prog=" + prog.replace(/(^")|("$)/g, '') + "\"\r\n"
- + " @SET PATHEXT=%PATHEXT:;.JS;=;%\r\n"
- + ")\r\n"
- + "\r\n"
- + "\"%_prog%\" " + args + " " + target + " %*\r\n"
- + '@ENDLOCAL\r\n'
- } else {
- cmd = "@" + prog + " " + args + " " + target + " %*\r\n"
+// 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,
+ });
}
- // #!/bin/sh
- // basedir=`dirname "$0"`
- //
- // case `uname` in
- // *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
- // esac
- //
- // if [ -x "$basedir/node.exe" ]; then
- // "$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
- // ret=$?
- // else
- // node "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
- // ret=$?
- // fi
- // exit $ret
-
- var sh = "#!/bin/sh\n"
+ // 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.
- sh = sh
- + "basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\,/,g')\")\n"
- + "\n"
- + "case `uname` in\n"
- + " *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w \"$basedir\"`;;\n"
- + "esac\n"
- + "\n"
+ // 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);
- if (shLongProg) {
- sh = sh
- + "if [ -x "+shLongProg+" ]; then\n"
- + " " + variables + shLongProg + " " + args + " " + shTarget + " \"$@\"\n"
- + " ret=$?\n"
- + "else \n"
- + " " + variables + shProg + " " + args + " " + shTarget + " \"$@\"\n"
- + " ret=$?\n"
- + "fi\n"
- + "exit $ret\n"
- } else {
- sh = sh
- + shProg + " " + args + " " + shTarget + " \"$@\"\n"
- + "exit $?\n"
+ // Clean up
+ this._requestBodyBuffers = [];
+ return;
}
- // #!/usr/bin/env pwsh
- // $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
- //
- // $ret=0
- // $exe = ""
- // if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
- // # Fix case when both the Windows and Linux builds of Node
- // # are installed in the same directory
- // $exe = ".exe"
- // }
- // if (Test-Path "$basedir/node") {
- // & "$basedir/node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args
- // $ret=$LASTEXITCODE
- // } else {
- // & "node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args
- // $ret=$LASTEXITCODE
- // }
- // exit $ret
- var pwsh = "#!/usr/bin/env pwsh\n"
- + "$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n"
- + "\n"
- + "$exe=\"\"\n"
- + "if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n"
- + " # Fix case when both the Windows and Linux builds of Node\n"
- + " # are installed in the same directory\n"
- + " $exe=\".exe\"\n"
- + "}\n"
- if (shLongProg) {
- pwsh = pwsh
- + "$ret=0\n"
- + "if (Test-Path " + pwshLongProg + ") {\n"
- + " & " + pwshLongProg + " " + args + " " + shTarget + " $args\n"
- + " $ret=$LASTEXITCODE\n"
- + "} else {\n"
- + " & " + pwshProg + " " + args + " " + shTarget + " $args\n"
- + " $ret=$LASTEXITCODE\n"
- + "}\n"
- + "exit $ret\n"
- } else {
- pwsh = pwsh
- + "& " + pwshProg + " " + args + " " + shTarget + " $args\n"
- + "exit $LASTEXITCODE\n"
- }
+ // 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();
- var then = times(3, next, cb)
- fs.writeFile(to + ".ps1", pwsh, "utf8", then)
- fs.writeFile(to + ".cmd", cmd, "utf8", then)
- fs.writeFile(to, sh, "utf8", then)
- function next () {
- chmodShim(to, cb)
+ // 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;
}
-}
-function chmodShim (to, cb) {
- var then = times(2, cb, cb)
- fs.chmod(to, "0755", then)
- fs.chmod(to + ".cmd", "0755", then)
- fs.chmod(to + ".ps1", "0755", then)
-}
-
-function times(n, ok, cb) {
- var errState = null
- return function(er) {
- if (!errState) {
- if (er)
- cb(errState = er)
- else if (--n === 0)
- ok()
- }
+ // 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);
}
-}
-
-/***/ }),
-/* 233 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var fs = __webpack_require__(132)
-var polyfills = __webpack_require__(234)
-var legacy = __webpack_require__(236)
-var clone = __webpack_require__(237)
+ // Drop the Host header, as the redirect might lead to a different host
+ var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);
-var util = __webpack_require__(113)
+ // 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 }));
-/* istanbul ignore next - node 0.x polyfill */
-var gracefulQueue
-var previousSymbol
+ // Determine the URL of the redirection
+ var redirectUrl;
+ try {
+ redirectUrl = url.resolve(currentUrl, location);
+ }
+ catch (cause) {
+ this.emit("error", new RedirectionError(cause));
+ return;
+ }
-/* 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'
-}
+ // Create the redirected request
+ debug("redirecting to", redirectUrl);
+ this._isRedirect = true;
+ var redirectUrlParts = url.parse(redirectUrl);
+ Object.assign(this._options, redirectUrlParts);
-function noop () {}
+ // 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);
+ }
-function publishQueue(context, queue) {
- Object.defineProperty(context, gracefulQueue, {
- get: function() {
- return queue
+ // 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);
+ }
-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)
+ // Perform the redirected request
+ try {
+ this._performRequest();
+ }
+ catch (cause) {
+ this.emit("error", new RedirectionError(cause));
}
+};
-// Once time initialization
-if (!fs[gracefulQueue]) {
- // This queue can be shared by multiple loaded instances
- var queue = global[gracefulQueue] || []
- publishQueue(fs, queue)
+// Wraps the key/value object of protocols with redirect functionality
+function wrap(protocols) {
+ // Default settings
+ var exports = {
+ maxRedirects: 21,
+ maxBodyLength: 10 * 1024 * 1024,
+ };
- // 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()
+ // 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);
+
+ // 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;
+ }
- if (typeof cb === 'function')
- cb.apply(this, arguments)
- })
- }
+ // Set defaults
+ options = Object.assign({
+ maxRedirects: exports.maxRedirects,
+ maxBodyLength: exports.maxBodyLength,
+ }, input, options);
+ options.nativeProtocols = nativeProtocols;
- Object.defineProperty(close, previousSymbol, {
- value: fs$close
- })
- return close
- })(fs.close)
+ assert.equal(options.protocol, protocol, "protocol mismatch");
+ debug("options", options);
+ return new RedirectableRequest(options, callback);
+ }
- fs.closeSync = (function (fs$closeSync) {
- function closeSync (fd) {
- // This function uses the graceful-fs shared queue
- fs$closeSync.apply(fs, arguments)
- retry()
+ // Executes a GET request, following redirects
+ function get(input, options, callback) {
+ var wrappedRequest = wrappedProtocol.request(input, options, callback);
+ wrappedRequest.end();
+ return wrappedRequest;
}
- Object.defineProperty(closeSync, previousSymbol, {
- value: fs$closeSync
- })
- return closeSync
- })(fs.closeSync)
+ // 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;
+}
- if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) {
- process.on('exit', function() {
- debug(fs[gracefulQueue])
- __webpack_require__(162).equal(fs[gracefulQueue].length, 0)
- })
+/* 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;
}
-if (!global[gracefulQueue]) {
- publishQueue(global, fs[gracefulQueue]);
+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();
}
-module.exports = patch(clone(fs))
-if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {
- module.exports = patch(fs)
- fs.__patched = true;
+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 patch (fs) {
- // Everything that references the open() function needs to be in here
- polyfills(fs)
- fs.gracefulify = patch
+function abortRequest(request) {
+ for (var e = 0; e < events.length; e++) {
+ request.removeListener(events[e], eventHandlers[events[e]]);
+ }
+ request.on("error", noop);
+ request.abort();
+}
- 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
+function isSubdomain(subdomain, domain) {
+ const dot = subdomain.length - domain.length - 1;
+ return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
+}
- return go$readFile(path, options, cb)
+// Exports
+module.exports = wrap({ http: http, https: https });
+module.exports.wrap = wrap;
- 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()
- }
- })
- }
- }
-
- 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)
+/***/ }),
+/* 324 */
+/***/ (function(module, exports) {
- 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()
- }
- })
- }
- }
+module.exports = require("url");
- 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
+/***/ }),
+/* 325 */
+/***/ (function(module, exports, __webpack_require__) {
- return go$appendFile(path, data, options, cb)
+var debug;
- 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()
- }
- })
+module.exports = function () {
+ if (!debug) {
+ try {
+ /* eslint global-require: off */
+ debug = __webpack_require__(326)("follow-redirects");
+ }
+ catch (error) { /* */ }
+ if (typeof debug !== "function") {
+ debug = function () { /* */ };
}
}
+ debug.apply(null, arguments);
+};
- 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)
- return go$readdir(args)
+/***/ }),
+/* 326 */
+/***/ (function(module, exports, __webpack_require__) {
- function go$readdir$cb (err, files) {
- if (files && files.sort)
- files.sort()
+/**
+ * Detect Electron renderer process, which is node, but we should
+ * treat as a browser.
+ */
- if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
- enqueue([go$readdir, [args]])
+if (typeof process !== 'undefined' && process.type === 'renderer') {
+ module.exports = __webpack_require__(327);
+} else {
+ module.exports = __webpack_require__(330);
+}
- else {
- if (typeof cb === 'function')
- cb.apply(this, arguments)
- retry()
- }
- }
- }
- function go$readdir (args) {
- return fs$readdir.apply(fs, args)
- }
+/***/ }),
+/* 327 */
+/***/ (function(module, exports, __webpack_require__) {
- if (process.version.substr(0, 4) === 'v0.8') {
- var legStreams = legacy(fs)
- ReadStream = legStreams.ReadStream
- WriteStream = legStreams.WriteStream
- }
+/**
+ * This is the web browser implementation of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
- var fs$ReadStream = fs.ReadStream
- if (fs$ReadStream) {
- ReadStream.prototype = Object.create(fs$ReadStream.prototype)
- ReadStream.prototype.open = ReadStream$open
- }
+exports = module.exports = __webpack_require__(328);
+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();
- var fs$WriteStream = fs.WriteStream
- if (fs$WriteStream) {
- WriteStream.prototype = Object.create(fs$WriteStream.prototype)
- WriteStream.prototype.open = WriteStream$open
- }
+/**
+ * Colors.
+ */
- 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
- })
+exports.colors = [
+ 'lightseagreen',
+ 'forestgreen',
+ 'goldenrod',
+ 'dodgerblue',
+ 'darkorchid',
+ 'crimson'
+];
- // 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
- })
+/**
+ * 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
+ */
- 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 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;
}
- function ReadStream$open () {
- var that = this
- open(that.path, that.flags, that.mode, function (err, fd) {
- if (err) {
- if (that.autoClose)
- that.destroy()
+ // 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+)/));
+}
- that.emit('error', err)
- } else {
- that.fd = fd
- that.emit('open', fd)
- that.read()
- }
- })
- }
+/**
+ * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
+ */
- function WriteStream (path, options) {
- if (this instanceof WriteStream)
- return fs$WriteStream.apply(this, arguments), this
- else
- return WriteStream.apply(Object.create(WriteStream.prototype), arguments)
+exports.formatters.j = function(v) {
+ try {
+ return JSON.stringify(v);
+ } catch (err) {
+ return '[UnexpectedJSONParseError]: ' + err.message;
}
+};
- 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)
- }
+/**
+ * Colorize log arguments if enabled.
+ *
+ * @api public
+ */
- function createWriteStream (path, options) {
- return new fs.WriteStream(path, options)
- }
+function formatArgs(args) {
+ var useColors = this.useColors;
- var fs$open = fs.open
- fs.open = open
- function open (path, flags, mode, cb) {
- if (typeof mode === 'function')
- cb = mode, mode = null
+ args[0] = (useColors ? '%c' : '')
+ + this.namespace
+ + (useColors ? ' %c' : ' ')
+ + args[0]
+ + (useColors ? '%c ' : ' ')
+ + '+' + exports.humanize(this.diff);
- return go$open(path, flags, mode, cb)
+ if (!useColors) return;
- 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()
- }
- })
+ 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;
}
- }
+ });
- return fs
+ args.splice(lastC, 0, c);
}
-function enqueue (elem) {
- debug('ENQUEUE', elem[0].name, elem[1])
- fs[gracefulQueue].push(elem)
-}
+/**
+ * Invokes `console.log()` when available.
+ * No-op when `console.log` is not a "function".
+ *
+ * @api public
+ */
-function retry () {
- var elem = fs[gracefulQueue].shift()
- if (elem) {
- debug('RETRY', elem[0].name, elem[1])
- elem[0].apply(null, elem[1])
- }
+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);
}
+/**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
-/***/ }),
-/* 234 */
-/***/ (function(module, exports, __webpack_require__) {
+function save(namespaces) {
+ try {
+ if (null == namespaces) {
+ exports.storage.removeItem('debug');
+ } else {
+ exports.storage.debug = namespaces;
+ }
+ } catch(e) {}
+}
-var constants = __webpack_require__(235)
+/**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
-var origCwd = process.cwd
-var cwd = null
+function load() {
+ var r;
+ try {
+ r = exports.storage.debug;
+ } catch(e) {}
-var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform
+ // 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;
+ }
-process.cwd = function() {
- if (!cwd)
- cwd = origCwd.call(process)
- return cwd
+ return r;
}
-try {
- process.cwd()
-} catch (er) {}
-var chdir = process.chdir
-process.chdir = function(d) {
- cwd = null
- chdir.call(process, d)
+/**
+ * Enable namespaces listed in `localStorage.debug` initially.
+ */
+
+exports.enable(load());
+
+/**
+ * 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
+ */
+
+function localstorage() {
+ try {
+ return window.localStorage;
+ } catch (e) {}
}
-module.exports = patch
-function patch (fs) {
- // (re-)implement some things that are known busted or missing.
+/***/ }),
+/* 328 */
+/***/ (function(module, exports, __webpack_require__) {
- // 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)
- }
- // lutimes implementation, or no-op
- if (!fs.lutimes) {
- patchLutimes(fs)
- }
+/**
+ * This is the common logic for both the Node.js and web browser
+ * implementations of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
- // 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 = module.exports = createDebug.debug = createDebug['default'] = createDebug;
+exports.coerce = coerce;
+exports.disable = disable;
+exports.enable = enable;
+exports.enabled = enabled;
+exports.humanize = __webpack_require__(329);
- fs.chown = chownFix(fs.chown)
- fs.fchown = chownFix(fs.fchown)
- fs.lchown = chownFix(fs.lchown)
+/**
+ * The currently active debug mode names, and names to skip.
+ */
- fs.chmod = chmodFix(fs.chmod)
- fs.fchmod = chmodFix(fs.fchmod)
- fs.lchmod = chmodFix(fs.lchmod)
+exports.names = [];
+exports.skips = [];
- fs.chownSync = chownFixSync(fs.chownSync)
- fs.fchownSync = chownFixSync(fs.fchownSync)
- fs.lchownSync = chownFixSync(fs.lchownSync)
+/**
+ * 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".
+ */
- fs.chmodSync = chmodFixSync(fs.chmodSync)
- fs.fchmodSync = chmodFixSync(fs.fchmodSync)
- fs.lchmodSync = chmodFixSync(fs.lchmodSync)
+exports.formatters = {};
- fs.stat = statFix(fs.stat)
- fs.fstat = statFix(fs.fstat)
- fs.lstat = statFix(fs.lstat)
+/**
+ * Previous log timestamp.
+ */
- fs.statSync = statFixSync(fs.statSync)
- fs.fstatSync = statFixSync(fs.fstatSync)
- fs.lstatSync = statFixSync(fs.lstatSync)
+var prevTime;
- // 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 () {}
+/**
+ * Select a color.
+ * @param {String} namespace
+ * @return {Number}
+ * @api private
+ */
+
+function selectColor(namespace) {
+ var hash = 0, i;
+
+ for (i in namespace) {
+ hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
+ hash |= 0; // Convert to 32bit integer
}
- // 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.
+ return exports.colors[Math.abs(hash) % exports.colors.length];
+}
- // 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)
- }
+/**
+ * Create a debugger with the given `namespace`.
+ *
+ * @param {String} namespace
+ * @return {Function}
+ * @api public
+ */
- // 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)
- }
- }
- return fs$read.call(fs, fd, buffer, offset, length, position, callback)
- }
+function createDebug(namespace) {
- // This ensures `util.promisify` works as it does for native `fs.read`.
- read.__proto__ = fs$read
- return read
- })(fs.read)
+ function debug() {
+ // disabled?
+ if (!debug.enabled) return;
- 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)
+ var self = debug;
- 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)
- })
- })
- })
+ // set `diff` timestamp
+ var curr = +new Date();
+ var ms = curr - (prevTime || curr);
+ self.diff = ms;
+ self.prev = prevTime;
+ self.curr = curr;
+ prevTime = curr;
+
+ // 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];
}
- fs.lchmodSync = function (path, mode) {
- var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
+ args[0] = exports.coerce(args[0]);
- // 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
+ if ('string' !== typeof args[0]) {
+ // anything else let's inspect with %O
+ args.unshift('%O');
}
- }
- 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)
- })
- })
- })
- }
+ // 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);
- 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
+ // now we need to remove `args[index]` since it's inlined in the `format`
+ args.splice(index, 1);
+ index--;
}
+ return match;
+ });
- } else {
- fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }
- fs.lutimesSync = function () {}
- }
- }
+ // apply env-specific formatting (colors, etc.)
+ exports.formatArgs.call(self, args);
- 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)
- })
- }
+ var logFn = debug.log || exports.log || console.log.bind(console);
+ logFn.apply(self, args);
}
- 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
- }
- }
+ debug.namespace = namespace;
+ debug.enabled = exports.enabled(namespace);
+ debug.useColors = exports.useColors();
+ debug.color = selectColor(namespace);
+
+ // env-specific initialization logic for debug instances
+ if ('function' === typeof exports.init) {
+ exports.init(debug);
}
+ return debug;
+}
- 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)
- })
- }
- }
+/**
+ * Enables a debug mode by namespaces. This can include modes
+ * separated by a colon and wildcards.
+ *
+ * @param {String} namespaces
+ * @api public
+ */
- 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 enable(namespaces) {
+ exports.save(namespaces);
- 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)
- }
- }
+ exports.names = [];
+ exports.skips = [];
- 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 split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
+ var len = split.length;
+
+ 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 + '$'));
}
}
+}
- // 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
+/**
+ * Disable debug output.
+ *
+ * @api public
+ */
- if (er.code === "ENOSYS")
- return true
+function disable() {
+ exports.enable('');
+}
- var nonroot = !process.getuid || process.getuid() !== 0
- if (nonroot) {
- if (er.code === "EINVAL" || er.code === "EPERM")
- return true
- }
+/**
+ * Returns true if the given mode name is enabled, false otherwise.
+ *
+ * @param {String} name
+ * @return {Boolean}
+ * @api public
+ */
- return false
+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;
+}
+
+/**
+ * Coerce `val`.
+ *
+ * @param {Mixed} val
+ * @return {Mixed}
+ * @api private
+ */
+
+function coerce(val) {
+ if (val instanceof Error) return val.stack || val.message;
+ return val;
}
/***/ }),
-/* 235 */
+/* 329 */
/***/ (function(module, exports) {
-module.exports = require("constants");
-
-/***/ }),
-/* 236 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * Helpers.
+ */
-var Stream = __webpack_require__(173).Stream
+var s = 1000;
+var m = s * 60;
+var h = m * 60;
+var d = h * 24;
+var y = d * 365.25;
-module.exports = legacy
+/**
+ * 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
+ */
-function legacy (fs) {
- return {
- ReadStream: ReadStream,
- WriteStream: WriteStream
+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)
+ );
+};
- function ReadStream (path, options) {
- if (!(this instanceof ReadStream)) return new ReadStream(path, options);
+/**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @param {String} str
+ * @return {Number}
+ * @api private
+ */
- Stream.call(this);
+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;
+ }
+}
- var self = this;
+/**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
- this.path = path;
- this.fd = null;
- this.readable = true;
- this.paused = false;
+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';
+}
- this.flags = 'r';
- this.mode = 438; /*=0666*/
- this.bufferSize = 64 * 1024;
+/**
+ * Long format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
- options = options || {};
+function fmtLong(ms) {
+ return plural(ms, d, 'day') ||
+ plural(ms, h, 'hour') ||
+ plural(ms, m, 'minute') ||
+ plural(ms, s, 'second') ||
+ ms + ' ms';
+}
- // 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];
- }
+/**
+ * Pluralization helper.
+ */
- if (this.encoding) this.setEncoding(this.encoding);
+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';
+}
- 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');
- }
- if (this.start > this.end) {
- throw new Error('start must be <= end');
- }
-
- this.pos = this.start;
- }
+/***/ }),
+/* 330 */
+/***/ (function(module, exports, __webpack_require__) {
- if (this.fd !== null) {
- process.nextTick(function() {
- self._read();
- });
- return;
- }
+/**
+ * Module dependencies.
+ */
- fs.open(this.path, this.flags, this.mode, function (err, fd) {
- if (err) {
- self.emit('error', err);
- self.readable = false;
- return;
- }
+var tty = __webpack_require__(244);
+var util = __webpack_require__(234);
- self.fd = fd;
- self.emit('open', fd);
- self._read();
- })
- }
+/**
+ * This is the Node.js implementation of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
- function WriteStream (path, options) {
- if (!(this instanceof WriteStream)) return new WriteStream(path, options);
+exports = module.exports = __webpack_require__(328);
+exports.init = init;
+exports.log = log;
+exports.formatArgs = formatArgs;
+exports.save = save;
+exports.load = load;
+exports.useColors = useColors;
- Stream.call(this);
+/**
+ * Colors.
+ */
- this.path = path;
- this.fd = null;
- this.writable = true;
+exports.colors = [6, 2, 3, 4, 5, 1];
- this.flags = 'w';
- this.encoding = 'binary';
- this.mode = 438; /*=0666*/
- this.bytesWritten = 0;
+/**
+ * Build up the default `inspectOpts` object from the environment variables.
+ *
+ * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
+ */
- options = options || {};
+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() });
- // 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];
- }
+ // 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);
- 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');
- }
+ obj[prop] = val;
+ return obj;
+}, {});
- this.pos = this.start;
- }
+/**
+ * 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
+ */
- this.busy = false;
- this._queue = [];
+var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
- if (this.fd === null) {
- this._open = fs.open;
- this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);
- this.flush();
- }
- }
+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)')()
}
+var stream = 1 === fd ? process.stdout :
+ 2 === fd ? process.stderr :
+ createWritableStdioStream(fd);
-/***/ }),
-/* 237 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * Is stdout a TTY? Colored output is enabled when `true`.
+ */
-"use strict";
+function useColors() {
+ return 'colors' in exports.inspectOpts
+ ? Boolean(exports.inspectOpts.colors)
+ : tty.isatty(fd);
+}
+/**
+ * Map %o to `util.inspect()`, all on a single line.
+ */
-module.exports = clone
+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(' ');
+};
-function clone (obj) {
- if (obj === null || typeof obj !== 'object')
- return obj
+/**
+ * Map %o to `util.inspect()`, allowing multiple lines if needed.
+ */
- if (obj instanceof Object)
- var copy = { __proto__: obj.__proto__ }
- else
- var copy = Object.create(null)
+exports.formatters.O = function(v) {
+ this.inspectOpts.colors = this.useColors;
+ return util.inspect(v, this.inspectOpts);
+};
- Object.getOwnPropertyNames(obj).forEach(function (key) {
- Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))
- })
+/**
+ * Adds ANSI color escape codes if enabled.
+ *
+ * @api public
+ */
- return copy
-}
+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';
-/***/ }),
-/* 238 */
-/***/ (function(module, exports, __webpack_require__) {
+ 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];
+ }
+}
-var path = __webpack_require__(4);
-var fs = __webpack_require__(132);
-var _0777 = parseInt('0777', 8);
+/**
+ * Invokes `util.format()` with the specified arguments and writes to `stream`.
+ */
-module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
+function log() {
+ return stream.write(util.format.apply(util, arguments) + '\n');
+}
-function mkdirP (p, opts, f, made) {
- if (typeof opts === 'function') {
- f = opts;
- opts = {};
- }
- else if (!opts || typeof opts !== 'object') {
- opts = { mode: opts };
- }
-
- var mode = opts.mode;
- var xfs = opts.fs || fs;
-
- if (mode === undefined) {
- mode = _0777 & (~process.umask());
- }
- if (!made) made = null;
-
- var cb = f || function () {};
- p = path.resolve(p);
-
- xfs.mkdir(p, mode, function (er) {
- if (!er) {
- made = made || p;
- return cb(null, made);
- }
- switch (er.code) {
- case 'ENOENT':
- if (path.dirname(p) === p) return cb(er);
- mkdirP(path.dirname(p), opts, function (er, made) {
- if (er) cb(er, made);
- else mkdirP(p, opts, cb, made);
- });
- break;
+/**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
- // In the case of any other error, just see if there's a dir
- // there already. If so, then hooray! If not, then something
- // is borked.
- default:
- xfs.stat(p, function (er2, stat) {
- // if the stat fails, then that's super weird.
- // let the original error be the failure reason.
- if (er2 || !stat.isDirectory()) cb(er, made)
- else cb(null, made);
- });
- break;
- }
- });
+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;
+ }
}
-mkdirP.sync = function sync (p, opts, made) {
- if (!opts || typeof opts !== 'object') {
- opts = { mode: opts };
- }
-
- var mode = opts.mode;
- var xfs = opts.fs || fs;
-
- if (mode === undefined) {
- mode = _0777 & (~process.umask());
- }
- if (!made) made = null;
-
- p = path.resolve(p);
+/**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
- try {
- xfs.mkdirSync(p, mode);
- made = made || p;
- }
- catch (err0) {
- switch (err0.code) {
- case 'ENOENT' :
- made = sync(path.dirname(p), opts, made);
- sync(p, opts, made);
- break;
+function load() {
+ return process.env.DEBUG;
+}
- // In the case of any other error, just see if there's a dir
- // there already. If so, then hooray! If not, then something
- // is borked.
- default:
- var stat;
- try {
- stat = xfs.statSync(p);
- }
- catch (err1) {
- throw err0;
- }
- if (!stat.isDirectory()) throw err0;
- break;
- }
- }
+/**
+ * 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.
+ */
- return made;
-};
+function createWritableStdioStream (fd) {
+ var stream;
+ var tty_wrap = process.binding('tty_wrap');
+ // Note stream._type is used for test-module-load-list.js
-/***/ }),
-/* 239 */
-/***/ (function(module, exports) {
+ switch (tty_wrap.guessHandleType(fd)) {
+ case 'TTY':
+ stream = new tty.WriteStream(fd);
+ stream._type = 'tty';
-exports.replaceDollarWithPercentPair = replaceDollarWithPercentPair
-exports.convertToSetCommand = convertToSetCommand
-exports.convertToSetCommands = convertToSetCommands
-
-function convertToSetCommand(key, value) {
- var line = ""
- key = key || ""
- key = key.trim()
- value = value || ""
- value = value.trim()
- if(key && value && value.length > 0) {
- line = "@SET " + key + "=" + replaceDollarWithPercentPair(value) + "\r\n"
- }
- return line
-}
-
-function extractVariableValuePairs(declarations) {
- var pairs = {}
- declarations.map(function(declaration) {
- var split = declaration.split("=")
- pairs[split[0]]=split[1]
- })
- return pairs
-}
-
-function convertToSetCommands(variableString) {
- var variableValuePairs = extractVariableValuePairs(variableString.split(" "))
- var variableDeclarationsAsBatch = ""
- Object.keys(variableValuePairs).forEach(function (key) {
- variableDeclarationsAsBatch += convertToSetCommand(key, variableValuePairs[key])
- })
- return variableDeclarationsAsBatch
-}
-
-function replaceDollarWithPercentPair(value) {
- var dollarExpressions = /\$\{?([^\$@#\?\- \t{}:]+)\}?/g
- var result = ""
- var startIndex = 0
- value = value || ""
- do {
- var match = dollarExpressions.exec(value)
- if(match) {
- var betweenMatches = value.substring(startIndex, match.index) || ""
- result += betweenMatches + "%" + match[1] + "%"
- startIndex = dollarExpressions.lastIndex
- }
- } while (dollarExpressions.lastIndex > 0)
- result += value.substr(startIndex)
- return result
-}
-
-
+ // 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__(253);
+ stream = new fs.SyncWriteStream(fd, { autoClose: false });
+ stream._type = 'fs';
+ break;
-/***/ }),
-/* 240 */
-/***/ (function(module, exports, __webpack_require__) {
+ case 'PIPE':
+ case 'TCP':
+ var net = __webpack_require__(331);
+ stream = new net.Socket({
+ fd: fd,
+ readable: false,
+ writable: true
+ });
-"use strict";
+ // 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';
-const {promisify} = __webpack_require__(113);
-const path = __webpack_require__(4);
-const globby = __webpack_require__(241);
-const isGlob = __webpack_require__(266);
-const slash = __webpack_require__(330);
-const gracefulFs = __webpack_require__(233);
-const isPathCwd = __webpack_require__(332);
-const isPathInside = __webpack_require__(333);
-const rimraf = __webpack_require__(334);
-const pMap = __webpack_require__(335);
+ // 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;
-const rimrafP = promisify(rimraf);
+ default:
+ // Probably an error on in uv_guess_handle()
+ throw new Error('Implement me. Unknown stream file type!');
+ }
-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
-};
+ // For supporting legacy API we put the FD here.
+ stream.fd = fd;
-function safeCheck(file, cwd) {
- if (isPathCwd(file)) {
- throw new Error('Cannot delete the current working directory. Can be overridden with the `force` option.');
- }
+ stream._isStdio = true;
- if (!isPathInside(file, cwd)) {
- throw new Error('Cannot delete files/directories outside the current working directory. Can be overridden with the `force` option.');
- }
+ return stream;
}
-function normalizePatterns(patterns) {
- patterns = Array.isArray(patterns) ? patterns : [patterns];
-
- patterns = patterns.map(pattern => {
- if (process.platform === 'win32' && isGlob(pattern) === false) {
- return slash(pattern);
- }
+/**
+ * Init logic for `debug` instances.
+ *
+ * Create a new `inspectOpts` object in case `useColors` is set
+ * differently for a particular `debug` instance.
+ */
- return pattern;
- });
+function init (debug) {
+ debug.inspectOpts = {};
- return patterns;
+ var keys = Object.keys(exports.inspectOpts);
+ for (var i = 0; i < keys.length; i++) {
+ debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
+ }
}
-module.exports = async (patterns, {force, dryRun, cwd = process.cwd(), ...options} = {}) => {
- options = {
- expandDirectories: false,
- onlyFiles: false,
- followSymbolicLinks: false,
- cwd,
- ...options
- };
-
- patterns = normalizePatterns(patterns);
-
- const files = (await globby(patterns, options))
- .sort((a, b) => b.localeCompare(a));
+/**
+ * Enable namespaces listed in `process.env.DEBUG` initially.
+ */
- const mapper = async file => {
- file = path.resolve(cwd, file);
+exports.enable(load());
- if (!force) {
- safeCheck(file, cwd);
- }
- if (!dryRun) {
- await rimrafP(file, rimrafOptions);
- }
+/***/ }),
+/* 331 */
+/***/ (function(module, exports) {
- return file;
- };
+module.exports = require("net");
- const removedFiles = await pMap(files, mapper, options);
+/***/ }),
+/* 332 */
+/***/ (function(module, exports) {
- removedFiles.sort((a, b) => a.localeCompare(b));
+module.exports = require("zlib");
- return removedFiles;
-};
+/***/ }),
+/* 333 */
+/***/ (function(module) {
-module.exports.sync = (patterns, {force, dryRun, cwd = process.cwd(), ...options} = {}) => {
- options = {
- expandDirectories: false,
- onlyFiles: false,
- followSymbolicLinks: false,
- cwd,
- ...options
- };
+module.exports = JSON.parse("{\"name\":\"axios\",\"version\":\"0.21.1\",\"description\":\"Promise based HTTP client for the browser and node.js\",\"main\":\"index.js\",\"scripts\":{\"test\":\"grunt test && bundlesize\",\"start\":\"node ./sandbox/server.js\",\"build\":\"NODE_ENV=production grunt build\",\"preversion\":\"npm test\",\"version\":\"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\",\"postversion\":\"git push && git push --tags\",\"examples\":\"node ./examples/server.js\",\"coveralls\":\"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\",\"fix\":\"eslint --fix lib/**/*.js\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/axios/axios.git\"},\"keywords\":[\"xhr\",\"http\",\"ajax\",\"promise\",\"node\"],\"author\":\"Matt Zabriskie\",\"license\":\"MIT\",\"bugs\":{\"url\":\"https://github.com/axios/axios/issues\"},\"homepage\":\"https://github.com/axios/axios\",\"devDependencies\":{\"bundlesize\":\"^0.17.0\",\"coveralls\":\"^3.0.0\",\"es6-promise\":\"^4.2.4\",\"grunt\":\"^1.0.2\",\"grunt-banner\":\"^0.6.0\",\"grunt-cli\":\"^1.2.0\",\"grunt-contrib-clean\":\"^1.1.0\",\"grunt-contrib-watch\":\"^1.0.0\",\"grunt-eslint\":\"^20.1.0\",\"grunt-karma\":\"^2.0.0\",\"grunt-mocha-test\":\"^0.13.3\",\"grunt-ts\":\"^6.0.0-beta.19\",\"grunt-webpack\":\"^1.0.18\",\"istanbul-instrumenter-loader\":\"^1.0.0\",\"jasmine-core\":\"^2.4.1\",\"karma\":\"^1.3.0\",\"karma-chrome-launcher\":\"^2.2.0\",\"karma-coverage\":\"^1.1.1\",\"karma-firefox-launcher\":\"^1.1.0\",\"karma-jasmine\":\"^1.1.1\",\"karma-jasmine-ajax\":\"^0.1.13\",\"karma-opera-launcher\":\"^1.0.0\",\"karma-safari-launcher\":\"^1.0.0\",\"karma-sauce-launcher\":\"^1.2.0\",\"karma-sinon\":\"^1.0.5\",\"karma-sourcemap-loader\":\"^0.3.7\",\"karma-webpack\":\"^1.7.0\",\"load-grunt-tasks\":\"^3.5.2\",\"minimist\":\"^1.2.0\",\"mocha\":\"^5.2.0\",\"sinon\":\"^4.5.0\",\"typescript\":\"^2.8.1\",\"url-search-params\":\"^0.10.0\",\"webpack\":\"^1.13.1\",\"webpack-dev-server\":\"^1.14.1\"},\"browser\":{\"./lib/adapters/http.js\":\"./lib/adapters/xhr.js\"},\"jsdelivr\":\"dist/axios.min.js\",\"unpkg\":\"dist/axios.min.js\",\"typings\":\"./index.d.ts\",\"dependencies\":{\"follow-redirects\":\"^1.10.0\"},\"bundlesize\":[{\"path\":\"./dist/axios.min.js\",\"threshold\":\"5kB\"}]}");
- patterns = normalizePatterns(patterns);
+/***/ }),
+/* 334 */
+/***/ (function(module, exports, __webpack_require__) {
- const files = globby.sync(patterns, options)
- .sort((a, b) => b.localeCompare(a));
+"use strict";
- const removedFiles = files.map(file => {
- file = path.resolve(cwd, file);
- if (!force) {
- safeCheck(file, cwd);
- }
+var utils = __webpack_require__(300);
- if (!dryRun) {
- rimraf.sync(file, rimrafOptions);
- }
-
- return file;
- });
-
- removedFiles.sort((a, b) => a.localeCompare(b));
+/**
+ * Config-specific merge-function which creates a new config-object
+ * by merging two configuration objects together.
+ *
+ * @param {Object} config1
+ * @param {Object} config2
+ * @returns {Object} New object resulting from merging config2 to config1
+ */
+module.exports = function mergeConfig(config1, config2) {
+ // eslint-disable-next-line no-param-reassign
+ config2 = config2 || {};
+ var config = {};
- return removedFiles;
-};
+ var valueFromConfig2Keys = ['url', 'method', 'data'];
+ var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];
+ var defaultToConfig2Keys = [
+ 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',
+ 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',
+ 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',
+ 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',
+ 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'
+ ];
+ var directMergeKeys = ['validateStatus'];
+ function getMergedValue(target, source) {
+ if (utils.isPlainObject(target) && utils.isPlainObject(source)) {
+ return utils.merge(target, source);
+ } else if (utils.isPlainObject(source)) {
+ return utils.merge({}, source);
+ } else if (utils.isArray(source)) {
+ return source.slice();
+ }
+ return source;
+ }
-/***/ }),
-/* 241 */
-/***/ (function(module, exports, __webpack_require__) {
+ function mergeDeepProperties(prop) {
+ if (!utils.isUndefined(config2[prop])) {
+ config[prop] = getMergedValue(config1[prop], config2[prop]);
+ } else if (!utils.isUndefined(config1[prop])) {
+ config[prop] = getMergedValue(undefined, config1[prop]);
+ }
+ }
-"use strict";
+ utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {
+ if (!utils.isUndefined(config2[prop])) {
+ config[prop] = getMergedValue(undefined, config2[prop]);
+ }
+ });
-const fs = __webpack_require__(132);
-const arrayUnion = __webpack_require__(242);
-const merge2 = __webpack_require__(243);
-const glob = __webpack_require__(244);
-const fastGlob = __webpack_require__(257);
-const dirGlob = __webpack_require__(326);
-const gitignore = __webpack_require__(328);
-const {FilterStream, UniqueStream} = __webpack_require__(331);
+ utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);
-const DEFAULT_FILTER = () => false;
+ utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {
+ if (!utils.isUndefined(config2[prop])) {
+ config[prop] = getMergedValue(undefined, config2[prop]);
+ } else if (!utils.isUndefined(config1[prop])) {
+ config[prop] = getMergedValue(undefined, config1[prop]);
+ }
+ });
-const isNegative = pattern => pattern[0] === '!';
+ utils.forEach(directMergeKeys, function merge(prop) {
+ if (prop in config2) {
+ config[prop] = getMergedValue(config1[prop], config2[prop]);
+ } else if (prop in config1) {
+ config[prop] = getMergedValue(undefined, config1[prop]);
+ }
+ });
-const assertPatternsInput = patterns => {
- if (!patterns.every(pattern => typeof pattern === 'string')) {
- throw new TypeError('Patterns must be a string or an array of strings');
- }
-};
+ var axiosKeys = valueFromConfig2Keys
+ .concat(mergeDeepPropertiesKeys)
+ .concat(defaultToConfig2Keys)
+ .concat(directMergeKeys);
-const checkCwdOption = (options = {}) => {
- if (!options.cwd) {
- return;
- }
+ var otherKeys = Object
+ .keys(config1)
+ .concat(Object.keys(config2))
+ .filter(function filterAxiosKeys(key) {
+ return axiosKeys.indexOf(key) === -1;
+ });
- let stat;
- try {
- stat = fs.statSync(options.cwd);
- } catch (_) {
- return;
- }
+ utils.forEach(otherKeys, mergeDeepProperties);
- if (!stat.isDirectory()) {
- throw new Error('The `cwd` option must be a path to a directory');
- }
+ return config;
};
-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;
- }
+/***/ }),
+/* 335 */
+/***/ (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)
- };
- globTasks.push({pattern, options});
- }
+/**
+ * A `Cancel` is an object that is thrown when an operation is canceled.
+ *
+ * @class
+ * @param {string=} message The message.
+ */
+function Cancel(message) {
+ this.message = message;
+}
- return globTasks;
+Cancel.prototype.toString = function toString() {
+ return 'Cancel' + (this.message ? ': ' + this.message : '');
};
-const globDirs = (task, fn) => {
- let options = {};
- if (task.options.cwd) {
- options.cwd = task.options.cwd;
- }
-
- if (Array.isArray(task.options.expandDirectories)) {
- options = {
- ...options,
- files: task.options.expandDirectories
- };
- } else if (typeof task.options.expandDirectories === 'object') {
- options = {
- ...options,
- ...task.options.expandDirectories
- };
- }
+Cancel.prototype.__CANCEL__ = true;
- return fn(task.pattern, options);
-};
+module.exports = Cancel;
-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;
-};
+/***/ }),
+/* 336 */
+/***/ (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);
- }
+"use strict";
- return {
- pattern: glob,
- options
- };
-};
-module.exports = async (patterns, options) => {
- const globTasks = generateGlobTasks(patterns, options);
+var Cancel = __webpack_require__(335);
- const getFilter = async () => {
- return options && options.gitignore ?
- gitignore({cwd: options.cwd, ignore: options.ignore}) :
- DEFAULT_FILTER;
- };
+/**
+ * A `CancelToken` is an object that can be used to request cancellation of an operation.
+ *
+ * @class
+ * @param {Function} executor The executor function.
+ */
+function CancelToken(executor) {
+ if (typeof executor !== 'function') {
+ throw new TypeError('executor must be a function.');
+ }
- 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)));
- }));
+ var resolvePromise;
+ this.promise = new Promise(function promiseExecutor(resolve) {
+ resolvePromise = resolve;
+ });
- return arrayUnion(...tasks);
- };
+ var token = this;
+ executor(function cancel(message) {
+ if (token.reason) {
+ // Cancellation has already been requested
+ return;
+ }
- const [filter, tasks] = await Promise.all([getFilter(), getTasks()]);
- const paths = await Promise.all(tasks.map(task => fastGlob(task.pattern, task.options)));
+ token.reason = new Cancel(message);
+ resolvePromise(token.reason);
+ });
+}
- return arrayUnion(...paths).filter(path_ => !filter(getPathString(path_)));
+/**
+ * Throws a `Cancel` if cancellation has been requested.
+ */
+CancelToken.prototype.throwIfRequested = function throwIfRequested() {
+ if (this.reason) {
+ throw this.reason;
+ }
};
-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_));
+/**
+ * Returns an object that contains a new `CancelToken` and a function that, when called,
+ * cancels the `CancelToken`.
+ */
+CancelToken.source = function source() {
+ var cancel;
+ var token = new CancelToken(function executor(c) {
+ cancel = c;
+ });
+ return {
+ token: token,
+ cancel: cancel
+ };
};
-module.exports.stream = (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);
- }, []);
+module.exports = CancelToken;
- 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);
-};
+/***/ }),
+/* 337 */
+/***/ (function(module, exports, __webpack_require__) {
-module.exports.generateGlobTasks = generateGlobTasks;
+"use strict";
-module.exports.hasMagic = (patterns, options) => []
- .concat(patterns)
- .some(pattern => glob.hasMagic(pattern, options));
-module.exports.gitignore = gitignore;
+/**
+ * Syntactic sugar for invoking a function and expanding an array for arguments.
+ *
+ * Common use case would be to use `Function.prototype.apply`.
+ *
+ * ```js
+ * function f(x, y, z) {}
+ * var args = [1, 2, 3];
+ * f.apply(null, args);
+ * ```
+ *
+ * With `spread` this example can be re-written.
+ *
+ * ```js
+ * spread(function(x, y, z) {})([1, 2, 3]);
+ * ```
+ *
+ * @param {Function} callback
+ * @returns {Function}
+ */
+module.exports = function spread(callback) {
+ return function wrap(arr) {
+ return callback.apply(null, arr);
+ };
+};
/***/ }),
-/* 242 */
+/* 338 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-module.exports = (...arguments_) => {
- return [...new Set([].concat(...arguments_))];
+/**
+ * Determines whether the payload is an error thrown by Axios
+ *
+ * @param {*} payload The value to test
+ * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
+ */
+module.exports = function isAxiosError(payload) {
+ return (typeof payload === 'object') && (payload.isAxiosError === true);
};
/***/ }),
-/* 243 */
+/* 339 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.parseConfig = parseConfig;
+
/*
- * merge2
- * https://github.com/teambition/merge2
- *
- * Copyright (c) 2014-2020 Teambition
- * Licensed under the MIT license.
+ * 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.
*/
-const Stream = __webpack_require__(173)
-const PassThrough = Stream.PassThrough
-const slice = Array.prototype.slice
-module.exports = merge2
+/**
+ * Information about how CiStatsReporter should talk to the ci-stats service. Normally
+ * it is read from a JSON environment variable using the `parseConfig()` function
+ * exported by this module.
+ */
+function validateConfig(log, config) {
+ const validApiToken = typeof config.apiToken === 'string' && config.apiToken.length !== 0;
-function merge2 () {
- const streamsQueue = []
- const args = slice.call(arguments)
- let merging = false
- let options = args[args.length - 1]
+ if (!validApiToken) {
+ log.warning('KIBANA_CI_STATS_CONFIG is missing a valid api token, stats will not be reported');
+ return;
+ }
- if (options && !Array.isArray(options) && options.pipe == null) {
- args.pop()
- } else {
- options = {}
+ const validId = typeof config.buildId === 'string' && config.buildId.length !== 0;
+
+ if (!validId) {
+ log.warning('KIBANA_CI_STATS_CONFIG is missing a valid build id, stats will not be reported');
+ return;
}
- const doEnd = options.end !== false
- const doPipeError = options.pipeError === true
- if (options.objectMode == null) {
- options.objectMode = true
+ return config;
+}
+
+function parseConfig(log) {
+ const configJson = process.env.KIBANA_CI_STATS_CONFIG;
+
+ if (!configJson) {
+ log.debug('KIBANA_CI_STATS_CONFIG environment variable not found, disabling CiStatsReporter');
+ return;
}
- if (options.highWaterMark == null) {
- options.highWaterMark = 64 * 1024
+
+ let config;
+
+ try {
+ config = JSON.parse(configJson);
+ } catch (_) {// handled below
}
- const mergedStream = PassThrough(options)
- function addStream () {
- for (let i = 0, len = arguments.length; i < len; i++) {
- streamsQueue.push(pauseStreams(arguments[i], options))
- }
- mergeStream()
- return this
+ if (typeof config === 'object' && config !== null) {
+ return validateConfig(log, config);
}
- function mergeStream () {
- if (merging) {
- return
- }
- merging = true
+ log.warning('KIBANA_CI_STATS_CONFIG is invalid, stats will not be reported');
+ return;
+}
- let streams = streamsQueue.shift()
- if (!streams) {
- process.nextTick(endStream)
- return
- }
- if (!Array.isArray(streams)) {
- streams = [streams]
- }
+/***/ }),
+/* 340 */
+/***/ (function(module, exports) {
- let pipesCount = streams.length + 1
+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 = 340;
- function next () {
- if (--pipesCount > 0) {
- return
- }
- merging = false
- mergeStream()
- }
+/***/ }),
+/* 341 */
+/***/ (function(module, __webpack_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";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Log", function() { return Log; });
+/* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
+/* 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__);
+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; }
- stream.on('merge2UnpipeEnd', onend)
- stream.on('end', onend)
+/*
+ * 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.
+ */
- if (doPipeError) {
- stream.on('error', onerror)
- }
- stream.pipe(mergedStream, { end: false })
- // compatible for old stream
- stream.resume()
- }
+class Log extends _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__["ToolingLog"] {
+ constructor() {
+ super();
- for (let i = 0; i < streams.length; i++) {
- pipe(streams[i])
- }
+ _defineProperty(this, "logLevel", void 0);
- next()
+ this.setLogLevel('info');
}
- function endStream () {
- merging = false
- // emit 'queueDrain' when all streams merged.
- mergedStream.emit('queueDrain')
- if (doEnd) {
- mergedStream.end()
- }
+ 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"]({
+ level: this.logLevel.name,
+ writeTo: process.stdout
+ })]);
}
- mergedStream.setMaxListeners(0)
- mergedStream.add = addStream
- mergedStream.on('unpipe', function (stream) {
- stream.emit('merge2UnpipeEnd')
- })
-
- if (args.length) {
- addStream.apply(null, args)
+ wouldLogLevel(level) {
+ return this.logLevel.flags[level];
}
- 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
}
+const log = new Log();
+
/***/ }),
-/* 244 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 342 */
+/***/ (function(module, __webpack_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.
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "spawn", function() { return spawn; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "spawnStreaming", function() { return spawnStreaming; });
+/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(294);
+/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(stream__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(235);
+/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(255);
+/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(execa__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(343);
+/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(341);
+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; }
-module.exports = glob
+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; }
-var rp = __webpack_require__(245)
-var minimatch = __webpack_require__(247)
-var Minimatch = minimatch.Minimatch
-var inherits = __webpack_require__(251)
-var EE = __webpack_require__(164).EventEmitter
-var path = __webpack_require__(4)
-var assert = __webpack_require__(162)
-var isAbsolute = __webpack_require__(253)
-var globSync = __webpack_require__(254)
-var common = __webpack_require__(255)
-var setopts = common.setopts
-var ownProp = common.ownProp
-var inflight = __webpack_require__(256)
-var util = __webpack_require__(113)
-var childrenIgnored = common.childrenIgnored
-var isIgnored = common.isIgnored
+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; }
-var once = __webpack_require__(169)
+/*
+ * 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 glob (pattern, options, cb) {
- if (typeof options === 'function') cb = options, options = {}
- if (!options) options = {}
- 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
+const colorWheel = [chalk__WEBPACK_IMPORTED_MODULE_1___default.a.cyan, chalk__WEBPACK_IMPORTED_MODULE_1___default.a.magenta, chalk__WEBPACK_IMPORTED_MODULE_1___default.a.blue, chalk__WEBPACK_IMPORTED_MODULE_1___default.a.yellow, chalk__WEBPACK_IMPORTED_MODULE_1___default.a.green];
-function extend (origin, add) {
- if (add === null || typeof add !== 'object') {
- return origin
- }
+const getColor = () => {
+ const color = colorWheel.shift();
+ colorWheel.push(color);
+ return color;
+};
- var keys = Object.keys(add)
- var i = keys.length
- while (i--) {
- origin[keys[i]] = add[keys[i]]
- }
- return origin
+function spawn(command, args, opts) {
+ return execa__WEBPACK_IMPORTED_MODULE_2___default()(command, args, _objectSpread({
+ stdio: 'inherit',
+ preferLocal: true
+ }, opts));
}
-glob.hasMagic = function (pattern, options_) {
- var options = extend({}, options_)
- options.noprocess = true
+function streamToLog(debug = true) {
+ return new stream__WEBPACK_IMPORTED_MODULE_0__["Writable"]({
+ objectMode: true,
- var g = new Glob(pattern, options)
- var set = g.minimatch.set
+ write(line, _, cb) {
+ if (line.endsWith('\n')) {
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"][debug ? 'debug' : 'write'](line.slice(0, -1));
+ } else {
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"][debug ? 'debug' : 'write'](line);
+ }
- if (!pattern)
- return false
+ cb();
+ }
- if (set.length > 1)
- return true
+ });
+}
- for (var j = 0; j < set[0].length; j++) {
- if (typeof set[0][j] !== 'string')
- return true
- }
+function spawnStreaming(command, args, opts, {
+ prefix,
+ debug
+}) {
+ const spawned = execa__WEBPACK_IMPORTED_MODULE_2___default()(command, args, _objectSpread({
+ stdio: ['ignore', 'pipe', 'pipe'],
+ preferLocal: true
+ }, opts));
+ const color = getColor();
+ const prefixedStdout = strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default()({
+ tag: color.bold(prefix)
+ });
+ const prefixedStderr = strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default()({
+ mergeMultiline: true,
+ tag: color.bold(prefix)
+ });
+ spawned.stdout.pipe(prefixedStdout).pipe(streamToLog(debug)); // TypeScript note: As long as the proc stdio[1] is 'pipe', then stdout will not be null
- return false
+ spawned.stderr.pipe(prefixedStderr).pipe(streamToLog(debug)); // TypeScript note: As long as the proc stdio[2] is 'pipe', then stderr will not be null
+
+ return spawned;
}
-glob.Glob = Glob
-inherits(Glob, EE)
-function Glob (pattern, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = null
- }
+/***/ }),
+/* 343 */
+/***/ (function(module, exports, __webpack_require__) {
- if (options && options.sync) {
- if (cb)
- throw new TypeError('callback provided to sync glob')
- return new GlobSync(pattern, options)
- }
+// 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
- if (!(this instanceof Glob))
- return new Glob(pattern, options, cb)
+module.exports = __webpack_require__(344);
+module.exports.cli = __webpack_require__(348);
- setopts(this, pattern, options)
- this._didRealPath = false
- // process each pattern in the minimatch set
- var n = this.minimatch.set.length
+/***/ }),
+/* 344 */
+/***/ (function(module, exports, __webpack_require__) {
- // 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)
+"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
- if (typeof cb === 'function') {
- cb = once(cb)
- this.on('error', cb)
- this.on('end', function (matches) {
- cb(null, matches)
- })
- }
- var self = this
- this._processing = 0
- this._emitQueue = []
- this._processQueue = []
- this.paused = false
+var stream = __webpack_require__(294);
+var util = __webpack_require__(234);
+var fs = __webpack_require__(253);
- if (this.noprocess)
- return this
+var through = __webpack_require__(345);
+var duplexer = __webpack_require__(346);
+var StringDecoder = __webpack_require__(347).StringDecoder;
- if (n === 0)
- return done()
+module.exports = Logger;
- var sync = true
- for (var i = 0; i < n; i ++) {
- this._process(this.minimatch.set[i], i, false, done)
- }
- sync = false
+Logger.DEFAULTS = {
+ format: 'text',
+ tag: '',
+ mergeMultiline: false,
+ timeStamp: false,
+};
- function done () {
- --self._processing
- if (self._processing <= 0) {
- if (sync) {
- process.nextTick(function () {
- self._finish()
- })
- } else {
- self._finish()
- }
- }
- }
+var formatters = {
+ text: textFormatter,
+ json: jsonFormatter,
}
-Glob.prototype._finish = function () {
- assert(this instanceof Glob)
- if (this.aborted)
- return
+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 (this.realpath && !this._didRealpath)
- return this._realpath()
+ if (options.tag) {
+ transforms.push(staticTagger(options.tag));
+ }
- common.finish(this)
- this.emit('end', this.found)
-}
+ if (options.mergeMultiline) {
+ transforms.push(lineMerger());
+ }
-Glob.prototype._realpath = function () {
- if (this._didRealpath)
- return
+ // TODO
+ // if (options.pidStamp) {
+ // transforms.push(pidStamper(options.pid));
+ // }
- this._didRealpath = true
+ // TODO
+ // if (options.workerStamp) {
+ // transforms.push(workerStamper(options.worker));
+ // }
- var n = this.matches.length
- if (n === 0)
- return this._finish()
+ transforms.push(formatters[options.format](options));
- var self = this
- for (var i = 0; i < this.matches.length; i++)
- this._realpathSet(i, next)
+ // restore line endings that were removed by line splitting
+ transforms.push(reLiner());
- function next () {
- if (--n === 0)
- self._finish()
+ for (var t in transforms) {
+ emitter = emitter.pipe(transforms[t]);
}
-}
-
-Glob.prototype._realpathSet = function (index, cb) {
- var matchset = this.matches[index]
- if (!matchset)
- return cb()
-
- var found = Object.keys(matchset)
- var self = this
- var n = found.length
- if (n === 0)
- return cb()
+ return duplexer(catcher, emitter);
+}
- 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
+function deLiner() {
+ var decoder = new StringDecoder('utf8');
+ var last = '';
- if (--n === 0) {
- self.matches[index] = set
- cb()
+ 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();
+ },
+ });
}
-Glob.prototype._mark = function (p) {
- return common.mark(this, p)
-}
+function reLiner() {
+ return through(appendNewline);
-Glob.prototype._makeAbs = function (f) {
- return common.makeAbs(this, f)
+ function appendNewline(line) {
+ this.emit('data', line + '\n');
+ }
}
-Glob.prototype.abort = function () {
- this.aborted = true
- this.emit('abort')
+function objectifier() {
+ return through(objectify, null, {autoDestroy: false});
+
+ function objectify(line) {
+ this.emit('data', {
+ msg: line,
+ time: Date.now(),
+ });
+ }
}
-Glob.prototype.pause = function () {
- if (!this.paused) {
- this.paused = true
- this.emit('pause')
+function staticTagger(tag) {
+ return through(tagger);
+
+ function tagger(logEvent) {
+ logEvent.tag = tag;
+ this.emit('data', logEvent);
}
}
-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])
- }
+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);
}
- 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])
+ 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;
}
}
-Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
- assert(this instanceof Glob)
- assert(typeof cb === 'function')
+function jsonFormatter(options) {
+ return through(jsonify);
- if (this.aborted)
- return
+ 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));
+ }
+}
- this._processing++
- if (this.paused) {
- this._processQueue.push([pattern, index, inGlobStar, cb])
- return
+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);
}
- //console.error('PROCESS %d', this._processing, pattern)
+ function _flush() {
+ if (previousLine) {
+ this.emit('data', previousLine);
+ previousLine = null;
+ }
+ }
- // Get the first [n] parts of pattern that are all strings.
- var n = 0
- while (typeof pattern[n] === 'string') {
- n ++
+ function lineMergerEnd() {
+ flush.call(this);
+ this.emit('end');
}
- // now n is the index of the first one that is *not* 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, cb)
- return
- case 0:
- // pattern *starts* with some non-trivial item.
- // going to readdir(cwd), but not include the prefix in matches.
- prefix = null
- break
+/***/ }),
+/* 345 */
+/***/ (function(module, exports, __webpack_require__) {
- 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 Stream = __webpack_require__(294)
- var remain = pattern.slice(n)
+// 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)
- // 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 abs = this._makeAbs(read)
-
- //if ignored, skip _processing
- if (childrenIgnored(this, read))
- return cb()
+exports = module.exports = through
+through.through = through
- 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)
-}
+//create a readable writable stream.
-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)
- })
-}
+function through (write, end, opts) {
+ write = write || function (data) { this.queue(data) }
+ end = end || function () { this.queue(null) }
-Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+ var ended = false, destroyed = false, buffer = [], _ended = false
+ var stream = new Stream()
+ stream.readable = stream.writable = true
+ stream.paused = false
- // if the abs isn't a dir, then nothing can match!
- if (!entries)
- return cb()
+// stream.autoPause = !(opts && opts.autoPause === false)
+ stream.autoDestroy = !(opts && opts.autoDestroy === false)
- // 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) === '.'
+ stream.write = function (data) {
+ write.call(this, data)
+ return !stream.paused
+ }
- 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)
+ function drain() {
+ while(buffer.length && !stream.paused) {
+ var data = buffer.shift()
+ if(null === data)
+ return stream.emit('end')
+ else
+ stream.emit('data', data)
}
}
- //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
-
- var len = matchedEntries.length
- // If there are no matched entries, then nothing matches.
- if (len === 0)
- return cb()
-
- // 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.
+ stream.queue = stream.push = function (data) {
+// console.error(ended)
+ if(_ended) return stream
+ if(data === null) _ended = true
+ buffer.push(data)
+ drain()
+ return stream
+ }
- if (remain.length === 1 && !this.mark && !this.stat) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
+ //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'
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- if (prefix) {
- if (prefix !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
+ stream.on('end', function () {
+ stream.readable = false
+ if(!stream.writable && stream.autoDestroy)
+ process.nextTick(function () {
+ stream.destroy()
+ })
+ })
- 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()
+ function _end () {
+ stream.writable = false
+ end.call(stream)
+ if(!stream.readable && stream.autoDestroy)
+ stream.destroy()
}
- // 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)
+ stream.end = function (data) {
+ if(ended) return
+ ended = true
+ if(arguments.length) stream.write(data)
+ _end() // will emit or queue
+ return stream
}
- cb()
-}
-
-Glob.prototype._emitMatch = function (index, e) {
- if (this.aborted)
- return
- if (isIgnored(this, e))
- return
+ stream.destroy = function () {
+ if(destroyed) return
+ destroyed = true
+ ended = true
+ buffer.length = 0
+ stream.writable = stream.readable = false
+ stream.emit('close')
+ return stream
+ }
- if (this.paused) {
- this._emitQueue.push([index, e])
- return
+ stream.pause = function () {
+ if(stream.paused) return
+ stream.paused = true
+ return stream
}
- var abs = isAbsolute(e) ? e : this._makeAbs(e)
+ 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 stream
+}
- if (this.mark)
- e = this._mark(e)
- if (this.absolute)
- e = abs
- if (this.matches[index][e])
- return
+/***/ }),
+/* 346 */
+/***/ (function(module, exports, __webpack_require__) {
- if (this.nodir) {
- var c = this.cache[abs]
- if (c === 'DIR' || Array.isArray(c))
- return
- }
+var Stream = __webpack_require__(294)
+var writeMethods = ["write", "end", "destroy"]
+var readMethods = ["resume", "pause"]
+var readEvents = ["data", "close"]
+var slice = Array.prototype.slice
- this.matches[index][e] = true
+module.exports = duplex
- var st = this.statCache[abs]
- if (st)
- this.emit('stat', e, st)
+function forEach (arr, fn) {
+ if (arr.forEach) {
+ return arr.forEach(fn)
+ }
- this.emit('match', e)
+ for (var i = 0; i < arr.length; i++) {
+ fn(arr[i], i)
+ }
}
-Glob.prototype._readdirInGlobStar = function (abs, cb) {
- if (this.aborted)
- return
+function duplex(writer, reader) {
+ var stream = new Stream()
+ var ended = false
- // follow all symlinked directories forever
- // just proceed as if this is a non-globstar situation
- if (this.follow)
- return this._readdir(abs, false, cb)
+ forEach(writeMethods, proxyWriter)
- var lstatkey = 'lstat\0' + abs
- var self = this
- var lstatcb = inflight(lstatkey, lstatcb_)
+ forEach(readMethods, proxyReader)
- if (lstatcb)
- self.fs.lstat(abs, lstatcb)
+ forEach(readEvents, proxyStream)
- function lstatcb_ (er, lstat) {
- if (er && er.code === 'ENOENT')
- return cb()
+ reader.on("end", handleEnd)
- var isSym = lstat && lstat.isSymbolicLink()
- self.symlinks[abs] = isSym
+ writer.on("drain", function() {
+ stream.emit("drain")
+ })
- // 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)
- }
-}
+ writer.on("error", reemit)
+ reader.on("error", reemit)
-Glob.prototype._readdir = function (abs, inGlobStar, cb) {
- if (this.aborted)
- return
+ stream.writable = writer.writable
+ stream.readable = reader.readable
- cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
- if (!cb)
- return
+ return stream
- //console.error('RD %j %j', +inGlobStar, abs)
- if (inGlobStar && !ownProp(this.symlinks, abs))
- return this._readdirInGlobStar(abs, cb)
+ function proxyWriter(methodName) {
+ stream[methodName] = method
- if (ownProp(this.cache, abs)) {
- var c = this.cache[abs]
- if (!c || c === 'FILE')
- return cb()
+ function method() {
+ return writer[methodName].apply(writer, arguments)
+ }
+ }
- if (Array.isArray(c))
- return cb(null, c)
- }
+ function proxyReader(methodName) {
+ stream[methodName] = method
- var self = this
- self.fs.readdir(abs, readdirCb(this, abs, cb))
-}
+ function method() {
+ stream.emit(methodName)
+ var func = reader[methodName]
+ if (func) {
+ return func.apply(reader, arguments)
+ }
+ reader.emit(methodName)
+ }
+ }
-function readdirCb (self, abs, cb) {
- return function (er, entries) {
- if (er)
- self._readdirError(abs, er, cb)
- else
- self._readdirEntries(abs, entries, cb)
- }
-}
+ function proxyStream(methodName) {
+ reader.on(methodName, reemit)
-Glob.prototype._readdirEntries = function (abs, entries, cb) {
- if (this.aborted)
- return
+ function reemit() {
+ var args = slice.call(arguments)
+ args.unshift(methodName)
+ stream.emit.apply(stream, args)
+ }
+ }
- // 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
+ function handleEnd() {
+ if (ended) {
+ return
+ }
+ ended = true
+ var args = slice.call(arguments)
+ args.unshift("end")
+ stream.emit.apply(stream, args)
}
- }
- this.cache[abs] = entries
- return cb(null, entries)
+ function reemit(err) {
+ stream.emit("error", err)
+ }
}
-Glob.prototype._readdirError = function (f, er, cb) {
- if (this.aborted)
- return
-
- // 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
-
- case 'ENOENT': // not terribly unusual
- case 'ELOOP':
- case 'ENAMETOOLONG':
- case 'UNKNOWN':
- this.cache[this._makeAbs(f)] = false
- break
- 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
- }
+/***/ }),
+/* 347 */
+/***/ (function(module, exports) {
- return cb()
-}
+module.exports = require("string_decoder");
-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)
- })
-}
+/***/ }),
+/* 348 */
+/***/ (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
-Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
- //console.error('pgs2', prefix, remain[0], entries)
- // no entries means not a dir, so it can never have matches
- // foo.txt/** doesn't match foo.txt
- if (!entries)
- return cb()
- // 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)
+var minimist = __webpack_require__(349);
+var path = __webpack_require__(4);
- // the noGlobStar pattern exits the inGlobStar state
- this._process(noGlobStar, index, false, cb)
+var Logger = __webpack_require__(344);
+var pkg = __webpack_require__(350);
- var isSym = this.symlinks[abs]
- var len = entries.length
+module.exports = cli;
- // If it's a symlink, and we're in a globstar, then stop
- if (isSym && inGlobStar)
- return cb()
+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);
+ }
+}
- for (var i = 0; i < len; i++) {
- var e = entries[i]
- if (e.charAt(0) === '.' && !this.dot)
- continue
+function version($0, p) {
+ p('%s v%s', pkg.name, pkg.version);
+}
- // these two cases enter the inGlobStar state
- var instead = gspref.concat(entries[i], remainWithoutGlobStar)
- this._process(instead, index, true, cb)
+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('');
- var below = gspref.concat(entries[i], remain)
- this._process(below, index, true, cb)
+ function boolOpt(name, def) {
+ name = name + PADDING.slice(0, 20-name.length);
+ p(' --%s default: %s', name, def);
}
- cb()
+ function stdOpt(name, def) {
+ var value = name.toUpperCase() +
+ PADDING.slice(0, 19 - name.length*2);
+ p(' --%s %s default: %j', name, value, def);
+ }
}
-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) {
- //console.error('ps2', prefix, exists)
+/***/ }),
+/* 349 */
+/***/ (function(module, exports) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
+module.exports = function (args, opts) {
+ if (!opts) opts = {};
+
+ var flags = { bools : {}, strings : {}, unknownFn: null };
- // If it doesn't exist, then just mark the lack of results
- if (!exists)
- return cb()
+ if (typeof opts['unknown'] === 'function') {
+ flags.unknownFn = opts['unknown'];
+ }
- if (prefix && isAbsolute(prefix) && !this.nomount) {
- var trail = /[\/\\]$/.test(prefix)
- if (prefix.charAt(0) === '/') {
- prefix = path.join(this.root, prefix)
+ if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
+ flags.allBools = true;
} else {
- prefix = path.resolve(this.root, prefix)
- if (trail)
- prefix += '/'
+ [].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;
+ }));
+ });
+ });
- if (process.platform === 'win32')
- prefix = prefix.replace(/\\/g, '/')
-
- // Mark this as a match
- this._emitMatch(index, prefix)
- cb()
-}
+ [].concat(opts.string).filter(Boolean).forEach(function (key) {
+ flags.strings[key] = true;
+ if (aliases[key]) {
+ flags.strings[aliases[key]] = true;
+ }
+ });
-// Returns either 'DIR', 'FILE', or false
-Glob.prototype._stat = function (f, cb) {
- var abs = this._makeAbs(f)
- var needDir = f.slice(-1) === '/'
+ var defaults = opts['default'] || {};
+
+ var argv = { _ : [] };
+ Object.keys(flags.bools).forEach(function (key) {
+ setArg(key, defaults[key] === undefined ? false : defaults[key]);
+ });
+
+ var notFlags = [];
- if (f.length > this.maxLength)
- return cb()
+ if (args.indexOf('--') !== -1) {
+ notFlags = args.slice(args.indexOf('--')+1);
+ args = args.slice(0, args.indexOf('--'));
+ }
- if (!this.stat && ownProp(this.cache, abs)) {
- var c = this.cache[abs]
+ function argDefined(key, arg) {
+ return (flags.allBools && /^--[^=]+$/.test(arg)) ||
+ flags.strings[key] || flags.bools[key] || aliases[key];
+ }
- if (Array.isArray(c))
- c = 'DIR'
+ function setArg (key, val, arg) {
+ if (arg && flags.unknownFn && !argDefined(key, arg)) {
+ if (flags.unknownFn(arg) === false) return;
+ }
- // It exists, but maybe not how we need it
- if (!needDir || c === 'DIR')
- return cb(null, c)
+ 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);
+ });
+ }
- if (needDir && c === 'FILE')
- return cb()
+ 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];
+ }
- // otherwise we have to stat, because maybe c=true
- // if we know it exists, but not what it is.
- }
+ 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];
+ });
+ }
- var exists
- var stat = this.statCache[abs]
- if (stat !== undefined) {
- if (stat === false)
- return cb(null, stat)
+ 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 {
- var type = stat.isDirectory() ? 'DIR' : 'FILE'
- if (needDir && type === 'FILE')
- return cb()
- else
- return cb(null, type, stat)
+ notFlags.forEach(function(key) {
+ argv._.push(key);
+ });
}
- }
- var self = this
- var statcb = inflight('stat\0' + abs, lstatcb_)
- if (statcb)
- self.fs.lstat(abs, statcb)
+ return argv;
+};
- 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)
- }
- }
-}
+function hasKey (obj, keys) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ o = (o[key] || {});
+ });
-Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
- if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
- this.statCache[abs] = false
- return cb()
- }
+ var key = keys[keys.length - 1];
+ return key in o;
+}
- var needDir = f.slice(-1) === '/'
- this.statCache[abs] = stat
+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);
+}
- 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
+function isConstructorOrProto (obj, key) {
+ return key === 'constructor' && typeof obj[key] === 'function' || key === '__proto__';
+}
- if (needDir && c === 'FILE')
- return cb()
- return cb(null, c, stat)
-}
+/***/ }),
+/* 350 */
+/***/ (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\"}}");
/***/ }),
-/* 245 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 351 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-module.exports = realpath
-realpath.realpath = realpath
-realpath.sync = realpathSync
-realpath.realpathSync = realpathSync
-realpath.monkeypatch = monkeypatch
-realpath.unmonkeypatch = unmonkeypatch
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "linkProjectExecutables", function() { return linkProjectExecutables; });
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(352);
+/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(341);
+/*
+ * 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.
+ */
-var fs = __webpack_require__(132)
-var origRealpath = fs.realpath
-var origRealpathSync = fs.realpathSync
-var version = process.version
-var ok = /^v[0-5]\./.test(version)
-var old = __webpack_require__(246)
-function newError (er) {
- return er && er.syscall === 'realpath' && (
- er.code === 'ELOOP' ||
- er.code === 'ENOMEM' ||
- er.code === 'ENAMETOOLONG'
- )
-}
-function realpath (p, cache, cb) {
- if (ok) {
- return origRealpath(p, cache, cb)
- }
+/**
+ * Yarn does not link the executables from dependencies that are installed
+ * using `link:` https://github.com/yarnpkg/yarn/pull/5046
+ *
+ * We simulate this functionality by walking through each project's project
+ * dependencies, and manually linking their executables if defined. The logic
+ * for linking was mostly adapted from lerna: https://github.com/lerna/lerna/blob/1d7eb9eeff65d5a7de64dea73613b1bf6bfa8d57/src/PackageUtilities.js#L348
+ */
+async function linkProjectExecutables(projectsByName, projectGraph) {
+ _log__WEBPACK_IMPORTED_MODULE_2__["log"].debug(`Linking package executables`); // Find root and generate executables from dependencies for it
- 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)
- }
- })
-}
+ let rootProject = null;
+ let rootProjectDeps = [];
-function realpathSync (p, cache) {
- if (ok) {
- return origRealpathSync(p, cache)
- }
+ for (const [projectName, projectDeps] of projectGraph) {
+ const project = projectsByName.get(projectName);
- try {
- return origRealpathSync(p, cache)
- } catch (er) {
- if (newError(er)) {
- return old.realpathSync(p, cache)
- } else {
- throw er
+ if (project.isSinglePackageJsonProject) {
+ rootProject = projectsByName.get(projectName);
+ rootProjectDeps = projectDeps;
+ break;
}
}
-}
-
-function monkeypatch () {
- fs.realpath = realpath
- fs.realpathSync = realpathSync
-}
-
-function unmonkeypatch () {
- fs.realpath = origRealpath
- fs.realpathSync = origRealpathSync
-}
-
-
-/***/ }),
-/* 246 */
-/***/ (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.
+ if (!rootProject) {
+ throw new Error('Could not finding root project while linking package executables');
+ } // Prepare root project node_modules/.bin
-var pathModule = __webpack_require__(4);
-var isWindows = process.platform === 'win32';
-var fs = __webpack_require__(132);
-// JavaScript implementation of realpath, ported from node pre-v6
+ const rootBinsDir = Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootProject.nodeModulesLocation, '.bin');
-var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);
+ for (const rootProjectDep of rootProjectDeps) {
+ const executables = rootProjectDep.getExecutables();
-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;
+ for (const name of Object.keys(executables)) {
+ const srcPath = executables[name]; // existing logic from lerna -- ensure that the bin we are going to
+ // point to exists or ignore it
- return callback;
+ if (!(await Object(_fs__WEBPACK_IMPORTED_MODULE_1__["isFile"])(srcPath))) {
+ continue;
+ }
- function debugCallback(err) {
- if (err) {
- backtrace.message = err.message;
- err = backtrace;
- missingCallback(err);
- }
- }
+ const dest = Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootBinsDir, name); // Get relative project path with normalized path separators.
- 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);
- }
+ const rootProjectRelativePath = Object(path__WEBPACK_IMPORTED_MODULE_0__["relative"])(rootProject.path, srcPath).split(path__WEBPACK_IMPORTED_MODULE_0__["sep"]).join('/');
+ _log__WEBPACK_IMPORTED_MODULE_2__["log"].debug(`[${rootProject.name}] ${name} -> ${rootProjectRelativePath}`);
+ await Object(_fs__WEBPACK_IMPORTED_MODULE_1__["mkdirp"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["dirname"])(dest));
+ await Object(_fs__WEBPACK_IMPORTED_MODULE_1__["createSymlink"])(srcPath, dest, 'exec');
+ await Object(_fs__WEBPACK_IMPORTED_MODULE_1__["chmod"])(dest, '755');
}
}
}
-function maybeCallback(cb) {
- return typeof cb === 'function' ? cb : rethrow();
-}
-
-var normalize = pathModule.normalize;
+/***/ }),
+/* 352 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-// 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;
-}
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readFile", function() { return readFile; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "writeFile", function() { return writeFile; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "chmod", function() { return chmod; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mkdirp", function() { return mkdirp; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rmdirp", function() { return rmdirp; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unlink", function() { return unlink; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyDirectory", function() { return copyDirectory; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSymlink", function() { return isSymlink; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDirectory", function() { return isDirectory; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFile", function() { return isFile; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createSymlink", function() { return createSymlink; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryRealpath", function() { return tryRealpath; });
+/* harmony import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(353);
+/* harmony import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cmd_shim__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(361);
+/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(253);
+/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var ncp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(460);
+/* harmony import */ var ncp__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(ncp__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_4__);
+/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(234);
+/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_5__);
+/*
+ * 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.
+ */
-// Regex to find the device root, including trailing slash. E.g. 'c:\\'.
-if (isWindows) {
- var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;
-} else {
- var splitRootRe = /^[\/]*/;
-}
-exports.realpathSync = function realpathSync(p, cache) {
- // make p is absolute
- p = pathModule.resolve(p);
- if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
- return 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 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;
- }
- }
-
- // 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;
- }
-
- 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;
- }
+const lstat = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.lstat);
+const readFile = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.readFile);
+const writeFile = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.writeFile);
+const symlink = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.symlink);
+const chmod = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.chmod);
+const cmdShim = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(cmd_shim__WEBPACK_IMPORTED_MODULE_0___default.a);
+const mkdir = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.mkdir);
+const realpathNative = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.realpath.native);
+const mkdirp = async path => await mkdir(path, {
+ recursive: true
+});
+const rmdirp = async path => await del__WEBPACK_IMPORTED_MODULE_1___default()(path, {
+ force: true
+});
+const unlink = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_2___default.a.unlink);
+const copyDirectory = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(ncp__WEBPACK_IMPORTED_MODULE_3__["ncp"]);
- // 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;
+async function statTest(path, block) {
+ try {
+ return block(await lstat(path));
+ } catch (e) {
+ if (e.code === 'ENOENT') {
+ return false;
}
- // resolve the link, then start over
- p = pathModule.resolve(resolvedLink, p.slice(pos));
- start();
- }
-
- if (cache) cache[original] = p;
-
- return p;
-};
-
-
-exports.realpath = function realpath(p, cache, cb) {
- if (typeof cb !== 'function') {
- cb = maybeCallback(cache);
- cache = null;
- }
-
- // 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]));
+ throw e;
}
+}
+/**
+ * Test if a path points to a symlink.
+ * @param path
+ */
- 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;
+async function isSymlink(path) {
+ return await statTest(path, stats => stats.isSymbolicLink());
+}
+/**
+ * Test if a path points to a directory.
+ * @param path
+ */
- start();
+async function isDirectory(path) {
+ return await statTest(path, stats => stats.isDirectory());
+}
+/**
+ * Test if a path points to a regular file.
+ * @param path
+ */
- function start() {
- // Skip over roots
- var m = splitRootRe.exec(p);
- pos = m[0].length;
- current = m[0];
- base = m[0];
- previous = '';
+async function isFile(path) {
+ return await statTest(path, stats => stats.isFile());
+}
+/**
+ * Create a symlink at dest that points to src. Adapted from
+ * https://github.com/lerna/lerna/blob/2f1b87d9e2295f587e4ac74269f714271d8ed428/src/FileSystemUtilities.js#L103.
+ *
+ * @param src
+ * @param dest
+ * @param type 'dir', 'file', 'junction', or 'exec'. 'exec' on
+ * windows will use the `cmd-shim` module since symlinks can't be used
+ * for executable files on windows.
+ */
- // 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();
- });
+async function createSymlink(src, dest, type) {
+ if (process.platform === 'win32') {
+ if (type === 'exec') {
+ await cmdShim(src, dest);
} else {
- process.nextTick(LOOP);
+ await forceCreate(src, dest, type);
}
+ } else {
+ const posixType = type === 'exec' ? 'file' : type;
+ const relativeSource = Object(path__WEBPACK_IMPORTED_MODULE_4__["relative"])(Object(path__WEBPACK_IMPORTED_MODULE_4__["dirname"])(dest), src);
+ await forceCreate(relativeSource, dest, posixType);
}
+}
- // 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);
- }
-
- if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
- // known symbolic link. no need to stat again.
- return gotResolvedLink(cache[base]);
+async function forceCreate(src, dest, type) {
+ try {
+ // If something exists at `dest` we need to remove it first.
+ await unlink(dest);
+ } catch (error) {
+ if (error.code !== 'ENOENT') {
+ throw error;
}
-
- return fs.lstat(base, gotStat);
}
- function gotStat(err, stat) {
- if (err) return cb(err);
+ await symlink(src, dest, type);
+}
- // 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);
- }
+async function tryRealpath(path) {
+ let calculatedPath = path;
- // 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);
- }
+ try {
+ calculatedPath = await realpathNative(path);
+ } catch (error) {
+ if (error.code !== 'ENOENT') {
+ throw error;
}
- 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();
}
-};
+ return calculatedPath;
+}
/***/ }),
-/* 247 */
+/* 353 */
/***/ (function(module, exports, __webpack_require__) {
-module.exports = minimatch
-minimatch.Minimatch = Minimatch
-
-var path = (function () { try { return __webpack_require__(4) } catch (e) {}}()) || {
- sep: '/'
-}
-minimatch.sep = path.sep
-
-var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
-var expand = __webpack_require__(248)
+// On windows, create a .cmd file.
+// Read the #! in the file to see what it uses. The vast majority
+// of the time, this will be either:
+// "#!/usr/bin/env "
+// or:
+// "#! "
+//
+// Write a binroot/pkg.bin + ".cmd" file that has this line in it:
+// @ %~dp0 %*
-var plTypes = {
- '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},
- '?': { open: '(?:', close: ')?' },
- '+': { open: '(?:', close: ')+' },
- '*': { open: '(?:', close: ')*' },
- '@': { open: '(?:', close: ')' }
-}
+module.exports = cmdShim
+cmdShim.ifExists = cmdShimIfExists
-// any single thing other than /
-// don't need to escape / when using new RegExp()
-var qmark = '[^/]'
+var fs = __webpack_require__(354)
-// * => any number of characters
-var star = qmark + '*?'
+var mkdir = __webpack_require__(359)
+ , path = __webpack_require__(4)
+ , toBatchSyntax = __webpack_require__(360)
+ , shebangExpr = /^#\!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+=[^ \t]+\s+)*\s*([^ \t]+)(.*)$/
-// ** 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})($|\\\/)).)*?'
+function cmdShimIfExists (from, to, cb) {
+ fs.stat(from, function (er) {
+ if (er) return cb()
+ cmdShim(from, to, cb)
+ })
+}
-// not a ^ or / followed by a dot,
-// followed by anything, any number of times.
-var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
+// Try to unlink, but ignore errors.
+// Any problems will surface later.
+function rm (path, cb) {
+ fs.unlink(path, function(er) {
+ cb()
+ })
+}
-// characters that need to be escaped in RegExp.
-var reSpecials = charSet('().*{}+?[]^$\\!')
+function cmdShim (from, to, cb) {
+ fs.stat(from, function (er, stat) {
+ if (er)
+ return cb(er)
-// "abc" -> { a:true, b:true, c:true }
-function charSet (s) {
- return s.split('').reduce(function (set, c) {
- set[c] = true
- return set
- }, {})
+ cmdShim_(from, to, cb)
+ })
}
-// normalizes slashes.
-var slashSplit = /\/+/
+function cmdShim_ (from, to, cb) {
+ var then = times(2, next, cb)
+ rm(to, then)
+ rm(to + ".cmd", then)
-minimatch.filter = filter
-function filter (pattern, options) {
- options = options || {}
- return function (p, i, list) {
- return minimatch(p, pattern, options)
+ function next(er) {
+ writeShim(from, to, cb)
}
}
-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]
+function writeShim (from, to, cb) {
+ // make a cmd file and a sh script
+ // First, check if the bin is a #! of some sort.
+ // If not, then assume it's something that'll be compiled, or some other
+ // sort of script, and just call it directly.
+ mkdir(path.dirname(to), function (er) {
+ if (er)
+ return cb(er)
+ fs.readFile(from, "utf8", function (er, data) {
+ if (er) return writeShim_(from, to, null, null, cb)
+ var firstLine = data.trim().split(/\r*\n/)[0]
+ , shebang = firstLine.match(shebangExpr)
+ if (!shebang) return writeShim_(from, to, null, null, null, cb)
+ var vars = shebang[1] || ""
+ , prog = shebang[2]
+ , args = shebang[3] || ""
+ return writeShim_(from, to, prog, args, vars, cb)
+ })
})
- 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))
+function writeShim_ (from, to, prog, args, variables, cb) {
+ var shTarget = path.relative(path.dirname(to), from)
+ , target = shTarget.split("/").join("\\")
+ , longProg
+ , shProg = prog && prog.split("\\").join("/")
+ , shLongProg
+ , pwshProg = shProg && "\"" + shProg + "$exe\""
+ , pwshLongProg
+ shTarget = shTarget.split("\\").join("/")
+ args = args || ""
+ variables = variables || ""
+ if (!prog) {
+ prog = "\"%~dp0\\" + target + "\""
+ shProg = "\"$basedir/" + shTarget + "\""
+ pwshProg = shProg
+ args = ""
+ target = ""
+ shTarget = ""
+ } else {
+ longProg = "\"%~dp0\\" + prog + ".exe\""
+ shLongProg = "\"$basedir/" + prog + "\""
+ pwshLongProg = "\"$basedir/" + prog + "$exe\""
+ target = "\"%~dp0\\" + target + "\""
+ shTarget = "\"$basedir/" + shTarget + "\""
}
- m.match = function (list, pattern, options) {
- return orig.match(list, pattern, ext(def, options))
+ // @SETLOCAL
+ //
+ // @IF EXIST "%~dp0\node.exe" (
+ // @SET "_prog=%~dp0\node.exe"
+ // ) ELSE (
+ // @SET "_prog=node"
+ // @SET PATHEXT=%PATHEXT:;.JS;=;%
+ // )
+ //
+ // "%_prog%" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
+ // @ENDLOCAL
+ var cmd
+ if (longProg) {
+ shLongProg = shLongProg.trim();
+ args = args.trim();
+ var variableDeclarationsAsBatch = toBatchSyntax.convertToSetCommands(variables)
+ cmd = "@SETLOCAL\r\n"
+ + variableDeclarationsAsBatch
+ + "\r\n"
+ + "@IF EXIST " + longProg + " (\r\n"
+ + " @SET \"_prog=" + longProg.replace(/(^")|("$)/g, '') + "\"\r\n"
+ + ") ELSE (\r\n"
+ + " @SET \"_prog=" + prog.replace(/(^")|("$)/g, '') + "\"\r\n"
+ + " @SET PATHEXT=%PATHEXT:;.JS;=;%\r\n"
+ + ")\r\n"
+ + "\r\n"
+ + "\"%_prog%\" " + args + " " + target + " %*\r\n"
+ + '@ENDLOCAL\r\n'
+ } else {
+ cmd = "@" + prog + " " + args + " " + target + " %*\r\n"
}
- return m
-}
-
-Minimatch.defaults = function (def) {
- return minimatch.defaults(def).Minimatch
-}
+ // #!/bin/sh
+ // basedir=`dirname "$0"`
+ //
+ // case `uname` in
+ // *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+ // esac
+ //
+ // if [ -x "$basedir/node.exe" ]; then
+ // "$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
+ // ret=$?
+ // else
+ // node "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
+ // ret=$?
+ // fi
+ // exit $ret
-function minimatch (p, pattern, options) {
- assertValidPattern(pattern)
+ var sh = "#!/bin/sh\n"
- if (!options) options = {}
+ sh = sh
+ + "basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\,/,g')\")\n"
+ + "\n"
+ + "case `uname` in\n"
+ + " *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w \"$basedir\"`;;\n"
+ + "esac\n"
+ + "\n"
- // shortcut: comments match nothing.
- if (!options.nocomment && pattern.charAt(0) === '#') {
- return false
+ if (shLongProg) {
+ sh = sh
+ + "if [ -x "+shLongProg+" ]; then\n"
+ + " " + variables + shLongProg + " " + args + " " + shTarget + " \"$@\"\n"
+ + " ret=$?\n"
+ + "else \n"
+ + " " + variables + shProg + " " + args + " " + shTarget + " \"$@\"\n"
+ + " ret=$?\n"
+ + "fi\n"
+ + "exit $ret\n"
+ } else {
+ sh = sh
+ + shProg + " " + args + " " + shTarget + " \"$@\"\n"
+ + "exit $?\n"
}
- return new Minimatch(pattern, options).match(p)
-}
-
-function Minimatch (pattern, options) {
- if (!(this instanceof Minimatch)) {
- return new Minimatch(pattern, options)
+ // #!/usr/bin/env pwsh
+ // $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+ //
+ // $ret=0
+ // $exe = ""
+ // if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ // # Fix case when both the Windows and Linux builds of Node
+ // # are installed in the same directory
+ // $exe = ".exe"
+ // }
+ // if (Test-Path "$basedir/node") {
+ // & "$basedir/node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args
+ // $ret=$LASTEXITCODE
+ // } else {
+ // & "node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args
+ // $ret=$LASTEXITCODE
+ // }
+ // exit $ret
+ var pwsh = "#!/usr/bin/env pwsh\n"
+ + "$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n"
+ + "\n"
+ + "$exe=\"\"\n"
+ + "if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n"
+ + " # Fix case when both the Windows and Linux builds of Node\n"
+ + " # are installed in the same directory\n"
+ + " $exe=\".exe\"\n"
+ + "}\n"
+ if (shLongProg) {
+ pwsh = pwsh
+ + "$ret=0\n"
+ + "if (Test-Path " + pwshLongProg + ") {\n"
+ + " & " + pwshLongProg + " " + args + " " + shTarget + " $args\n"
+ + " $ret=$LASTEXITCODE\n"
+ + "} else {\n"
+ + " & " + pwshProg + " " + args + " " + shTarget + " $args\n"
+ + " $ret=$LASTEXITCODE\n"
+ + "}\n"
+ + "exit $ret\n"
+ } else {
+ pwsh = pwsh
+ + "& " + pwshProg + " " + args + " " + shTarget + " $args\n"
+ + "exit $LASTEXITCODE\n"
}
- 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('/')
+ var then = times(3, next, cb)
+ fs.writeFile(to + ".ps1", pwsh, "utf8", then)
+ fs.writeFile(to + ".cmd", cmd, "utf8", then)
+ fs.writeFile(to, sh, "utf8", then)
+ function next () {
+ chmodShim(to, cb)
}
+}
- this.options = options
- this.set = []
- this.pattern = pattern
- this.regexp = null
- this.negate = false
- this.comment = false
- this.empty = false
- this.partial = !!options.partial
+function chmodShim (to, cb) {
+ var then = times(2, cb, cb)
+ fs.chmod(to, "0755", then)
+ fs.chmod(to + ".cmd", "0755", then)
+ fs.chmod(to + ".ps1", "0755", then)
+}
- // make the set of regexps etc.
- this.make()
+function times(n, ok, cb) {
+ var errState = null
+ return function(er) {
+ if (!errState) {
+ if (er)
+ cb(errState = er)
+ else if (--n === 0)
+ ok()
+ }
+ }
}
-Minimatch.prototype.debug = function () {}
-Minimatch.prototype.make = make
-function make () {
- var pattern = this.pattern
- var options = this.options
+/***/ }),
+/* 354 */
+/***/ (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
- }
+var fs = __webpack_require__(253)
+var polyfills = __webpack_require__(355)
+var legacy = __webpack_require__(357)
+var clone = __webpack_require__(358)
- // step 1: figure out negation, etc.
- this.parseNegate()
+var util = __webpack_require__(234)
- // step 2: expand braces
- var set = this.globSet = this.braceExpand()
+/* istanbul ignore next - node 0.x polyfill */
+var gracefulQueue
+var previousSymbol
- if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) }
+/* 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'
+}
- this.debug(this.pattern, set)
+function noop () {}
- // 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)
+function publishQueue(context, queue) {
+ Object.defineProperty(context, gracefulQueue, {
+ get: function() {
+ return queue
+ }
})
+}
- this.debug(this.pattern, set)
-
- // glob --> regexps
- set = set.map(function (s, si, set) {
- return s.map(this.parse, this)
- }, this)
+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(this.pattern, set)
+// Once time initialization
+if (!fs[gracefulQueue]) {
+ // This queue can be shared by multiple loaded instances
+ var queue = global[gracefulQueue] || []
+ publishQueue(fs, queue)
- // filter out everything that didn't compile properly.
- set = set.filter(function (s) {
- return s.indexOf(false) === -1
- })
+ // 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()
+ }
- this.debug(this.pattern, set)
+ if (typeof cb === 'function')
+ cb.apply(this, arguments)
+ })
+ }
- this.set = set
-}
+ Object.defineProperty(close, previousSymbol, {
+ value: fs$close
+ })
+ return close
+ })(fs.close)
-Minimatch.prototype.parseNegate = parseNegate
-function parseNegate () {
- var pattern = this.pattern
- var negate = false
- var options = this.options
- var negateOffset = 0
+ fs.closeSync = (function (fs$closeSync) {
+ function closeSync (fd) {
+ // This function uses the graceful-fs shared queue
+ fs$closeSync.apply(fs, arguments)
+ retry()
+ }
- if (options.nonegate) return
+ Object.defineProperty(closeSync, previousSymbol, {
+ value: fs$closeSync
+ })
+ return closeSync
+ })(fs.closeSync)
- for (var i = 0, l = pattern.length
- ; i < l && pattern.charAt(i) === '!'
- ; i++) {
- negate = !negate
- negateOffset++
+ if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) {
+ process.on('exit', function() {
+ debug(fs[gracefulQueue])
+ __webpack_require__(283).equal(fs[gracefulQueue].length, 0)
+ })
}
+}
- if (negateOffset) this.pattern = pattern.substr(negateOffset)
- this.negate = negate
+if (!global[gracefulQueue]) {
+ publishQueue(global, fs[gracefulQueue]);
}
-// 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)
+module.exports = patch(clone(fs))
+if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {
+ module.exports = patch(fs)
+ fs.__patched = true;
}
-Minimatch.prototype.braceExpand = braceExpand
+function patch (fs) {
+ // Everything that references the open() function needs to be in here
+ polyfills(fs)
+ fs.gracefulify = patch
-function braceExpand (pattern, options) {
- if (!options) {
- if (this instanceof Minimatch) {
- options = this.options
- } else {
- options = {}
+ 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()
+ }
+ })
}
}
- pattern = typeof pattern === 'undefined'
- ? this.pattern : pattern
+ var fs$writeFile = fs.writeFile
+ fs.writeFile = writeFile
+ function writeFile (path, data, options, cb) {
+ if (typeof options === 'function')
+ cb = options, options = null
- assertValidPattern(pattern)
+ return go$writeFile(path, data, options, cb)
- // 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]
+ 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()
+ }
+ })
+ }
}
- return expand(pattern)
-}
+ 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
-var MAX_PATTERN_LENGTH = 1024 * 64
-var assertValidPattern = function (pattern) {
- if (typeof pattern !== 'string') {
- throw new TypeError('invalid pattern')
- }
+ return go$appendFile(path, data, options, cb)
- if (pattern.length > MAX_PATTERN_LENGTH) {
- throw new TypeError('pattern is too long')
+ 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()
+ }
+ })
+ }
}
-}
-// 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 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)
- var options = this.options
+ return go$readdir(args)
- // shortcuts
- if (pattern === '**') {
- if (!options.noglobstar)
- return GLOBSTAR
- else
- pattern = '*'
- }
- if (pattern === '') return ''
+ function go$readdir$cb (err, files) {
+ if (files && files.sort)
+ files.sort()
- 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 (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
+ enqueue([go$readdir, [args]])
- 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
+ else {
+ if (typeof cb === 'function')
+ cb.apply(this, arguments)
+ retry()
}
- 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)
+ function go$readdir (args) {
+ return fs$readdir.apply(fs, args)
+ }
- // skip over any that are escaped.
- if (escaping && reSpecials[c]) {
- re += '\\' + c
- escaping = false
- continue
- }
+ if (process.version.substr(0, 4) === 'v0.8') {
+ var legStreams = legacy(fs)
+ ReadStream = legStreams.ReadStream
+ WriteStream = legStreams.WriteStream
+ }
- switch (c) {
- /* istanbul ignore next */
- case '/': {
- // completely not allowed, even escaped.
- // Should already be path-split by now.
- return false
- }
+ var fs$ReadStream = fs.ReadStream
+ if (fs$ReadStream) {
+ ReadStream.prototype = Object.create(fs$ReadStream.prototype)
+ ReadStream.prototype.open = ReadStream$open
+ }
- case '\\':
- clearStateChar()
- escaping = true
- continue
+ var fs$WriteStream = fs.WriteStream
+ if (fs$WriteStream) {
+ WriteStream.prototype = Object.create(fs$WriteStream.prototype)
+ WriteStream.prototype.open = WriteStream$open
+ }
- // 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)
+ 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
+ })
- // 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
- }
+ // 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
+ })
- // 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
+ function ReadStream (path, options) {
+ if (this instanceof ReadStream)
+ return fs$ReadStream.apply(this, arguments), this
+ else
+ return ReadStream.apply(Object.create(ReadStream.prototype), arguments)
+ }
- 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
+ function ReadStream$open () {
+ var that = this
+ open(that.path, that.flags, that.mode, function (err, fd) {
+ if (err) {
+ if (that.autoClose)
+ that.destroy()
- } // switch
- } // for
+ that.emit('error', err)
+ } else {
+ that.fd = fd
+ that.emit('open', fd)
+ that.read()
+ }
+ })
+ }
- // 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]
+ function WriteStream (path, options) {
+ if (this instanceof WriteStream)
+ return fs$WriteStream.apply(this, arguments), this
+ else
+ return WriteStream.apply(Object.create(WriteStream.prototype), arguments)
}
- // 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 = '\\'
+ 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)
}
-
- // 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 += '\\\\'
+ function createReadStream (path, options) {
+ return new fs.ReadStream(path, options)
}
- // 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
+ function createWriteStream (path, options) {
+ return new fs.WriteStream(path, options)
}
- // 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
+ var fs$open = fs.open
+ fs.open = open
+ function open (path, flags, mode, cb) {
+ if (typeof mode === 'function')
+ cb = mode, mode = null
- // 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
+ return go$open(path, flags, mode, cb)
- var dollar = ''
- if (nlAfter === '' && isSub !== SUBPARSE) {
- dollar = '$'
+ 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()
+ }
+ })
}
- 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]
- }
+ return fs
+}
- // 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)
- }
+function enqueue (elem) {
+ debug('ENQUEUE', elem[0].name, elem[1])
+ fs[gracefulQueue].push(elem)
+}
- 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('$.')
+function retry () {
+ var elem = fs[gracefulQueue].shift()
+ if (elem) {
+ debug('RETRY', elem[0].name, elem[1])
+ elem[0].apply(null, elem[1])
}
-
- 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
+/***/ }),
+/* 355 */
+/***/ (function(module, exports, __webpack_require__) {
- // 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
+var constants = __webpack_require__(356)
- if (!set.length) {
- this.regexp = false
- return this.regexp
- }
- var options = this.options
+var origCwd = process.cwd
+var cwd = null
- var twoStar = options.noglobstar ? star
- : options.dot ? twoStarDot
- : twoStarNoDot
- var flags = options.nocase ? 'i' : ''
+var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform
- var re = set.map(function (pattern) {
- return pattern.map(function (p) {
- return (p === GLOBSTAR) ? twoStar
- : (typeof p === 'string') ? regExpEscape(p)
- : p._src
- }).join('\\\/')
- }).join('|')
+process.cwd = function() {
+ if (!cwd)
+ cwd = origCwd.call(process)
+ return cwd
+}
+try {
+ process.cwd()
+} catch (er) {}
- // must match entire pattern
- // ending in a * or ** will make it less strict.
- re = '^(?:' + re + ')$'
+var chdir = process.chdir
+process.chdir = function(d) {
+ cwd = null
+ chdir.call(process, d)
+}
- // can match anything, as long as it's not this.
- if (this.negate) re = '^(?!' + re + ').*$'
+module.exports = patch
- try {
- this.regexp = new RegExp(re, flags)
- } catch (ex) /* istanbul ignore next - should be impossible */ {
- this.regexp = false
- }
- return this.regexp
-}
+function patch (fs) {
+ // (re-)implement some things that are known busted or missing.
-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)
+ // 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)
}
- 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 === ''
+ // lutimes implementation, or no-op
+ if (!fs.lutimes) {
+ patchLutimes(fs)
+ }
- if (f === '/' && partial) return true
+ // 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.
- var options = this.options
+ fs.chown = chownFix(fs.chown)
+ fs.fchown = chownFix(fs.fchown)
+ fs.lchown = chownFix(fs.lchown)
- // windows: need to use /, not \
- if (path.sep !== '/') {
- f = f.split(path.sep).join('/')
- }
+ fs.chmod = chmodFix(fs.chmod)
+ fs.fchmod = chmodFix(fs.fchmod)
+ fs.lchmod = chmodFix(fs.lchmod)
- // treat the test path as a set of pathparts.
- f = f.split(slashSplit)
- this.debug(this.pattern, 'split', f)
+ fs.chownSync = chownFixSync(fs.chownSync)
+ fs.fchownSync = chownFixSync(fs.fchownSync)
+ fs.lchownSync = chownFixSync(fs.lchownSync)
- // 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.
+ fs.chmodSync = chmodFixSync(fs.chmodSync)
+ fs.fchmodSync = chmodFixSync(fs.fchmodSync)
+ fs.lchmodSync = chmodFixSync(fs.lchmodSync)
- var set = this.set
- this.debug(this.pattern, 'set', set)
+ fs.stat = statFix(fs.stat)
+ fs.fstat = statFix(fs.fstat)
+ fs.lstat = statFix(fs.lstat)
- // 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
- }
+ fs.statSync = statFixSync(fs.statSync)
+ fs.fstatSync = statFixSync(fs.fstatSync)
+ fs.lstatSync = statFixSync(fs.lstatSync)
- for (i = 0; i < set.length; i++) {
- var pattern = set[i]
- var file = f
- if (options.matchBase && pattern.length === 1) {
- file = [filename]
+ // 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)
}
- var hit = this.matchOne(file, pattern, partial)
- if (hit) {
- if (options.flipNegate) return true
- return !this.negate
+ fs.lchmodSync = function () {}
+ }
+ if (!fs.lchown) {
+ fs.lchown = function (path, uid, gid, cb) {
+ if (cb) process.nextTick(cb)
}
+ fs.lchownSync = function () {}
}
- // didn't get any hits. this is success if it's a negative
- // pattern, failure otherwise.
- if (options.flipNegate) return false
- return this.negate
-}
+ // 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.
-// 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
+ // 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)
+ }
- this.debug('matchOne',
- { 'this': this, file: file, pattern: pattern })
+ // 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)
+ }
+ }
+ return fs$read.call(fs, fd, buffer, offset, length, position, callback)
+ }
- this.debug('matchOne', file.length, pattern.length)
+ // This ensures `util.promisify` works as it does for native `fs.read`.
+ read.__proto__ = fs$read
+ return read
+ })(fs.read)
- 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
+ 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
}
- return true
+ throw er
}
+ }
+ }})(fs.readSync)
- // ok, let's see if we can swallow whatever we can.
- while (fr < fl) {
- var swallowee = file[fr]
+ 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)
+ })
+ })
+ })
+ }
- this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
+ fs.lchmodSync = function (path, mode) {
+ var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
- // 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
+ // 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 {
- // 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
+ fs.closeSync(fd)
+ }
+ }
+ return ret
+ }
+ }
+
+ 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)
+ })
+ })
+ })
+ }
- // ** swallows a segment, and continue.
- this.debug('globstar swallow a segment, and continue')
- fr++
+ 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
}
- // 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
+ } else {
+ fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }
+ fs.lutimesSync = function () {}
+ }
+ }
+
+ 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 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 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)
+
+ 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)
+ })
}
+ }
- if (!hit) return false
+ 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
+ }
+ }
}
- // 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/*
+ 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)
+ }
+ }
- // 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] === '')
+ 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;
+ }
}
- // should be unreachable.
- /* istanbul ignore next */
- throw new Error('wtf?')
-}
+ // 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
-// replace stuff like \* with *
-function globUnescape (s) {
- return s.replace(/\\(.)/g, '$1')
-}
+ if (er.code === "ENOSYS")
+ return true
-function regExpEscape (s) {
- return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
+ var nonroot = !process.getuid || process.getuid() !== 0
+ if (nonroot) {
+ if (er.code === "EINVAL" || er.code === "EPERM")
+ return true
+ }
+
+ return false
+ }
}
/***/ }),
-/* 248 */
+/* 356 */
+/***/ (function(module, exports) {
+
+module.exports = require("constants");
+
+/***/ }),
+/* 357 */
/***/ (function(module, exports, __webpack_require__) {
-var concatMap = __webpack_require__(249);
-var balanced = __webpack_require__(250);
+var Stream = __webpack_require__(294).Stream
-module.exports = expandTop;
+module.exports = legacy
-var escSlash = '\0SLASH'+Math.random()+'\0';
-var escOpen = '\0OPEN'+Math.random()+'\0';
-var escClose = '\0CLOSE'+Math.random()+'\0';
-var escComma = '\0COMMA'+Math.random()+'\0';
-var escPeriod = '\0PERIOD'+Math.random()+'\0';
+function legacy (fs) {
+ return {
+ ReadStream: ReadStream,
+ WriteStream: WriteStream
+ }
-function numeric(str) {
- return parseInt(str, 10) == str
- ? parseInt(str, 10)
- : str.charCodeAt(0);
-}
+ function ReadStream (path, options) {
+ if (!(this instanceof ReadStream)) return new ReadStream(path, options);
-function escapeBraces(str) {
- return str.split('\\\\').join(escSlash)
- .split('\\{').join(escOpen)
- .split('\\}').join(escClose)
- .split('\\,').join(escComma)
- .split('\\.').join(escPeriod);
-}
+ Stream.call(this);
-function unescapeBraces(str) {
- return str.split(escSlash).join('\\')
- .split(escOpen).join('{')
- .split(escClose).join('}')
- .split(escComma).join(',')
- .split(escPeriod).join('.');
-}
+ var self = this;
+ this.path = path;
+ this.fd = null;
+ this.readable = true;
+ this.paused = false;
-// Basically just str.split(","), but handling cases
-// where we have nested braced sections, which should be
-// treated as individual members, like {a,{b,c},d}
-function parseCommaParts(str) {
- if (!str)
- return [''];
+ this.flags = 'r';
+ this.mode = 438; /*=0666*/
+ this.bufferSize = 64 * 1024;
- var parts = [];
- var m = balanced('{', '}', str);
+ options = options || {};
- if (!m)
- return str.split(',');
+ // 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];
+ }
- var pre = m.pre;
- var body = m.body;
- var post = m.post;
- var p = pre.split(',');
+ if (this.encoding) this.setEncoding(this.encoding);
- p[p.length-1] += '{' + body + '}';
- var postParts = parseCommaParts(post);
- if (post.length) {
- p[p.length-1] += postParts.shift();
- p.push.apply(p, postParts);
- }
+ 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');
+ }
- parts.push.apply(parts, p);
+ if (this.start > this.end) {
+ throw new Error('start must be <= end');
+ }
- return parts;
-}
+ this.pos = this.start;
+ }
-function expandTop(str) {
- if (!str)
- return [];
+ if (this.fd !== null) {
+ process.nextTick(function() {
+ self._read();
+ });
+ return;
+ }
- // I don't know why Bash 4.3 does this, but it does.
- // Anything starting with {} will have the first two bytes preserved
- // but *only* at the top level, so {},a}b will not expand to anything,
- // but a{},b}c will be expanded to [a}c,abc].
- // One could argue that this is a bug in Bash, but since the goal of
- // this module is to match Bash's rules, we escape a leading {}
- if (str.substr(0, 2) === '{}') {
- str = '\\{\\}' + str.substr(2);
- }
+ fs.open(this.path, this.flags, this.mode, function (err, fd) {
+ if (err) {
+ self.emit('error', err);
+ self.readable = false;
+ return;
+ }
- return expand(escapeBraces(str), true).map(unescapeBraces);
-}
+ self.fd = fd;
+ self.emit('open', fd);
+ self._read();
+ })
+ }
-function identity(e) {
- return e;
-}
+ function WriteStream (path, options) {
+ if (!(this instanceof WriteStream)) return new WriteStream(path, options);
-function embrace(str) {
- return '{' + str + '}';
-}
-function isPadded(el) {
- return /^-?0\d/.test(el);
-}
+ Stream.call(this);
-function lte(i, y) {
- return i <= y;
-}
-function gte(i, y) {
- return i >= y;
-}
+ this.path = path;
+ this.fd = null;
+ this.writable = true;
-function expand(str, isTop) {
- var expansions = [];
+ this.flags = 'w';
+ this.encoding = 'binary';
+ this.mode = 438; /*=0666*/
+ this.bytesWritten = 0;
- var m = balanced('{', '}', str);
- if (!m || /\$$/.test(m.pre)) return [str];
+ options = options || {};
- var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
- var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
- var isSequence = isNumericSequence || isAlphaSequence;
- var isOptions = m.body.indexOf(',') >= 0;
- if (!isSequence && !isOptions) {
- // {a},b}
- if (m.post.match(/,.*\}/)) {
- str = m.pre + '{' + m.body + escClose + m.post;
- return expand(str);
+ // 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];
}
- return [str];
- }
- var n;
- if (isSequence) {
- n = m.body.split(/\.\./);
- } else {
- n = parseCommaParts(m.body);
- if (n.length === 1) {
- // x{{a,b}}y ==> x{a}y x{b}y
- n = expand(n[0], false).map(embrace);
- if (n.length === 1) {
- var post = m.post.length
- ? expand(m.post, false)
- : [''];
- return post.map(function(p) {
- return m.pre + n[0] + p;
- });
+ 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');
}
+
+ this.pos = this.start;
}
- }
- // at this point, n is the parts, and we know it's not a comma set
- // with a single entry.
+ this.busy = false;
+ this._queue = [];
- // no need to expand pre, since it is guaranteed to be free of brace-sets
- var pre = m.pre;
- var post = m.post.length
- ? expand(m.post, false)
- : [''];
-
- var N;
-
- if (isSequence) {
- var x = numeric(n[0]);
- var y = numeric(n[1]);
- var width = Math.max(n[0].length, n[1].length)
- var incr = n.length == 3
- ? Math.abs(numeric(n[2]))
- : 1;
- var test = lte;
- var reverse = y < x;
- if (reverse) {
- incr *= -1;
- test = gte;
- }
- var pad = n.some(isPadded);
-
- N = [];
-
- for (var i = x; test(i, y); i += incr) {
- var c;
- if (isAlphaSequence) {
- c = String.fromCharCode(i);
- if (c === '\\')
- c = '';
- } else {
- c = String(i);
- if (pad) {
- var need = width - c.length;
- if (need > 0) {
- var z = new Array(need + 1).join('0');
- if (i < 0)
- c = '-' + z + c.slice(1);
- else
- c = z + c;
- }
- }
- }
- N.push(c);
- }
- } else {
- N = concatMap(n, function(el) { return expand(el, false) });
- }
-
- for (var j = 0; j < N.length; j++) {
- for (var k = 0; k < post.length; k++) {
- var expansion = pre + N[j] + post[k];
- if (!isTop || isSequence || expansion)
- expansions.push(expansion);
+ if (this.fd === null) {
+ this._open = fs.open;
+ this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);
+ this.flush();
}
}
-
- return expansions;
}
-
/***/ }),
-/* 249 */
-/***/ (function(module, exports) {
-
-module.exports = function (xs, fn) {
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- var x = fn(xs[i], i);
- if (isArray(x)) res.push.apply(res, x);
- else res.push(x);
- }
- return res;
-};
+/* 358 */
+/***/ (function(module, exports, __webpack_require__) {
-var isArray = Array.isArray || function (xs) {
- return Object.prototype.toString.call(xs) === '[object Array]';
-};
+"use strict";
-/***/ }),
-/* 250 */
-/***/ (function(module, exports, __webpack_require__) {
+module.exports = clone
-"use strict";
+function clone (obj) {
+ if (obj === null || typeof obj !== 'object')
+ return obj
-module.exports = balanced;
-function balanced(a, b, str) {
- if (a instanceof RegExp) a = maybeMatch(a, str);
- if (b instanceof RegExp) b = maybeMatch(b, str);
+ if (obj instanceof Object)
+ var copy = { __proto__: obj.__proto__ }
+ else
+ var copy = Object.create(null)
- var r = range(a, b, str);
+ Object.getOwnPropertyNames(obj).forEach(function (key) {
+ Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))
+ })
- return r && {
- start: r[0],
- end: r[1],
- pre: str.slice(0, r[0]),
- body: str.slice(r[0] + a.length, r[1]),
- post: str.slice(r[1] + b.length)
- };
+ return copy
}
-function maybeMatch(reg, str) {
- var m = str.match(reg);
- return m ? m[0] : null;
-}
-balanced.range = range;
-function range(a, b, str) {
- var begs, beg, left, right, result;
- var ai = str.indexOf(a);
- var bi = str.indexOf(b, ai + 1);
- var i = ai;
+/***/ }),
+/* 359 */
+/***/ (function(module, exports, __webpack_require__) {
- if (ai >= 0 && bi > 0) {
- begs = [];
- left = str.length;
+var path = __webpack_require__(4);
+var fs = __webpack_require__(253);
+var _0777 = parseInt('0777', 8);
- while (i >= 0 && !result) {
- if (i == ai) {
- begs.push(i);
- ai = str.indexOf(a, i + 1);
- } else if (begs.length == 1) {
- result = [ begs.pop(), bi ];
- } else {
- beg = begs.pop();
- if (beg < left) {
- left = beg;
- right = bi;
+module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
+
+function mkdirP (p, opts, f, made) {
+ if (typeof opts === 'function') {
+ f = opts;
+ opts = {};
+ }
+ else if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts };
+ }
+
+ var mode = opts.mode;
+ var xfs = opts.fs || fs;
+
+ if (mode === undefined) {
+ mode = _0777 & (~process.umask());
+ }
+ if (!made) made = null;
+
+ var cb = f || function () {};
+ p = path.resolve(p);
+
+ xfs.mkdir(p, mode, function (er) {
+ if (!er) {
+ made = made || p;
+ return cb(null, made);
}
+ switch (er.code) {
+ case 'ENOENT':
+ if (path.dirname(p) === p) return cb(er);
+ mkdirP(path.dirname(p), opts, function (er, made) {
+ if (er) cb(er, made);
+ else mkdirP(p, opts, cb, made);
+ });
+ break;
- bi = str.indexOf(b, i + 1);
- }
+ // In the case of any other error, just see if there's a dir
+ // there already. If so, then hooray! If not, then something
+ // is borked.
+ default:
+ xfs.stat(p, function (er2, stat) {
+ // if the stat fails, then that's super weird.
+ // let the original error be the failure reason.
+ if (er2 || !stat.isDirectory()) cb(er, made)
+ else cb(null, made);
+ });
+ break;
+ }
+ });
+}
- i = ai < bi && ai >= 0 ? ai : bi;
+mkdirP.sync = function sync (p, opts, made) {
+ if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts };
}
-
- if (begs.length) {
- result = [ left, right ];
+
+ var mode = opts.mode;
+ var xfs = opts.fs || fs;
+
+ if (mode === undefined) {
+ mode = _0777 & (~process.umask());
}
- }
+ if (!made) made = null;
- return result;
-}
+ p = path.resolve(p);
+ try {
+ xfs.mkdirSync(p, mode);
+ made = made || p;
+ }
+ catch (err0) {
+ switch (err0.code) {
+ case 'ENOENT' :
+ made = sync(path.dirname(p), opts, made);
+ sync(p, opts, made);
+ break;
-/***/ }),
-/* 251 */
-/***/ (function(module, exports, __webpack_require__) {
+ // In the case of any other error, just see if there's a dir
+ // there already. If so, then hooray! If not, then something
+ // is borked.
+ default:
+ var stat;
+ try {
+ stat = xfs.statSync(p);
+ }
+ catch (err1) {
+ throw err0;
+ }
+ if (!stat.isDirectory()) throw err0;
+ break;
+ }
+ }
-try {
- var util = __webpack_require__(113);
- /* istanbul ignore next */
- if (typeof util.inherits !== 'function') throw '';
- module.exports = util.inherits;
-} catch (e) {
- /* istanbul ignore next */
- module.exports = __webpack_require__(252);
-}
+ return made;
+};
/***/ }),
-/* 252 */
+/* 360 */
/***/ (function(module, exports) {
-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
- }
- }
-}
+exports.replaceDollarWithPercentPair = replaceDollarWithPercentPair
+exports.convertToSetCommand = convertToSetCommand
+exports.convertToSetCommands = convertToSetCommands
+
+function convertToSetCommand(key, value) {
+ var line = ""
+ key = key || ""
+ key = key.trim()
+ value = value || ""
+ value = value.trim()
+ if(key && value && value.length > 0) {
+ line = "@SET " + key + "=" + replaceDollarWithPercentPair(value) + "\r\n"
+ }
+ return line
+}
+
+function extractVariableValuePairs(declarations) {
+ var pairs = {}
+ declarations.map(function(declaration) {
+ var split = declaration.split("=")
+ pairs[split[0]]=split[1]
+ })
+ return pairs
+}
+
+function convertToSetCommands(variableString) {
+ var variableValuePairs = extractVariableValuePairs(variableString.split(" "))
+ var variableDeclarationsAsBatch = ""
+ Object.keys(variableValuePairs).forEach(function (key) {
+ variableDeclarationsAsBatch += convertToSetCommand(key, variableValuePairs[key])
+ })
+ return variableDeclarationsAsBatch
+}
+
+function replaceDollarWithPercentPair(value) {
+ var dollarExpressions = /\$\{?([^\$@#\?\- \t{}:]+)\}?/g
+ var result = ""
+ var startIndex = 0
+ value = value || ""
+ do {
+ var match = dollarExpressions.exec(value)
+ if(match) {
+ var betweenMatches = value.substring(startIndex, match.index) || ""
+ result += betweenMatches + "%" + match[1] + "%"
+ startIndex = dollarExpressions.lastIndex
+ }
+ } while (dollarExpressions.lastIndex > 0)
+ result += value.substr(startIndex)
+ return result
+}
+
+
/***/ }),
-/* 253 */
+/* 361 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+const {promisify} = __webpack_require__(234);
+const path = __webpack_require__(4);
+const globby = __webpack_require__(362);
+const isGlob = __webpack_require__(387);
+const slash = __webpack_require__(451);
+const gracefulFs = __webpack_require__(354);
+const isPathCwd = __webpack_require__(453);
+const isPathInside = __webpack_require__(454);
+const rimraf = __webpack_require__(455);
+const pMap = __webpack_require__(456);
-function posix(path) {
- return path.charAt(0) === '/';
-}
+const rimrafP = promisify(rimraf);
-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) !== ':');
+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
+};
- // UNC paths are always absolute
- return Boolean(result[2] || isUnc);
+function safeCheck(file, cwd) {
+ if (isPathCwd(file)) {
+ throw new Error('Cannot delete the current working directory. Can be overridden with the `force` option.');
+ }
+
+ 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 = process.platform === 'win32' ? win32 : posix;
-module.exports.posix = posix;
-module.exports.win32 = win32;
+function normalizePatterns(patterns) {
+ patterns = Array.isArray(patterns) ? patterns : [patterns];
+ patterns = patterns.map(pattern => {
+ if (process.platform === 'win32' && isGlob(pattern) === false) {
+ return slash(pattern);
+ }
-/***/ }),
-/* 254 */
-/***/ (function(module, exports, __webpack_require__) {
+ return pattern;
+ });
-module.exports = globSync
-globSync.GlobSync = GlobSync
+ return patterns;
+}
-var rp = __webpack_require__(245)
-var minimatch = __webpack_require__(247)
-var Minimatch = minimatch.Minimatch
-var Glob = __webpack_require__(244).Glob
-var util = __webpack_require__(113)
-var path = __webpack_require__(4)
-var assert = __webpack_require__(162)
-var isAbsolute = __webpack_require__(253)
-var common = __webpack_require__(255)
-var setopts = common.setopts
-var ownProp = common.ownProp
-var childrenIgnored = common.childrenIgnored
-var isIgnored = common.isIgnored
+module.exports = async (patterns, {force, dryRun, cwd = process.cwd(), ...options} = {}) => {
+ options = {
+ expandDirectories: false,
+ onlyFiles: false,
+ followSymbolicLinks: false,
+ cwd,
+ ...options
+ };
-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')
+ patterns = normalizePatterns(patterns);
- return new GlobSync(pattern, options).found
-}
+ const files = (await globby(patterns, options))
+ .sort((a, b) => b.localeCompare(a));
-function GlobSync (pattern, options) {
- if (!pattern)
- throw new Error('must provide pattern')
+ const mapper = async file => {
+ file = path.resolve(cwd, file);
- 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 (!force) {
+ safeCheck(file, cwd);
+ }
- if (!(this instanceof GlobSync))
- return new GlobSync(pattern, options)
+ if (!dryRun) {
+ await rimrafP(file, rimrafOptions);
+ }
- setopts(this, pattern, options)
+ return file;
+ };
- if (this.noprocess)
- return this
+ const removedFiles = await pMap(files, mapper, options);
- 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()
-}
+ removedFiles.sort((a, b) => a.localeCompare(b));
-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 removedFiles;
+};
+module.exports.sync = (patterns, {force, dryRun, cwd = process.cwd(), ...options} = {}) => {
+ options = {
+ expandDirectories: false,
+ onlyFiles: false,
+ followSymbolicLinks: false,
+ cwd,
+ ...options
+ };
-GlobSync.prototype._process = function (pattern, index, inGlobStar) {
- assert(this instanceof GlobSync)
+ patterns = normalizePatterns(patterns);
- // 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.
+ const files = globby.sync(patterns, options)
+ .sort((a, b) => b.localeCompare(a));
- // 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
+ const removedFiles = files.map(file => {
+ file = path.resolve(cwd, file);
- case 0:
- // pattern *starts* with some non-trivial item.
- // going to readdir(cwd), but not include the prefix in matches.
- prefix = null
- break
+ if (!force) {
+ safeCheck(file, cwd);
+ }
- 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
- }
+ if (!dryRun) {
+ rimraf.sync(file, rimrafOptions);
+ }
- var remain = pattern.slice(n)
+ return file;
+ });
- // 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
+ removedFiles.sort((a, b) => a.localeCompare(b));
- var abs = this._makeAbs(read)
-
- //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)
-}
+ return removedFiles;
+};
-GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
- var entries = this._readdir(abs, inGlobStar)
+/***/ }),
+/* 362 */
+/***/ (function(module, exports, __webpack_require__) {
- // if the abs isn't a dir, then nothing can match!
- if (!entries)
- return
+"use strict";
- // 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) === '.'
+const fs = __webpack_require__(253);
+const arrayUnion = __webpack_require__(363);
+const merge2 = __webpack_require__(364);
+const glob = __webpack_require__(365);
+const fastGlob = __webpack_require__(378);
+const dirGlob = __webpack_require__(447);
+const gitignore = __webpack_require__(449);
+const {FilterStream, UniqueStream} = __webpack_require__(452);
- 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)
- }
- }
+const DEFAULT_FILTER = () => false;
- var len = matchedEntries.length
- // If there are no matched entries, then nothing matches.
- if (len === 0)
- return
+const isNegative = pattern => pattern[0] === '!';
- // 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.
+const assertPatternsInput = patterns => {
+ if (!patterns.every(pattern => typeof pattern === 'string')) {
+ throw new TypeError('Patterns must be a string or an array of strings');
+ }
+};
- if (remain.length === 1 && !this.mark && !this.stat) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
+const checkCwdOption = (options = {}) => {
+ if (!options.cwd) {
+ return;
+ }
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- if (prefix) {
- if (prefix.slice(-1) !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
+ let stat;
+ try {
+ stat = fs.statSync(options.cwd);
+ } catch (_) {
+ return;
+ }
- 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
- }
+ if (!stat.isDirectory()) {
+ throw new Error('The `cwd` option must be a path to a directory');
+ }
+};
- // 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)
- }
-}
+const getPathString = p => p.stats instanceof fs.Stats ? p.path : p;
+const generateGlobTasks = (patterns, taskOptions) => {
+ patterns = arrayUnion([].concat(patterns));
+ assertPatternsInput(patterns);
+ checkCwdOption(taskOptions);
-GlobSync.prototype._emitMatch = function (index, e) {
- if (isIgnored(this, e))
- return
+ const globTasks = [];
- var abs = this._makeAbs(e)
+ taskOptions = {
+ ignore: [],
+ expandDirectories: true,
+ ...taskOptions
+ };
- if (this.mark)
- e = this._mark(e)
+ for (const [index, pattern] of patterns.entries()) {
+ if (isNegative(pattern)) {
+ continue;
+ }
- if (this.absolute) {
- e = abs
- }
+ const ignore = patterns
+ .slice(index)
+ .filter(isNegative)
+ .map(pattern => pattern.slice(1));
- if (this.matches[index][e])
- return
+ const options = {
+ ...taskOptions,
+ ignore: taskOptions.ignore.concat(ignore)
+ };
- if (this.nodir) {
- var c = this.cache[abs]
- if (c === 'DIR' || Array.isArray(c))
- return
- }
+ globTasks.push({pattern, options});
+ }
- this.matches[index][e] = true
+ return globTasks;
+};
- if (this.stat)
- this._stat(e)
-}
+const globDirs = (task, fn) => {
+ let options = {};
+ if (task.options.cwd) {
+ options.cwd = task.options.cwd;
+ }
+ if (Array.isArray(task.options.expandDirectories)) {
+ options = {
+ ...options,
+ files: task.options.expandDirectories
+ };
+ } else if (typeof task.options.expandDirectories === 'object') {
+ options = {
+ ...options,
+ ...task.options.expandDirectories
+ };
+ }
-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)
+ return fn(task.pattern, options);
+};
- 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
- }
- }
+const getPattern = (task, fn) => task.options.expandDirectories ? globDirs(task, fn) : [task.pattern];
- var isSym = lstat && lstat.isSymbolicLink()
- this.symlinks[abs] = isSym
+const getFilterSync = options => {
+ return options && options.gitignore ?
+ gitignore.sync({cwd: options.cwd, ignore: options.ignore}) :
+ DEFAULT_FILTER;
+};
- // 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)
+const globToTask = task => glob => {
+ const {options} = task;
+ if (options.ignore && Array.isArray(options.ignore) && options.expandDirectories) {
+ options.ignore = dirGlob.sync(options.ignore);
+ }
- return entries
-}
+ return {
+ pattern: glob,
+ options
+ };
+};
-GlobSync.prototype._readdir = function (abs, inGlobStar) {
- var entries
+module.exports = async (patterns, options) => {
+ const globTasks = generateGlobTasks(patterns, options);
- if (inGlobStar && !ownProp(this.symlinks, abs))
- return this._readdirInGlobStar(abs)
+ const getFilter = async () => {
+ return options && options.gitignore ?
+ gitignore({cwd: options.cwd, ignore: options.ignore}) :
+ DEFAULT_FILTER;
+ };
- if (ownProp(this.cache, abs)) {
- var c = this.cache[abs]
- if (!c || c === 'FILE')
- return null
+ 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 (Array.isArray(c))
- return c
- }
+ return arrayUnion(...tasks);
+ };
- try {
- return this._readdirEntries(abs, this.fs.readdirSync(abs))
- } catch (er) {
- this._readdirError(abs, er)
- return null
- }
-}
+ const [filter, tasks] = await Promise.all([getFilter(), getTasks()]);
+ const paths = await Promise.all(tasks.map(task => fastGlob(task.pattern, task.options)));
-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 arrayUnion(...paths).filter(path_ => !filter(getPathString(path_)));
+};
- this.cache[abs] = entries
+module.exports.sync = (patterns, options) => {
+ const globTasks = generateGlobTasks(patterns, options);
- // mark and cache dir-ness
- return entries
-}
+ const tasks = globTasks.reduce((tasks, task) => {
+ const newTask = getPattern(task, dirGlob.sync).map(globToTask(task));
+ return tasks.concat(newTask);
+ }, []);
-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
+ const filter = getFilterSync(options);
- case 'ENOENT': // not terribly unusual
- case 'ELOOP':
- case 'ENAMETOOLONG':
- case 'UNKNOWN':
- this.cache[this._makeAbs(f)] = false
- break
+ return tasks.reduce(
+ (matches, task) => arrayUnion(matches, fastGlob.sync(task.pattern, task.options)),
+ []
+ ).filter(path_ => !filter(path_));
+};
- 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
- }
-}
+module.exports.stream = (patterns, options) => {
+ const globTasks = generateGlobTasks(patterns, options);
-GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
+ const tasks = globTasks.reduce((tasks, task) => {
+ const newTask = getPattern(task, dirGlob.sync).map(globToTask(task));
+ return tasks.concat(newTask);
+ }, []);
- var entries = this._readdir(abs, inGlobStar)
+ const filter = getFilterSync(options);
+ const filterStream = new FilterStream(p => !filter(p));
+ const uniqueStream = new UniqueStream();
- // no entries means not a dir, so it can never have matches
- // foo.txt/** doesn't match foo.txt
- if (!entries)
- return
+ return merge2(tasks.map(task => fastGlob.stream(task.pattern, task.options)))
+ .pipe(filterStream)
+ .pipe(uniqueStream);
+};
- // 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.generateGlobTasks = generateGlobTasks;
- // the noGlobStar pattern exits the inGlobStar state
- this._process(noGlobStar, index, false)
+module.exports.hasMagic = (patterns, options) => []
+ .concat(patterns)
+ .some(pattern => glob.hasMagic(pattern, options));
- var len = entries.length
- var isSym = this.symlinks[abs]
+module.exports.gitignore = gitignore;
- // If it's a symlink, and we're in a globstar, then stop
- if (isSym && inGlobStar)
- return
- for (var i = 0; i < len; i++) {
- var e = entries[i]
- if (e.charAt(0) === '.' && !this.dot)
- continue
+/***/ }),
+/* 363 */
+/***/ (function(module, exports, __webpack_require__) {
- // these two cases enter the inGlobStar state
- var instead = gspref.concat(entries[i], remainWithoutGlobStar)
- this._process(instead, index, true)
+"use strict";
- 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)
+module.exports = (...arguments_) => {
+ return [...new Set([].concat(...arguments_))];
+};
- 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
+/***/ }),
+/* 364 */
+/***/ (function(module, exports, __webpack_require__) {
- 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 += '/'
- }
- }
+"use strict";
- if (process.platform === 'win32')
- prefix = prefix.replace(/\\/g, '/')
+/*
+ * merge2
+ * https://github.com/teambition/merge2
+ *
+ * Copyright (c) 2014-2020 Teambition
+ * Licensed under the MIT license.
+ */
+const Stream = __webpack_require__(294)
+const PassThrough = Stream.PassThrough
+const slice = Array.prototype.slice
- // Mark this as a match
- this._emitMatch(index, prefix)
-}
+module.exports = merge2
-// Returns either 'DIR', 'FILE', or false
-GlobSync.prototype._stat = function (f) {
- var abs = this._makeAbs(f)
- var needDir = f.slice(-1) === '/'
+function merge2 () {
+ const streamsQueue = []
+ const args = slice.call(arguments)
+ let merging = false
+ let options = args[args.length - 1]
- if (f.length > this.maxLength)
- return false
+ if (options && !Array.isArray(options) && options.pipe == null) {
+ args.pop()
+ } else {
+ options = {}
+ }
- if (!this.stat && ownProp(this.cache, abs)) {
- var c = this.cache[abs]
+ 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)
- if (Array.isArray(c))
- c = 'DIR'
+ function addStream () {
+ for (let i = 0, len = arguments.length; i < len; i++) {
+ streamsQueue.push(pauseStreams(arguments[i], options))
+ }
+ mergeStream()
+ return this
+ }
- // It exists, but maybe not how we need it
- if (!needDir || c === 'DIR')
- return c
+ function mergeStream () {
+ if (merging) {
+ return
+ }
+ merging = true
- if (needDir && c === 'FILE')
- return false
+ let streams = streamsQueue.shift()
+ if (!streams) {
+ process.nextTick(endStream)
+ return
+ }
+ if (!Array.isArray(streams)) {
+ streams = [streams]
+ }
- // otherwise we have to stat, because maybe c=true
- // if we know it exists, but not what it is.
- }
+ let pipesCount = streams.length + 1
- 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
+ function next () {
+ if (--pipesCount > 0) {
+ return
}
+ merging = false
+ mergeStream()
}
- if (lstat && lstat.isSymbolicLink()) {
- try {
- stat = this.fs.statSync(abs)
- } catch (er) {
- stat = lstat
+ 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()
}
- } else {
- stat = lstat
- }
- }
-
- this.statCache[abs] = stat
- var c = true
- if (stat)
- c = stat.isDirectory() ? 'DIR' : 'FILE'
+ stream.on('merge2UnpipeEnd', onend)
+ stream.on('end', onend)
- this.cache[abs] = this.cache[abs] || c
+ if (doPipeError) {
+ stream.on('error', onerror)
+ }
- if (needDir && c === 'FILE')
- return false
+ stream.pipe(mergedStream, { end: false })
+ // compatible for old stream
+ stream.resume()
+ }
- return c
-}
+ for (let i = 0; i < streams.length; i++) {
+ pipe(streams[i])
+ }
-GlobSync.prototype._mark = function (p) {
- return common.mark(this, p)
+ next()
+ }
+
+ function endStream () {
+ merging = false
+ // emit 'queueDrain' when all streams merged.
+ mergedStream.emit('queueDrain')
+ if (doEnd) {
+ mergedStream.end()
+ }
+ }
+
+ mergedStream.setMaxListeners(0)
+ mergedStream.add = addStream
+ mergedStream.on('unpipe', function (stream) {
+ stream.emit('merge2UnpipeEnd')
+ })
+
+ if (args.length) {
+ addStream.apply(null, args)
+ }
+ return mergedStream
}
-GlobSync.prototype._makeAbs = function (f) {
- return common.makeAbs(this, f)
+// 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
}
/***/ }),
-/* 255 */
+/* 365 */
/***/ (function(module, exports, __webpack_require__) {
-exports.setopts = setopts
-exports.ownProp = ownProp
-exports.makeAbs = makeAbs
-exports.finish = finish
-exports.mark = mark
-exports.isIgnored = isIgnored
-exports.childrenIgnored = childrenIgnored
+// 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.
-function ownProp (obj, field) {
- return Object.prototype.hasOwnProperty.call(obj, field)
-}
+module.exports = glob
-var fs = __webpack_require__(132)
-var path = __webpack_require__(4)
-var minimatch = __webpack_require__(247)
-var isAbsolute = __webpack_require__(253)
+var rp = __webpack_require__(366)
+var minimatch = __webpack_require__(368)
var Minimatch = minimatch.Minimatch
+var inherits = __webpack_require__(372)
+var EE = __webpack_require__(285).EventEmitter
+var path = __webpack_require__(4)
+var assert = __webpack_require__(283)
+var isAbsolute = __webpack_require__(374)
+var globSync = __webpack_require__(375)
+var common = __webpack_require__(376)
+var setopts = common.setopts
+var ownProp = common.ownProp
+var inflight = __webpack_require__(377)
+var util = __webpack_require__(234)
+var childrenIgnored = common.childrenIgnored
+var isIgnored = common.isIgnored
-function alphasort (a, b) {
- return a.localeCompare(b, 'en')
-}
-
-function setupIgnores (self, options) {
- self.ignore = options.ignore || []
+var once = __webpack_require__(290)
- if (!Array.isArray(self.ignore))
- self.ignore = [self.ignore]
+function glob (pattern, options, cb) {
+ if (typeof options === 'function') cb = options, options = {}
+ if (!options) options = {}
- if (self.ignore.length) {
- self.ignore = self.ignore.map(ignoreMap)
+ if (options.sync) {
+ if (cb)
+ throw new TypeError('callback provided to sync glob')
+ return globSync(pattern, options)
}
+
+ return new Glob(pattern, options, cb)
}
-// 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 })
+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
}
- return {
- matcher: new Minimatch(pattern, { dot: true }),
- gmatcher: gmatcher
+ var keys = Object.keys(add)
+ var i = keys.length
+ while (i--) {
+ origin[keys[i]] = add[keys[i]]
}
+ return origin
}
-function setopts (self, pattern, options) {
- if (!options)
- options = {}
+glob.hasMagic = function (pattern, options_) {
+ var options = extend({}, options_)
+ options.noprocess = true
- // 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
- }
+ var g = new Glob(pattern, options)
+ var set = g.minimatch.set
- 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
+ if (!pattern)
+ return false
- 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)
+ if (set.length > 1)
+ return true
- setupIgnores(self, options)
+ for (var j = 0; j < set[0].length; j++) {
+ if (typeof set[0][j] !== 'string')
+ return true
+ }
- 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
+ return false
+}
+
+glob.Glob = Glob
+inherits(Glob, EE)
+function Glob (pattern, options, cb) {
+ if (typeof options === 'function') {
+ cb = options
+ options = null
}
- 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 (options && options.sync) {
+ if (cb)
+ throw new TypeError('callback provided to sync glob')
+ return new GlobSync(pattern, options)
+ }
- // 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
+ if (!(this instanceof Glob))
+ return new Glob(pattern, options, cb)
- // disable comments and negation in Minimatch.
- // Note that they are not supported in Glob itself anyway.
- options.nonegate = true
- options.nocomment = true
+ setopts(this, pattern, options)
+ this._didRealPath = false
- self.minimatch = new Minimatch(pattern, options)
- self.options = self.minimatch.options
-}
+ // process each pattern in the minimatch set
+ var n = this.minimatch.set.length
-function finish (self) {
- var nou = self.nounique
- var all = nou ? [] : Object.create(null)
+ // 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)
- 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
- })
- }
+ if (typeof cb === 'function') {
+ cb = once(cb)
+ this.on('error', cb)
+ this.on('end', function (matches) {
+ cb(null, matches)
+ })
}
- if (!nou)
- all = Object.keys(all)
+ var self = this
+ this._processing = 0
- if (!self.nosort)
- all = all.sort(alphasort)
+ this._emitQueue = []
+ this._processQueue = []
+ this.paused = false
- // 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
- })
+ if (this.noprocess)
+ return this
+
+ if (n === 0)
+ return done()
+
+ 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()
+ }
}
}
+}
- if (self.ignore.length)
- all = all.filter(function(m) {
- return !isIgnored(self, m)
- })
+Glob.prototype._finish = function () {
+ assert(this instanceof Glob)
+ if (this.aborted)
+ return
- self.found = all
+ if (this.realpath && !this._didRealpath)
+ return this._realpath()
+
+ common.finish(this)
+ this.emit('end', this.found)
}
-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) === '/'
+Glob.prototype._realpath = function () {
+ if (this._didRealpath)
+ return
- if (isDir && !slash)
- m += '/'
- else if (!isDir && slash)
- m = m.slice(0, -1)
+ this._didRealpath = true
- if (m !== p) {
- var mabs = makeAbs(self, m)
- self.statCache[mabs] = self.statCache[abs]
- self.cache[mabs] = self.cache[abs]
- }
- }
+ var n = this.matches.length
+ if (n === 0)
+ return this._finish()
- return m
-}
+ var self = this
+ for (var i = 0; i < this.matches.length; i++)
+ this._realpathSet(i, next)
-// 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)
+ function next () {
+ if (--n === 0)
+ self._finish()
}
-
- if (process.platform === 'win32')
- abs = abs.replace(/\\/g, '/')
-
- return abs
}
+Glob.prototype._realpathSet = function (index, cb) {
+ var matchset = this.matches[index]
+ if (!matchset)
+ return cb()
-// 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
+ var found = Object.keys(matchset)
+ var self = this
+ var n = found.length
- return self.ignore.some(function(item) {
- return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
- })
-}
+ if (n === 0)
+ return cb()
-function childrenIgnored (self, path) {
- if (!self.ignore.length)
- return false
+ 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
- return self.ignore.some(function(item) {
- return !!(item.gmatcher && item.gmatcher.match(path))
+ if (--n === 0) {
+ self.matches[index] = set
+ cb()
+ }
+ })
})
}
+Glob.prototype._mark = function (p) {
+ return common.mark(this, p)
+}
-/***/ }),
-/* 256 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var wrappy = __webpack_require__(170)
-var reqs = Object.create(null)
-var once = __webpack_require__(169)
+Glob.prototype._makeAbs = function (f) {
+ return common.makeAbs(this, f)
+}
-module.exports = wrappy(inflight)
+Glob.prototype.abort = function () {
+ this.aborted = true
+ this.emit('abort')
+}
-function inflight (key, cb) {
- if (reqs[key]) {
- reqs[key].push(cb)
- return null
- } else {
- reqs[key] = [cb]
- return makeres(key)
+Glob.prototype.pause = function () {
+ if (!this.paused) {
+ this.paused = true
+ this.emit('pause')
}
}
-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)
+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])
}
- } 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]
+ }
+ 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])
}
}
- })
+ }
}
-function slice (args) {
- var length = args.length
- var array = []
+Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
+ assert(this instanceof Glob)
+ assert(typeof cb === 'function')
- for (var i = 0; i < length; i++) array[i] = args[i]
- return array
-}
+ if (this.aborted)
+ return
+ this._processing++
+ if (this.paused) {
+ this._processQueue.push([pattern, index, inGlobStar, cb])
+ return
+ }
-/***/ }),
-/* 257 */
-/***/ (function(module, exports, __webpack_require__) {
+ //console.error('PROCESS %d', this._processing, pattern)
-"use strict";
+ // 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.
-const taskManager = __webpack_require__(258);
-const async_1 = __webpack_require__(287);
-const stream_1 = __webpack_require__(322);
-const sync_1 = __webpack_require__(323);
-const settings_1 = __webpack_require__(325);
-const utils = __webpack_require__(259);
-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);
+ // 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
+
+ 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 remain = pattern.slice(n)
+
+ // 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 abs = this._makeAbs(read)
+
+ //if ignored, skip _processing
+ if (childrenIgnored(this, read))
+ return cb()
+
+ 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)
}
-// 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);
+
+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)
+ })
}
-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');
+
+Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+
+ // 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 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)
}
-}
-module.exports = FastGlob;
+ }
+ //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
-/***/ }),
-/* 258 */
-/***/ (function(module, exports, __webpack_require__) {
+ var len = matchedEntries.length
+ // If there are no matched entries, then nothing matches.
+ if (len === 0)
+ return cb()
-"use strict";
+ // 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.
-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__(259);
-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));
+ 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 !== '/')
+ e = prefix + '/' + e
+ else
+ e = prefix + e
+ }
+
+ if (e.charAt(0) === '/' && !this.nomount) {
+ e = path.join(this.root, e)
+ }
+ this._emitMatch(index, e)
}
- else {
- tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic));
+ // 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
}
- 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))
- };
+ this._process([e].concat(remain), index, inGlobStar, cb)
+ }
+ cb()
}
-exports.convertPatternGroupToTask = convertPatternGroupToTask;
+Glob.prototype._emitMatch = function (index, e) {
+ if (this.aborted)
+ return
-/***/ }),
-/* 259 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
+ if (isIgnored(this, e))
+ return
-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__(260);
-exports.array = array;
-const errno = __webpack_require__(261);
-exports.errno = errno;
-const fs = __webpack_require__(262);
-exports.fs = fs;
-const path = __webpack_require__(263);
-exports.path = path;
-const pattern = __webpack_require__(264);
-exports.pattern = pattern;
-const stream = __webpack_require__(285);
-exports.stream = stream;
-const string = __webpack_require__(286);
-exports.string = string;
+ if (this.paused) {
+ this._emitQueue.push([index, e])
+ return
+ }
+ var abs = isAbsolute(e) ? e : this._makeAbs(e)
-/***/ }),
-/* 260 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (this.mark)
+ e = this._mark(e)
-"use strict";
+ if (this.absolute)
+ e = abs
-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;
+ if (this.matches[index][e])
+ return
+ if (this.nodir) {
+ var c = this.cache[abs]
+ if (c === 'DIR' || Array.isArray(c))
+ return
+ }
-/***/ }),
-/* 261 */
-/***/ (function(module, exports, __webpack_require__) {
+ this.matches[index][e] = true
-"use strict";
+ var st = this.statCache[abs]
+ if (st)
+ this.emit('stat', e, st)
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.isEnoentCodeError = void 0;
-function isEnoentCodeError(error) {
- return error.code === 'ENOENT';
+ this.emit('match', e)
}
-exports.isEnoentCodeError = isEnoentCodeError;
+Glob.prototype._readdirInGlobStar = function (abs, cb) {
+ if (this.aborted)
+ return
-/***/ }),
-/* 262 */
-/***/ (function(module, exports, __webpack_require__) {
+ // follow all symlinked directories forever
+ // just proceed as if this is a non-globstar situation
+ if (this.follow)
+ return this._readdir(abs, false, cb)
-"use strict";
+ var lstatkey = 'lstat\0' + abs
+ var self = this
+ var lstatcb = inflight(lstatkey, lstatcb_)
-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);
+ if (lstatcb)
+ self.fs.lstat(abs, lstatcb)
+
+ function lstatcb_ (er, lstat) {
+ if (er && er.code === 'ENOENT')
+ return cb()
+
+ var isSym = lstat && lstat.isSymbolicLink()
+ self.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()) {
+ self.cache[abs] = 'FILE'
+ cb()
+ } else
+ self._readdir(abs, false, cb)
+ }
}
-exports.createDirentFromStats = createDirentFromStats;
+Glob.prototype._readdir = function (abs, inGlobStar, cb) {
+ if (this.aborted)
+ return
-/***/ }),
-/* 263 */
-/***/ (function(module, exports, __webpack_require__) {
+ cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
+ if (!cb)
+ return
-"use strict";
+ //console.error('RD %j %j', +inGlobStar, abs)
+ if (inGlobStar && !ownProp(this.symlinks, abs))
+ return this._readdirInGlobStar(abs, cb)
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0;
-const path = __webpack_require__(4);
-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);
+ if (ownProp(this.cache, abs)) {
+ var c = this.cache[abs]
+ if (!c || c === 'FILE')
+ return cb()
+
+ if (Array.isArray(c))
+ return cb(null, c)
+ }
+
+ var self = this
+ self.fs.readdir(abs, readdirCb(this, abs, cb))
}
-exports.makeAbsolute = makeAbsolute;
-function escape(pattern) {
- return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\$2');
+
+function readdirCb (self, abs, cb) {
+ return function (er, entries) {
+ if (er)
+ self._readdirError(abs, er, cb)
+ else
+ self._readdirEntries(abs, entries, cb)
+ }
}
-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);
- }
+
+Glob.prototype._readdirEntries = function (abs, entries, cb) {
+ if (this.aborted)
+ 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
}
- return entry;
+ }
+
+ this.cache[abs] = entries
+ return cb(null, entries)
}
-exports.removeLeadingDotSegment = removeLeadingDotSegment;
+Glob.prototype._readdirError = function (f, er, cb) {
+ if (this.aborted)
+ return
-/***/ }),
-/* 264 */
-/***/ (function(module, exports, __webpack_require__) {
+ // 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
-"use strict";
+ case 'ENOENT': // not terribly unusual
+ case 'ELOOP':
+ case 'ENAMETOOLONG':
+ case 'UNKNOWN':
+ this.cache[this._makeAbs(f)] = false
+ break
-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__(4);
-const globParent = __webpack_require__(265);
-const micromatch = __webpack_require__(268);
-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));
+ 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
+ }
+
+ return cb()
}
-exports.convertPatternsToRe = convertPatternsToRe;
-function matchAny(entry, patternsRe) {
- return patternsRe.some((patternRe) => patternRe.test(entry));
+
+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)
+ })
}
-exports.matchAny = matchAny;
-/***/ }),
-/* 265 */
-/***/ (function(module, exports, __webpack_require__) {
+Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+ //console.error('pgs2', prefix, remain[0], entries)
-"use strict";
+ // no entries means not a dir, so it can never have matches
+ // foo.txt/** doesn't match foo.txt
+ if (!entries)
+ return cb()
+ // 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)
-var isGlob = __webpack_require__(266);
-var pathPosixDirname = __webpack_require__(4).posix.dirname;
-var isWin32 = __webpack_require__(122).platform() === 'win32';
+ // the noGlobStar pattern exits the inGlobStar state
+ this._process(noGlobStar, index, false, cb)
-var slash = '/';
-var backslash = /\\/g;
-var enclosure = /[\{\[].*[\}\]]$/;
-var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/;
-var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g;
+ var isSym = this.symlinks[abs]
+ var len = entries.length
-/**
- * @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 it's a symlink, and we're in a globstar, then stop
+ if (isSym && inGlobStar)
+ return cb()
- // flip windows path separators
- if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {
- str = str.replace(backslash, slash);
- }
+ for (var i = 0; i < len; i++) {
+ var e = entries[i]
+ if (e.charAt(0) === '.' && !this.dot)
+ continue
- // special case for strings ending in enclosure containing path separator
- if (enclosure.test(str)) {
- str += slash;
- }
+ // these two cases enter the inGlobStar state
+ var instead = gspref.concat(entries[i], remainWithoutGlobStar)
+ this._process(instead, index, true, cb)
- // preserves full path in case of trailing path separator
- str += 'a';
+ var below = gspref.concat(entries[i], remain)
+ this._process(below, index, true, cb)
+ }
- // remove path parts that are globby
- do {
- str = pathPosixDirname(str);
- } while (isGlob(str) || globby.test(str));
+ cb()
+}
- // remove escape chars and return result
- return str.replace(escaped, '$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) {
+ //console.error('ps2', prefix, exists)
-/***/ }),
-/* 266 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (!this.matches[index])
+ this.matches[index] = Object.create(null)
-/*!
- * is-glob
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
+ // If it doesn't exist, then just mark the lack of results
+ if (!exists)
+ return cb()
-var isExtglob = __webpack_require__(267);
-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 (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 (str[index + 1] === '?' && /[\].+)]/.test(str[index])) {
- return true;
- }
+ if (process.platform === 'win32')
+ prefix = prefix.replace(/\\/g, '/')
- 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;
- }
- }
- }
+ // Mark this as a match
+ this._emitMatch(index, prefix)
+ cb()
+}
- 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;
- }
- }
- }
+// Returns either 'DIR', 'FILE', or false
+Glob.prototype._stat = function (f, cb) {
+ var abs = this._makeAbs(f)
+ var needDir = f.slice(-1) === '/'
- 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 (f.length > this.maxLength)
+ return cb()
- 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 (!this.stat && ownProp(this.cache, abs)) {
+ var c = this.cache[abs]
- if (str[index] === '\\') {
- var open = str[index + 1];
- index += 2;
- var close = chars[open];
+ if (Array.isArray(c))
+ c = 'DIR'
- if (close) {
- var n = str.indexOf(close, index);
- if (n !== -1) {
- index = n + 1;
- }
- }
+ // It exists, but maybe not how we need it
+ if (!needDir || c === 'DIR')
+ return cb(null, c)
- if (str[index] === '!') {
- return true;
- }
- } else {
- index++;
- }
- }
- return false;
-};
+ if (needDir && c === 'FILE')
+ return cb()
-var relaxedCheck = function(str) {
- if (str[0] === '!') {
- return true;
+ // otherwise we have to stat, because maybe c=true
+ // if we know it exists, but not what it is.
}
- var index = 0;
- while (index < str.length) {
- if (/[*?{}()[\]]/.test(str[index])) {
- return true;
- }
- if (str[index] === '\\') {
- var open = str[index + 1];
- index += 2;
- var close = chars[open];
+ 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)
+ }
+ }
- if (close) {
- var n = str.indexOf(close, index);
- if (n !== -1) {
- index = n + 1;
- }
- }
+ var self = this
+ var statcb = inflight('stat\0' + abs, lstatcb_)
+ if (statcb)
+ self.fs.lstat(abs, statcb)
- if (str[index] === '!') {
- return true;
- }
+ 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 {
- index++;
+ self._stat2(f, abs, er, lstat, cb)
}
}
- return false;
-};
-
-module.exports = function isGlob(str, options) {
- if (typeof str !== 'string' || str === '') {
- return false;
- }
+}
- if (isExtglob(str)) {
- return true;
+Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
+ if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
+ this.statCache[abs] = false
+ return cb()
}
- var check = strictCheck;
+ var needDir = f.slice(-1) === '/'
+ this.statCache[abs] = stat
- // optionally relax check
- if (options && options.strict === false) {
- check = relaxedCheck;
- }
+ if (abs.slice(-1) === '/' && stat && !stat.isDirectory())
+ return cb(null, false, stat)
- return check(str);
-};
+ var c = true
+ if (stat)
+ c = stat.isDirectory() ? 'DIR' : 'FILE'
+ this.cache[abs] = this.cache[abs] || c
+ if (needDir && c === 'FILE')
+ return cb()
-/***/ }),
-/* 267 */
-/***/ (function(module, exports) {
+ return cb(null, c, stat)
+}
-/*!
- * is-extglob
- *
- * Copyright (c) 2014-2016, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-module.exports = function isExtglob(str) {
- if (typeof str !== 'string' || str === '') {
- return false;
- }
+/***/ }),
+/* 366 */
+/***/ (function(module, exports, __webpack_require__) {
- var match;
- while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) {
- if (match[2]) return true;
- str = str.slice(match.index + match[0].length);
- }
+module.exports = realpath
+realpath.realpath = realpath
+realpath.sync = realpathSync
+realpath.realpathSync = realpathSync
+realpath.monkeypatch = monkeypatch
+realpath.unmonkeypatch = unmonkeypatch
- return false;
-};
+var fs = __webpack_require__(253)
+var origRealpath = fs.realpath
+var origRealpathSync = fs.realpathSync
+var version = process.version
+var ok = /^v[0-5]\./.test(version)
+var old = __webpack_require__(367)
-/***/ }),
-/* 268 */
-/***/ (function(module, exports, __webpack_require__) {
+function newError (er) {
+ return er && er.syscall === 'realpath' && (
+ er.code === 'ELOOP' ||
+ er.code === 'ENOMEM' ||
+ er.code === 'ENAMETOOLONG'
+ )
+}
-"use strict";
+function realpath (p, cache, cb) {
+ if (ok) {
+ return origRealpath(p, cache, cb)
+ }
+ 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)
+ }
+ })
+}
-const util = __webpack_require__(113);
-const braces = __webpack_require__(269);
-const picomatch = __webpack_require__(279);
-const utils = __webpack_require__(282);
-const isEmptyString = val => val === '' || val === './';
+function realpathSync (p, cache) {
+ if (ok) {
+ return origRealpathSync(p, cache)
+ }
-/**
- * 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
- */
+ try {
+ return origRealpathSync(p, cache)
+ } catch (er) {
+ if (newError(er)) {
+ return old.realpathSync(p, cache)
+ } else {
+ throw er
+ }
+ }
+}
-const micromatch = (list, patterns, options) => {
- patterns = [].concat(patterns);
- list = [].concat(list);
+function monkeypatch () {
+ fs.realpath = realpath
+ fs.realpathSync = realpathSync
+}
- let omit = new Set();
- let keep = new Set();
- let items = new Set();
- let negatives = 0;
+function unmonkeypatch () {
+ fs.realpath = origRealpath
+ fs.realpathSync = origRealpathSync
+}
- let onResult = state => {
- items.add(state.output);
- if (options && options.onResult) {
- options.onResult(state);
- }
- };
- 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++;
+/***/ }),
+/* 367 */
+/***/ (function(module, exports, __webpack_require__) {
- for (let item of list) {
- let matched = isMatch(item, true);
+// 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.
- let match = negated ? !matched.isMatch : matched.isMatch;
- if (!match) continue;
+var pathModule = __webpack_require__(4);
+var isWindows = process.platform === 'win32';
+var fs = __webpack_require__(253);
- if (negated) {
- omit.add(matched.output);
- } else {
- omit.delete(matched.output);
- keep.add(matched.output);
- }
- }
- }
+// JavaScript implementation of realpath, ported from node pre-v6
- let result = negatives === patterns.length ? [...items] : [...keep];
- let matches = result.filter(item => !omit.has(item));
+var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);
- if (options && matches.length === 0) {
- if (options.failglob === true) {
- throw new Error(`No matches found for "${patterns.join(', ')}"`);
+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;
+
+ return callback;
+
+ function debugCallback(err) {
+ if (err) {
+ backtrace.message = err.message;
+ err = backtrace;
+ missingCallback(err);
}
+ }
- if (options.nonull === true || options.nullglob === true) {
- return options.unescape ? patterns.map(p => p.replace(/\\/g, '')) : patterns;
+ 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);
+ }
}
}
+}
- return matches;
-};
+function maybeCallback(cb) {
+ return typeof cb === 'function' ? cb : rethrow();
+}
-/**
- * Backwards compatibility
- */
+var normalize = pathModule.normalize;
-micromatch.match = micromatch;
+// 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;
+}
-/**
- * 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
- */
+// Regex to find the device root, including trailing slash. E.g. 'c:\\'.
+if (isWindows) {
+ var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;
+} else {
+ var splitRootRe = /^[\/]*/;
+}
-micromatch.matcher = (pattern, options) => picomatch(pattern, options);
+exports.realpathSync = function realpathSync(p, cache) {
+ // make p is absolute
+ p = pathModule.resolve(p);
-/**
- * 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
- */
+ if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
+ return cache[p];
+ }
-micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);
+ var original = p,
+ seenLinks = {},
+ knownHard = {};
-/**
- * Backwards compatibility
- */
+ // 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;
-micromatch.any = micromatch.isMatch;
+ start();
-/**
- * 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
- */
+ function start() {
+ // Skip over roots
+ var m = splitRootRe.exec(p);
+ pos = m[0].length;
+ current = m[0];
+ base = m[0];
+ previous = '';
-micromatch.not = (list, patterns, options = {}) => {
- patterns = [].concat(patterns).map(String);
- let result = new Set();
- let items = [];
+ // On windows, check that the root exists. On unix there is no need.
+ if (isWindows && !knownHard[base]) {
+ fs.lstatSync(base);
+ knownHard[base] = true;
+ }
+ }
- let onResult = state => {
- if (options.onResult) options.onResult(state);
- items.push(state.output);
- };
+ // 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;
- let matches = micromatch(list, patterns, { ...options, onResult });
+ // continue if not a symlink
+ if (knownHard[base] || (cache && cache[base] === base)) {
+ continue;
+ }
- for (let item of items) {
- if (!matches.includes(item)) {
- result.add(item);
+ 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;
+ }
+
+ // 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;
}
+
+ // resolve the link, then start over
+ p = pathModule.resolve(resolvedLink, p.slice(pos));
+ start();
}
- return [...result];
+
+ if (cache) cache[original] = p;
+
+ return p;
};
-/**
- * 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
- */
-micromatch.contains = (str, pattern, options) => {
- if (typeof str !== 'string') {
- throw new TypeError(`Expected a string: "${util.inspect(str)}"`);
+exports.realpath = function realpath(p, cache, cb) {
+ if (typeof cb !== 'function') {
+ cb = maybeCallback(cache);
+ cache = null;
}
- if (Array.isArray(pattern)) {
- return pattern.some(p => micromatch.contains(str, p, options));
+ // 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]));
}
- if (typeof pattern === 'string') {
- if (isEmptyString(str) || isEmptyString(pattern)) {
- return false;
- }
+ var original = p,
+ seenLinks = {},
+ knownHard = {};
- if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {
- return true;
- }
- }
+ // 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 micromatch.isMatch(str, pattern, { ...options, contains: true });
-};
+ start();
-/**
- * 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
- */
+ function start() {
+ // Skip over roots
+ var m = splitRootRe.exec(p);
+ pos = m[0].length;
+ current = m[0];
+ base = m[0];
+ previous = '';
-micromatch.matchKeys = (obj, patterns, options) => {
- if (!utils.isObject(obj)) {
- throw new TypeError('Expected the first argument to be an object');
+ // 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);
+ }
}
- let keys = micromatch(Object.keys(obj), patterns, options);
- let res = {};
- for (let key of keys) res[key] = obj[key];
- return res;
-};
-/**
- * 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
- */
+ // 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);
+ }
-micromatch.some = (list, patterns, options) => {
- let items = [].concat(list);
+ // find the next part
+ nextPartRe.lastIndex = pos;
+ var result = nextPartRe.exec(p);
+ previous = current;
+ current += result[0];
+ base = previous + result[1];
+ pos = nextPartRe.lastIndex;
- for (let pattern of [].concat(patterns)) {
- let isMatch = picomatch(String(pattern), options);
- if (items.some(item => isMatch(item))) {
- return true;
+ // continue if not a symlink
+ if (knownHard[base] || (cache && cache[base] === base)) {
+ return process.nextTick(LOOP);
+ }
+
+ if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
+ // known symbolic link. no need to stat again.
+ return gotResolvedLink(cache[base]);
}
+
+ return fs.lstat(base, gotStat);
}
- 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
- */
+ function gotStat(err, stat) {
+ if (err) return cb(err);
-micromatch.every = (list, patterns, options) => {
- let items = [].concat(list);
+ // 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);
+ }
- for (let pattern of [].concat(patterns)) {
- let isMatch = picomatch(String(pattern), options);
- if (!items.every(item => isMatch(item))) {
- return false;
+ // 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);
+
+ fs.readlink(base, function(err, target) {
+ if (!isWindows) seenLinks[id] = target;
+ gotTarget(err, target);
+ });
+ });
}
- 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
- */
+ function gotTarget(err, target, base) {
+ if (err) return cb(err);
-micromatch.all = (str, patterns, options) => {
- if (typeof str !== 'string') {
- throw new TypeError(`Expected a string: "${util.inspect(str)}"`);
+ var resolvedLink = pathModule.resolve(previous, target);
+ if (cache) cache[base] = resolvedLink;
+ gotResolvedLink(resolvedLink);
}
- 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);
+ function gotResolvedLink(resolvedLink) {
+ // resolve the link, then start over
+ p = pathModule.resolve(resolvedLink, p.slice(pos));
+ start();
}
};
-/**
- * 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);
-/**
- * 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
- */
+/***/ }),
+/* 368 */
+/***/ (function(module, exports, __webpack_require__) {
-micromatch.scan = (...args) => picomatch.scan(...args);
+module.exports = minimatch
+minimatch.Minimatch = Minimatch
-/**
- * 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
- */
+var path = (function () { try { return __webpack_require__(4) } catch (e) {}}()) || {
+ sep: '/'
+}
+minimatch.sep = path.sep
-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;
-};
+var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
+var expand = __webpack_require__(369)
-/**
- * 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
- */
+var plTypes = {
+ '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},
+ '?': { open: '(?:', close: ')?' },
+ '+': { open: '(?:', close: ')+' },
+ '*': { open: '(?:', close: ')*' },
+ '@': { open: '(?:', close: ')' }
+}
-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);
-};
+// any single thing other than /
+// don't need to escape / when using new RegExp()
+var qmark = '[^/]'
-/**
- * Expand braces
- */
+// * => any number of characters
+var star = qmark + '*?'
-micromatch.braceExpand = (pattern, options) => {
- if (typeof pattern !== 'string') throw new TypeError('Expected a string');
- return micromatch.braces(pattern, { ...options, expand: true });
-};
+// ** 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})($|\\\/)).)*?'
-/**
- * Expose micromatch
- */
+// not a ^ or / followed by a dot,
+// followed by anything, any number of times.
+var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
-module.exports = micromatch;
+// 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
+ }, {})
+}
-/***/ }),
-/* 269 */
-/***/ (function(module, exports, __webpack_require__) {
+// normalizes slashes.
+var slashSplit = /\/+/
-"use strict";
+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
+}
-const stringify = __webpack_require__(270);
-const compile = __webpack_require__(272);
-const expand = __webpack_require__(276);
-const parse = __webpack_require__(277);
+minimatch.defaults = function (def) {
+ if (!def || typeof def !== 'object' || !Object.keys(def).length) {
+ return minimatch
+ }
-/**
- * Expand the given pattern or create a regex-compatible string.
- *
- * ```js
- * const braces = require('braces');
- * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']
- * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']
- * ```
- * @param {String} `str`
- * @param {Object} `options`
- * @return {String}
- * @api public
- */
+ var orig = minimatch
-const braces = (input, options = {}) => {
- let output = [];
+ var m = function minimatch (p, pattern, options) {
+ return orig(p, pattern, ext(def, options))
+ }
- if (Array.isArray(input)) {
- for (let pattern of input) {
- let result = braces.create(pattern, options);
- if (Array.isArray(result)) {
- output.push(...result);
- } else {
- output.push(result);
- }
- }
- } else {
- output = [].concat(braces.create(input, 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
}
- if (options && options.expand === true && options.nodupes === true) {
- output = [...new Set(output)];
+ m.filter = function filter (pattern, options) {
+ return orig.filter(pattern, ext(def, options))
}
- return output;
-};
-/**
- * Parse the given `str` with the given `options`.
- *
- * ```js
- * // braces.parse(pattern, [, options]);
- * const ast = braces.parse('a/{b,c}/d');
- * console.log(ast);
- * ```
- * @param {String} pattern Brace pattern to parse
- * @param {Object} options
- * @return {Object} Returns an AST
- * @api public
- */
+ m.defaults = function defaults (options) {
+ return orig.defaults(ext(def, options))
+ }
-braces.parse = (input, options = {}) => parse(input, options);
+ m.makeRe = function makeRe (pattern, options) {
+ return orig.makeRe(pattern, ext(def, options))
+ }
-/**
- * Creates a braces string from an AST, or an AST node.
- *
- * ```js
- * const braces = require('braces');
- * let ast = braces.parse('foo/{a,b}/bar');
- * console.log(stringify(ast.nodes[2])); //=> '{a,b}'
- * ```
- * @param {String} `input` Brace pattern or AST.
- * @param {Object} `options`
- * @return {Array} Returns an array of expanded values.
- * @api public
- */
+ m.braceExpand = function braceExpand (pattern, options) {
+ return orig.braceExpand(pattern, ext(def, options))
+ }
-braces.stringify = (input, options = {}) => {
- if (typeof input === 'string') {
- return stringify(braces.parse(input, options), options);
+ m.match = function (list, pattern, options) {
+ return orig.match(list, pattern, ext(def, options))
}
- return stringify(input, options);
-};
-/**
- * Compiles a brace pattern into a regex-compatible, optimized string.
- * This method is called by the main [braces](#braces) function by default.
- *
- * ```js
- * const braces = require('braces');
- * console.log(braces.compile('a/{b,c}/d'));
- * //=> ['a/(b|c)/d']
- * ```
- * @param {String} `input` Brace pattern or AST.
- * @param {Object} `options`
- * @return {Array} Returns an array of expanded values.
- * @api public
- */
+ return m
+}
-braces.compile = (input, options = {}) => {
- if (typeof input === 'string') {
- input = braces.parse(input, options);
- }
- return compile(input, options);
-};
+Minimatch.defaults = function (def) {
+ return minimatch.defaults(def).Minimatch
+}
-/**
- * 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 [.compile](#compile) instead.
- *
- * ```js
- * const 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
- */
+function minimatch (p, pattern, options) {
+ assertValidPattern(pattern)
-braces.expand = (input, options = {}) => {
- if (typeof input === 'string') {
- input = braces.parse(input, options);
+ if (!options) options = {}
+
+ // shortcut: comments match nothing.
+ if (!options.nocomment && pattern.charAt(0) === '#') {
+ return false
}
- let result = expand(input, options);
+ return new Minimatch(pattern, options).match(p)
+}
- // filter out empty strings if specified
- if (options.noempty === true) {
- result = result.filter(Boolean);
+function Minimatch (pattern, options) {
+ if (!(this instanceof Minimatch)) {
+ return new Minimatch(pattern, options)
}
- // filter out duplicates if specified
- if (options.nodupes === true) {
- result = [...new Set(result)];
- }
+ assertValidPattern(pattern)
- return result;
-};
+ if (!options) options = {}
-/**
- * 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
- * const 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
- */
+ pattern = pattern.trim()
-braces.create = (input, options = {}) => {
- if (input === '' || input.length < 3) {
- return [input];
+ // windows support: need to use /, not \
+ if (!options.allowWindowsEscape && path.sep !== '/') {
+ pattern = pattern.split(path.sep).join('/')
}
- return options.expand !== true
- ? braces.compile(input, options)
- : braces.expand(input, options);
-};
+ this.options = options
+ this.set = []
+ this.pattern = pattern
+ this.regexp = null
+ this.negate = false
+ this.comment = false
+ this.empty = false
+ this.partial = !!options.partial
-/**
- * Expose "braces"
- */
+ // make the set of regexps etc.
+ this.make()
+}
-module.exports = braces;
+Minimatch.prototype.debug = function () {}
+Minimatch.prototype.make = make
+function make () {
+ var pattern = this.pattern
+ var options = this.options
-/***/ }),
-/* 270 */
-/***/ (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";
+ // step 1: figure out negation, etc.
+ this.parseNegate()
+ // step 2: expand braces
+ var set = this.globSet = this.braceExpand()
-const utils = __webpack_require__(271);
+ if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) }
-module.exports = (ast, options = {}) => {
- let stringify = (node, parent = {}) => {
- let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);
- let invalidNode = node.invalid === true && options.escapeInvalid === true;
- let output = '';
+ this.debug(this.pattern, set)
- if (node.value) {
- if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {
- return '\\' + node.value;
- }
- return node.value;
- }
+ // 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)
+ })
- if (node.value) {
- return node.value;
- }
+ this.debug(this.pattern, set)
- if (node.nodes) {
- for (let child of node.nodes) {
- output += stringify(child);
- }
- }
- return output;
- };
+ // glob --> regexps
+ set = set.map(function (s, si, set) {
+ return s.map(this.parse, this)
+ }, this)
- return stringify(ast);
-};
+ 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)
-/***/ }),
-/* 271 */
-/***/ (function(module, exports, __webpack_require__) {
+ this.set = set
+}
-"use strict";
+Minimatch.prototype.parseNegate = parseNegate
+function parseNegate () {
+ var pattern = this.pattern
+ var negate = false
+ var options = this.options
+ var negateOffset = 0
+ if (options.nonegate) return
-exports.isInteger = num => {
- if (typeof num === 'number') {
- return Number.isInteger(num);
- }
- if (typeof num === 'string' && num.trim() !== '') {
- return Number.isInteger(Number(num));
+ for (var i = 0, l = pattern.length
+ ; i < l && pattern.charAt(i) === '!'
+ ; i++) {
+ negate = !negate
+ negateOffset++
}
- return false;
-};
-
-/**
- * Find a node of the given type
- */
-
-exports.find = (node, type) => node.nodes.find(node => node.type === type);
-/**
- * Find a node of the given type
- */
+ if (negateOffset) this.pattern = pattern.substr(negateOffset)
+ this.negate = negate
+}
-exports.exceedsLimit = (min, max, step = 1, limit) => {
- if (limit === false) return false;
- if (!exports.isInteger(min) || !exports.isInteger(max)) return false;
- return ((Number(max) - Number(min)) / Number(step)) >= limit;
-};
-
-/**
- * Escape the given node with '\\' before node.value
- */
+// 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)
+}
-exports.escapeNode = (block, n = 0, type) => {
- let node = block.nodes[n];
- if (!node) return;
+Minimatch.prototype.braceExpand = braceExpand
- if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {
- if (node.escaped !== true) {
- node.value = '\\' + node.value;
- node.escaped = true;
+function braceExpand (pattern, options) {
+ if (!options) {
+ if (this instanceof Minimatch) {
+ options = this.options
+ } else {
+ options = {}
}
}
-};
-/**
- * Returns true if the given brace node should be enclosed in literal braces
- */
+ pattern = typeof pattern === 'undefined'
+ ? this.pattern : pattern
-exports.encloseBrace = node => {
- if (node.type !== 'brace') return false;
- if ((node.commas >> 0 + node.ranges >> 0) === 0) {
- node.invalid = true;
- return true;
+ 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 false;
-};
-/**
- * Returns true if a brace node is invalid.
- */
+ return expand(pattern)
+}
-exports.isInvalidBrace = block => {
- if (block.type !== 'brace') return false;
- if (block.invalid === true || block.dollar) return true;
- if ((block.commas >> 0 + block.ranges >> 0) === 0) {
- block.invalid = true;
- return true;
+var MAX_PATTERN_LENGTH = 1024 * 64
+var assertValidPattern = function (pattern) {
+ if (typeof pattern !== 'string') {
+ throw new TypeError('invalid pattern')
}
- if (block.open !== true || block.close !== true) {
- block.invalid = true;
- return true;
+
+ if (pattern.length > MAX_PATTERN_LENGTH) {
+ throw new TypeError('pattern is too long')
}
- return false;
-};
+}
-/**
- * Returns true if a node is an open or close node
- */
+// 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)
-exports.isOpenOrClose = node => {
- if (node.type === 'open' || node.type === 'close') {
- return true;
+ var options = this.options
+
+ // shortcuts
+ if (pattern === '**') {
+ if (!options.noglobstar)
+ return GLOBSTAR
+ else
+ pattern = '*'
}
- return node.open === true || node.close === true;
-};
+ if (pattern === '') return ''
-/**
- * Reduce an array of text nodes.
- */
+ 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
-exports.reduce = nodes => nodes.reduce((acc, node) => {
- if (node.type === 'text') acc.push(node.value);
- if (node.type === 'range') node.type = 'text';
- return acc;
-}, []);
+ 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
+ }
+ }
-/**
- * Flatten an array
- */
+ 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)
-exports.flatten = (...args) => {
- const result = [];
- const flat = arr => {
- for (let i = 0; i < arr.length; i++) {
- let ele = arr[i];
- Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele);
+ // skip over any that are escaped.
+ if (escaping && reSpecials[c]) {
+ re += '\\' + c
+ escaping = false
+ continue
}
- return result;
- };
- flat(args);
- return result;
-};
-
-/***/ }),
-/* 272 */
-/***/ (function(module, exports, __webpack_require__) {
+ switch (c) {
+ /* istanbul ignore next */
+ case '/': {
+ // completely not allowed, even escaped.
+ // Should already be path-split by now.
+ return false
+ }
-"use strict";
+ 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)
-const fill = __webpack_require__(273);
-const utils = __webpack_require__(271);
+ // 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
+ }
-const compile = (ast, options = {}) => {
- let walk = (node, parent = {}) => {
- let invalidBlock = utils.isInvalidBrace(parent);
- let invalidNode = node.invalid === true && options.escapeInvalid === true;
- let invalid = invalidBlock === true || invalidNode === true;
- let prefix = options.escapeInvalid === true ? '\\' : '';
- let output = '';
+ // 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
- if (node.isOpen === true) {
- return prefix + node.value;
- }
- if (node.isClose === true) {
- return prefix + node.value;
- }
+ case '(':
+ if (inClass) {
+ re += '('
+ continue
+ }
- if (node.type === 'open') {
- return invalid ? (prefix + node.value) : '(';
- }
+ if (!stateChar) {
+ re += '\\('
+ continue
+ }
- if (node.type === 'close') {
- return invalid ? (prefix + node.value) : ')';
- }
+ 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
- if (node.type === 'comma') {
- return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|');
- }
+ case ')':
+ if (inClass || !patternListStack.length) {
+ re += '\\)'
+ continue
+ }
- if (node.value) {
- return node.value;
- }
+ 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
- if (node.nodes && node.ranges > 0) {
- let args = utils.reduce(node.nodes);
- let range = fill(...args, { ...options, wrap: false, toRegex: true });
+ case '|':
+ if (inClass || !patternListStack.length || escaping) {
+ re += '\\|'
+ escaping = false
+ continue
+ }
- if (range.length !== 0) {
- return args.length > 1 && range.length > 1 ? `(${range})` : range;
- }
- }
+ clearStateChar()
+ re += '|'
+ continue
- if (node.nodes) {
- for (let child of node.nodes) {
- output += walk(child, node);
- }
- }
- return output;
- };
+ // these are mostly the same in regexp and glob
+ case '[':
+ // swallow any state-tracking char before the [
+ clearStateChar()
- return walk(ast);
-};
+ if (inClass) {
+ re += '\\' + c
+ continue
+ }
-module.exports = compile;
+ 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
+ }
-/***/ }),
-/* 273 */
-/***/ (function(module, exports, __webpack_require__) {
+ // 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
+ }
-"use strict";
-/*!
- * fill-range
- *
- * Copyright (c) 2014-present, Jon Schlinkert.
- * Licensed under the MIT License.
- */
+ // 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 += '\\'
+ }
-const util = __webpack_require__(113);
-const toRegexRange = __webpack_require__(274);
+ re += c
-const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
+ } // switch
+ } // for
-const transform = toNumber => {
- return value => toNumber === true ? Number(value) : String(value);
-};
+ // 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]
+ }
-const isValidValue = value => {
- return typeof value === 'number' || (typeof value === 'string' && value !== '');
-};
+ // 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 = '\\'
+ }
-const isNumber = num => Number.isInteger(+num);
+ // 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 + '|'
+ })
-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;
-};
+ this.debug('tail=%j\n %s', tail, tail, pl, re)
+ var t = pl.type === '*' ? star
+ : pl.type === '?' ? qmark
+ : '\\' + pl.type
-const stringify = (start, end, options) => {
- if (typeof start === 'string' || typeof end === 'string') {
- return true;
+ hasMagic = true
+ re = re.slice(0, pl.reStart) + t + '\\(' + tail
}
- return options.stringify === true;
-};
-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);
+ // handle trailing things that only matter at the very end.
+ clearStateChar()
+ if (escaping) {
+ // trailing \\
+ re += '\\\\'
}
- return input;
-};
-const toMaxLen = (input, maxLength) => {
- let negative = input[0] === '-' ? '-' : '';
- if (negative) {
- input = input.slice(1);
- maxLength--;
+ // 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
}
- while (input.length < maxLength) input = '0' + input;
- return negative ? ('-' + input) : input;
-};
-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);
+ // 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]
- let prefix = options.capture ? '' : '?:';
- let positives = '';
- let negatives = '';
- let result;
+ 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)
- if (parts.positives.length) {
- positives = parts.positives.join('|');
- }
+ nlLast += nlAfter
- if (parts.negatives.length) {
- negatives = `-(${prefix}${parts.negatives.join('|')})`;
+ // 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 (positives && negatives) {
- result = `${positives}|${negatives}`;
- } else {
- result = positives || negatives;
- }
-
- if (options.wrap) {
- return `(${prefix}${result})`;
+ // 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
}
- return result;
-};
-
-const toRange = (a, b, isNumbers, options) => {
- if (isNumbers) {
- return toRegexRange(a, b, { wrap: false, ...options });
+ if (addPatternStart) {
+ re = patternStart + re
}
- let start = String.fromCharCode(a);
- if (a === b) return start;
-
- let stop = String.fromCharCode(b);
- return `[${start}-${stop}]`;
-};
-
-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('|');
+ // parsing just a piece of a larger pattern.
+ if (isSub === SUBPARSE) {
+ return [re, hasMagic]
}
- return toRegexRange(start, end, options);
-};
-
-const rangeError = (...args) => {
- return new RangeError('Invalid range arguments: ' + util.inspect(...args));
-};
-
-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`);
+ // 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)
}
- return [];
-};
-const fillNumbers = (start, end, step = 1, options = {}) => {
- let a = Number(start);
- let b = Number(end);
-
- if (!Number.isInteger(a) || !Number.isInteger(b)) {
- if (options.strictRanges === true) throw rangeError([start, end]);
- return [];
+ 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('$.')
}
- // fix negative zero
- if (a === 0) a = 0;
- if (b === 0) b = 0;
-
- let descending = a > b;
- let startString = String(start);
- let endString = String(end);
- let stepString = String(step);
- step = Math.max(Math.abs(step), 1);
+ regExp._glob = pattern
+ regExp._src = re
- 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);
+ return regExp
+}
- if (options.toRegex && step === 1) {
- return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);
- }
+minimatch.makeRe = function (pattern, options) {
+ return new Minimatch(pattern, options || {}).makeRe()
+}
- let parts = { negatives: [], positives: [] };
- let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));
- let range = [];
- let index = 0;
+Minimatch.prototype.makeRe = makeRe
+function makeRe () {
+ if (this.regexp || this.regexp === false) return this.regexp
- 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++;
- }
+ // 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 (options.toRegex === true) {
- return step > 1
- ? toSequence(parts, options)
- : toRegex(range, null, { wrap: false, ...options });
+ if (!set.length) {
+ this.regexp = false
+ return this.regexp
}
+ var options = this.options
- 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);
- }
+ 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('|')
- let format = options.transform || (val => String.fromCharCode(val));
- let a = `${start}`.charCodeAt(0);
- let b = `${end}`.charCodeAt(0);
+ // must match entire pattern
+ // ending in a * or ** will make it less strict.
+ re = '^(?:' + re + ')$'
- let descending = a > b;
- let min = Math.min(a, b);
- let max = Math.max(a, b);
+ // can match anything, as long as it's not this.
+ if (this.negate) re = '^(?!' + re + ').*$'
- if (options.toRegex && step === 1) {
- return toRange(min, max, false, options);
+ try {
+ this.regexp = new RegExp(re, flags)
+ } catch (ex) /* istanbul ignore next - should be impossible */ {
+ this.regexp = false
}
+ return this.regexp
+}
- let range = [];
- let index = 0;
-
- while (descending ? a >= b : a <= b) {
- range.push(format(a, index));
- a = descending ? a - step : a + step;
- index++;
+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
+}
- if (options.toRegex === true) {
- return toRegex(range, null, { wrap: false, options });
- }
+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 === ''
- return range;
-};
+ if (f === '/' && partial) return true
-const fill = (start, end, step, options = {}) => {
- if (end == null && isValidValue(start)) {
- return [start];
- }
+ var options = this.options
- if (!isValidValue(start) || !isValidValue(end)) {
- return invalidRange(start, end, options);
+ // windows: need to use /, not \
+ if (path.sep !== '/') {
+ f = f.split(path.sep).join('/')
}
- if (typeof step === 'function') {
- return fill(start, end, 1, { transform: step });
- }
+ // treat the test path as a set of pathparts.
+ f = f.split(slashSplit)
+ this.debug(this.pattern, 'split', f)
- if (isObject(step)) {
- return fill(start, end, 0, step);
- }
+ // 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.
- let opts = { ...options };
- if (opts.capture === true) opts.wrap = true;
- step = step || opts.step || 1;
+ var set = this.set
+ this.debug(this.pattern, 'set', set)
- if (!isNumber(step)) {
- if (step != null && !isObject(step)) return invalidStep(step, opts);
- return fill(start, end, 1, step);
+ // 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
}
- if (isNumber(start) && isNumber(end)) {
- return fillNumbers(start, end, step, opts);
+ 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 fillLetters(start, end, Math.max(Math.abs(step), 1), opts);
-};
-
-module.exports = fill;
-
+ // didn't get any hits. this is success if it's a negative
+ // pattern, failure otherwise.
+ if (options.flipNegate) return false
+ return this.negate
+}
-/***/ }),
-/* 274 */
-/***/ (function(module, exports, __webpack_require__) {
+// 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
-"use strict";
-/*!
- * to-regex-range
- *
- * Copyright (c) 2015-present, Jon Schlinkert.
- * Released under the MIT License.
- */
+ 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]
-const isNumber = __webpack_require__(275);
+ this.debug(pattern, p, f)
-const toRegexRange = (min, max, options) => {
- if (isNumber(min) === false) {
- throw new TypeError('toRegexRange: expected the first argument to be a number');
- }
+ // should be impossible.
+ // some invalid regexp stuff in the set.
+ /* istanbul ignore if */
+ if (p === false) return false
- if (max === void 0 || min === max) {
- return String(min);
- }
+ if (p === GLOBSTAR) {
+ this.debug('GLOBSTAR', [pattern, p, f])
- if (isNumber(max) === false) {
- throw new TypeError('toRegexRange: expected the second argument to be a number.');
- }
+ // "**"
+ // 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
+ }
- let opts = { relaxZeros: true, ...options };
- if (typeof opts.strictZeros === 'boolean') {
- opts.relaxZeros = opts.strictZeros === false;
- }
+ // ok, let's see if we can swallow whatever we can.
+ while (fr < fl) {
+ var swallowee = file[fr]
- 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;
+ this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
- if (toRegexRange.cache.hasOwnProperty(cacheKey)) {
- return toRegexRange.cache[cacheKey].result;
- }
+ // 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
+ }
- let a = Math.min(min, max);
- let b = Math.max(min, max);
+ // ** swallows a segment, and continue.
+ this.debug('globstar swallow a segment, and continue')
+ fr++
+ }
+ }
- if (Math.abs(a - b) === 1) {
- let result = min + '|' + max;
- if (opts.capture) {
- return `(${result})`;
- }
- if (opts.wrap === false) {
- return result;
+ // 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
}
- return `(?:${result})`;
- }
- let isPadded = hasPadding(min) || hasPadding(max);
- let state = { min, max, a, b };
- let positives = [];
- let negatives = [];
+ // 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 (isPadded) {
- state.isPadded = isPadded;
- state.maxLen = String(state.max).length;
+ if (!hit) return false
}
- if (a < 0) {
- let newMin = b < 0 ? Math.abs(b) : 1;
- negatives = splitToPatterns(newMin, Math.abs(a), state, opts);
- a = state.a = 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/*
- if (b >= 0) {
- positives = splitToPatterns(a, b, state, opts);
+ // 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] === '')
}
- state.negatives = negatives;
- state.positives = positives;
- state.result = collatePatterns(negatives, positives, opts);
-
- if (opts.capture === true) {
- state.result = `(${state.result})`;
- } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {
- state.result = `(?:${state.result})`;
- }
+ // should be unreachable.
+ /* istanbul ignore next */
+ throw new Error('wtf?')
+}
- toRegexRange.cache[cacheKey] = state;
- return state.result;
-};
+// replace stuff like \* with *
+function globUnescape (s) {
+ return s.replace(/\\(.)/g, '$1')
+}
-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 regExpEscape (s) {
+ return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
}
-function splitToRanges(min, max) {
- let nines = 1;
- let zeros = 1;
- let stop = countNines(min, nines);
- let stops = new Set([max]);
+/***/ }),
+/* 369 */
+/***/ (function(module, exports, __webpack_require__) {
- while (min <= stop && stop <= max) {
- stops.add(stop);
- nines += 1;
- stop = countNines(min, nines);
- }
+var concatMap = __webpack_require__(370);
+var balanced = __webpack_require__(371);
- stop = countZeros(max + 1, zeros) - 1;
+module.exports = expandTop;
- while (min < stop && stop <= max) {
- stops.add(stop);
- zeros += 1;
- stop = countZeros(max + 1, zeros) - 1;
- }
+var escSlash = '\0SLASH'+Math.random()+'\0';
+var escOpen = '\0OPEN'+Math.random()+'\0';
+var escClose = '\0CLOSE'+Math.random()+'\0';
+var escComma = '\0COMMA'+Math.random()+'\0';
+var escPeriod = '\0PERIOD'+Math.random()+'\0';
- stops = [...stops];
- stops.sort(compare);
- return stops;
+function numeric(str) {
+ return parseInt(str, 10) == str
+ ? parseInt(str, 10)
+ : str.charCodeAt(0);
}
-/**
- * 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;
-
- for (let i = 0; i < digits; i++) {
- let [startDigit, stopDigit] = zipped[i];
-
- if (startDigit === stopDigit) {
- pattern += startDigit;
-
- } else if (startDigit !== '0' || stopDigit !== '9') {
- pattern += toCharacterClass(startDigit, stopDigit, options);
-
- } else {
- count++;
- }
- }
-
- if (count) {
- pattern += options.shorthand === true ? '\\d' : '[0-9]';
- }
+function escapeBraces(str) {
+ return str.split('\\\\').join(escSlash)
+ .split('\\{').join(escOpen)
+ .split('\\}').join(escClose)
+ .split('\\,').join(escComma)
+ .split('\\.').join(escPeriod);
+}
- return { pattern, count: [count], digits };
+function unescapeBraces(str) {
+ return str.split(escSlash).join('\\')
+ .split(escOpen).join('{')
+ .split(escClose).join('}')
+ .split(escComma).join(',')
+ .split(escPeriod).join('.');
}
-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 = '';
+// Basically just str.split(","), but handling cases
+// where we have nested braced sections, which should be
+// treated as individual members, like {a,{b,c},d}
+function parseCommaParts(str) {
+ if (!str)
+ return [''];
- if (!tok.isPadded && prev && prev.pattern === obj.pattern) {
- if (prev.count.length > 1) {
- prev.count.pop();
- }
+ var parts = [];
+ var m = balanced('{', '}', str);
- prev.count.push(obj.count[0]);
- prev.string = prev.pattern + toQuantifier(prev.count);
- start = max + 1;
- continue;
- }
+ if (!m)
+ return str.split(',');
- if (tok.isPadded) {
- zeros = padZeros(max, tok, options);
- }
+ var pre = m.pre;
+ var body = m.body;
+ var post = m.post;
+ var p = pre.split(',');
- obj.string = zeros + obj.pattern + toQuantifier(obj.count);
- tokens.push(obj);
- start = max + 1;
- prev = obj;
+ p[p.length-1] += '{' + body + '}';
+ var postParts = parseCommaParts(post);
+ if (post.length) {
+ p[p.length-1] += postParts.shift();
+ p.push.apply(p, postParts);
}
- return tokens;
-}
-
-function filterPatterns(arr, comparison, prefix, intersection, options) {
- let result = [];
+ parts.push.apply(parts, p);
- for (let ele of arr) {
- let { string } = ele;
+ return parts;
+}
- // only push if _both_ are negative...
- if (!intersection && !contains(comparison, 'string', string)) {
- result.push(prefix + string);
- }
+function expandTop(str) {
+ if (!str)
+ return [];
- // or _both_ are positive
- if (intersection && contains(comparison, 'string', string)) {
- result.push(prefix + string);
- }
+ // I don't know why Bash 4.3 does this, but it does.
+ // Anything starting with {} will have the first two bytes preserved
+ // but *only* at the top level, so {},a}b will not expand to anything,
+ // but a{},b}c will be expanded to [a}c,abc].
+ // One could argue that this is a bug in Bash, but since the goal of
+ // this module is to match Bash's rules, we escape a leading {}
+ if (str.substr(0, 2) === '{}') {
+ str = '\\{\\}' + str.substr(2);
}
- 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;
+ return expand(escapeBraces(str), true).map(unescapeBraces);
}
-function compare(a, b) {
- return a > b ? 1 : b > a ? -1 : 0;
+function identity(e) {
+ return e;
}
-function contains(arr, key, val) {
- return arr.some(ele => ele[key] === val);
+function embrace(str) {
+ return '{' + str + '}';
}
-
-function countNines(min, len) {
- return Number(String(min).slice(0, -len) + '9'.repeat(len));
+function isPadded(el) {
+ return /^-?0\d/.test(el);
}
-function countZeros(integer, zeros) {
- return integer - (integer % Math.pow(10, zeros));
+function lte(i, y) {
+ return i <= y;
}
-
-function toQuantifier(digits) {
- let [start = 0, stop = ''] = digits;
- if (stop || start > 1) {
- return `{${start + (stop ? ',' + stop : '')}}`;
- }
- return '';
+function gte(i, y) {
+ return i >= y;
}
-function toCharacterClass(a, b, options) {
- return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;
-}
+function expand(str, isTop) {
+ var expansions = [];
-function hasPadding(str) {
- return /^-?(0+)\d/.test(str);
-}
+ var m = balanced('{', '}', str);
+ if (!m || /\$$/.test(m.pre)) return [str];
-function padZeros(value, tok, options) {
- if (!tok.isPadded) {
- return value;
+ var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
+ var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
+ var isSequence = isNumericSequence || isAlphaSequence;
+ var isOptions = m.body.indexOf(',') >= 0;
+ if (!isSequence && !isOptions) {
+ // {a},b}
+ if (m.post.match(/,.*\}/)) {
+ str = m.pre + '{' + m.body + escClose + m.post;
+ return expand(str);
+ }
+ return [str];
}
- 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}}`;
+ var n;
+ if (isSequence) {
+ n = m.body.split(/\.\./);
+ } else {
+ n = parseCommaParts(m.body);
+ if (n.length === 1) {
+ // x{{a,b}}y ==> x{a}y x{b}y
+ n = expand(n[0], false).map(embrace);
+ if (n.length === 1) {
+ var post = m.post.length
+ ? expand(m.post, false)
+ : [''];
+ return post.map(function(p) {
+ return m.pre + n[0] + p;
+ });
+ }
}
}
-}
-/**
- * Cache
- */
+ // at this point, n is the parts, and we know it's not a comma set
+ // with a single entry.
-toRegexRange.cache = {};
-toRegexRange.clearCache = () => (toRegexRange.cache = {});
+ // no need to expand pre, since it is guaranteed to be free of brace-sets
+ var pre = m.pre;
+ var post = m.post.length
+ ? expand(m.post, false)
+ : [''];
-/**
- * Expose `toRegexRange`
- */
+ var N;
-module.exports = toRegexRange;
+ if (isSequence) {
+ var x = numeric(n[0]);
+ var y = numeric(n[1]);
+ var width = Math.max(n[0].length, n[1].length)
+ var incr = n.length == 3
+ ? Math.abs(numeric(n[2]))
+ : 1;
+ var test = lte;
+ var reverse = y < x;
+ if (reverse) {
+ incr *= -1;
+ test = gte;
+ }
+ var pad = n.some(isPadded);
+ N = [];
-/***/ }),
-/* 275 */
-/***/ (function(module, exports, __webpack_require__) {
+ for (var i = x; test(i, y); i += incr) {
+ var c;
+ if (isAlphaSequence) {
+ c = String.fromCharCode(i);
+ if (c === '\\')
+ c = '';
+ } else {
+ c = String(i);
+ if (pad) {
+ var need = width - c.length;
+ if (need > 0) {
+ var z = new Array(need + 1).join('0');
+ if (i < 0)
+ c = '-' + z + c.slice(1);
+ else
+ c = z + c;
+ }
+ }
+ }
+ N.push(c);
+ }
+ } else {
+ N = concatMap(n, function(el) { return expand(el, false) });
+ }
-"use strict";
-/*!
- * is-number
- *
- * Copyright (c) 2014-present, Jon Schlinkert.
- * Released under the MIT License.
- */
+ for (var j = 0; j < N.length; j++) {
+ for (var k = 0; k < post.length; k++) {
+ var expansion = pre + N[j] + post[k];
+ if (!isTop || isSequence || expansion)
+ expansions.push(expansion);
+ }
+ }
+ return expansions;
+}
-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;
+
+/***/ }),
+/* 370 */
+/***/ (function(module, exports) {
+
+module.exports = function (xs, fn) {
+ var res = [];
+ for (var i = 0; i < xs.length; i++) {
+ var x = fn(xs[i], i);
+ if (isArray(x)) res.push.apply(res, x);
+ else res.push(x);
+ }
+ return res;
+};
+
+var isArray = Array.isArray || function (xs) {
+ return Object.prototype.toString.call(xs) === '[object Array]';
};
/***/ }),
-/* 276 */
+/* 371 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+module.exports = balanced;
+function balanced(a, b, str) {
+ if (a instanceof RegExp) a = maybeMatch(a, str);
+ if (b instanceof RegExp) b = maybeMatch(b, str);
-const fill = __webpack_require__(273);
-const stringify = __webpack_require__(270);
-const utils = __webpack_require__(271);
-
-const append = (queue = '', stash = '', enclose = false) => {
- let result = [];
+ var r = range(a, b, str);
- queue = [].concat(queue);
- stash = [].concat(stash);
+ return r && {
+ start: r[0],
+ end: r[1],
+ pre: str.slice(0, r[0]),
+ body: str.slice(r[0] + a.length, r[1]),
+ post: str.slice(r[1] + b.length)
+ };
+}
- if (!stash.length) return queue;
- if (!queue.length) {
- return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;
- }
+function maybeMatch(reg, str) {
+ var m = str.match(reg);
+ return m ? m[0] : null;
+}
- for (let item of queue) {
- if (Array.isArray(item)) {
- for (let value of item) {
- result.push(append(value, stash, enclose));
- }
- } else {
- for (let ele of stash) {
- if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;
- result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele));
- }
- }
- }
- return utils.flatten(result);
-};
+balanced.range = range;
+function range(a, b, str) {
+ var begs, beg, left, right, result;
+ var ai = str.indexOf(a);
+ var bi = str.indexOf(b, ai + 1);
+ var i = ai;
-const expand = (ast, options = {}) => {
- let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit;
+ if (ai >= 0 && bi > 0) {
+ begs = [];
+ left = str.length;
- let walk = (node, parent = {}) => {
- node.queue = [];
+ while (i >= 0 && !result) {
+ if (i == ai) {
+ begs.push(i);
+ ai = str.indexOf(a, i + 1);
+ } else if (begs.length == 1) {
+ result = [ begs.pop(), bi ];
+ } else {
+ beg = begs.pop();
+ if (beg < left) {
+ left = beg;
+ right = bi;
+ }
- let p = parent;
- let q = parent.queue;
+ bi = str.indexOf(b, i + 1);
+ }
- while (p.type !== 'brace' && p.type !== 'root' && p.parent) {
- p = p.parent;
- q = p.queue;
+ i = ai < bi && ai >= 0 ? ai : bi;
}
- if (node.invalid || node.dollar) {
- q.push(append(q.pop(), stringify(node, options)));
- return;
+ if (begs.length) {
+ result = [ left, right ];
}
+ }
- if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {
- q.push(append(q.pop(), ['{}']));
- return;
- }
+ return result;
+}
- if (node.nodes && node.ranges > 0) {
- let args = utils.reduce(node.nodes);
- if (utils.exceedsLimit(...args, options.step, rangeLimit)) {
- throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');
- }
+/***/ }),
+/* 372 */
+/***/ (function(module, exports, __webpack_require__) {
- let range = fill(...args, options);
- if (range.length === 0) {
- range = stringify(node, options);
- }
+try {
+ var util = __webpack_require__(234);
+ /* istanbul ignore next */
+ if (typeof util.inherits !== 'function') throw '';
+ module.exports = util.inherits;
+} catch (e) {
+ /* istanbul ignore next */
+ module.exports = __webpack_require__(373);
+}
- q.push(append(q.pop(), range));
- node.nodes = [];
- return;
- }
- let enclose = utils.encloseBrace(node);
- let queue = node.queue;
- let block = node;
+/***/ }),
+/* 373 */
+/***/ (function(module, exports) {
- while (block.type !== 'brace' && block.type !== 'root' && block.parent) {
- block = block.parent;
- queue = block.queue;
+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
}
+ }
+}
- for (let i = 0; i < node.nodes.length; i++) {
- let child = node.nodes[i];
- if (child.type === 'comma' && node.type === 'brace') {
- if (i === 1) queue.push('');
- queue.push('');
- continue;
- }
+/***/ }),
+/* 374 */
+/***/ (function(module, exports, __webpack_require__) {
- if (child.type === 'close') {
- q.push(append(q.pop(), queue, enclose));
- continue;
- }
+"use strict";
- if (child.value && child.type !== 'open') {
- queue.push(append(queue.pop(), child.value));
- continue;
- }
- if (child.nodes) {
- walk(child, node);
- }
- }
+function posix(path) {
+ return path.charAt(0) === '/';
+}
- return queue;
- };
+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) !== ':');
- return utils.flatten(walk(ast));
-};
+ // UNC paths are always absolute
+ return Boolean(result[2] || isUnc);
+}
-module.exports = expand;
+module.exports = process.platform === 'win32' ? win32 : posix;
+module.exports.posix = posix;
+module.exports.win32 = win32;
/***/ }),
-/* 277 */
+/* 375 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
+module.exports = globSync
+globSync.GlobSync = GlobSync
+var rp = __webpack_require__(366)
+var minimatch = __webpack_require__(368)
+var Minimatch = minimatch.Minimatch
+var Glob = __webpack_require__(365).Glob
+var util = __webpack_require__(234)
+var path = __webpack_require__(4)
+var assert = __webpack_require__(283)
+var isAbsolute = __webpack_require__(374)
+var common = __webpack_require__(376)
+var setopts = common.setopts
+var ownProp = common.ownProp
+var childrenIgnored = common.childrenIgnored
+var isIgnored = common.isIgnored
-const stringify = __webpack_require__(270);
+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')
-/**
- * Constants
- */
+ return new GlobSync(pattern, options).found
+}
-const {
- MAX_LENGTH,
- CHAR_BACKSLASH, /* \ */
- CHAR_BACKTICK, /* ` */
- CHAR_COMMA, /* , */
- CHAR_DOT, /* . */
- CHAR_LEFT_PARENTHESES, /* ( */
- CHAR_RIGHT_PARENTHESES, /* ) */
- CHAR_LEFT_CURLY_BRACE, /* { */
- CHAR_RIGHT_CURLY_BRACE, /* } */
- CHAR_LEFT_SQUARE_BRACKET, /* [ */
- CHAR_RIGHT_SQUARE_BRACKET, /* ] */
- CHAR_DOUBLE_QUOTE, /* " */
- CHAR_SINGLE_QUOTE, /* ' */
- CHAR_NO_BREAK_SPACE,
- CHAR_ZERO_WIDTH_NOBREAK_SPACE
-} = __webpack_require__(278);
+function GlobSync (pattern, options) {
+ if (!pattern)
+ throw new Error('must provide pattern')
-/**
- * parse
- */
+ 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')
-const parse = (input, options = {}) => {
- if (typeof input !== 'string') {
- throw new TypeError('Expected a string');
- }
+ if (!(this instanceof GlobSync))
+ return new GlobSync(pattern, options)
- let opts = options || {};
- let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
- if (input.length > max) {
- throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);
+ setopts(this, pattern, options)
+
+ if (this.noprocess)
+ return this
+
+ 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()
+}
- let ast = { type: 'root', input, nodes: [] };
- let stack = [ast];
- let block = ast;
- let prev = ast;
- let brackets = 0;
- let length = input.length;
- let index = 0;
- let depth = 0;
- let value;
- let memo = {};
+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)
+}
- /**
- * Helpers
- */
- const advance = () => input[index++];
- const push = node => {
- if (node.type === 'text' && prev.type === 'dot') {
- prev.type = 'text';
- }
+GlobSync.prototype._process = function (pattern, index, inGlobStar) {
+ assert(this instanceof GlobSync)
- if (prev && prev.type === 'text' && node.type === 'text') {
- prev.value += node.value;
- return;
- }
+ // 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.
- block.nodes.push(node);
- node.parent = block;
- node.prev = prev;
- prev = node;
- return node;
- };
+ // 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
- push({ type: 'bos' });
+ case 0:
+ // pattern *starts* with some non-trivial item.
+ // going to readdir(cwd), but not include the prefix in matches.
+ prefix = null
+ break
- while (index < length) {
- block = stack[stack.length - 1];
- value = advance();
+ 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
+ }
- /**
- * Invalid chars
- */
+ var remain = pattern.slice(n)
- if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {
- continue;
- }
+ // 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 chars
- */
+ var abs = this._makeAbs(read)
- if (value === CHAR_BACKSLASH) {
- push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });
- continue;
- }
+ //if ignored, skip processing
+ if (childrenIgnored(this, read))
+ return
- /**
- * Right square bracket (literal): ']'
- */
+ 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)
+}
- if (value === CHAR_RIGHT_SQUARE_BRACKET) {
- push({ type: 'text', value: '\\' + value });
- continue;
- }
- /**
- * Left square bracket: '['
- */
+GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
+ var entries = this._readdir(abs, inGlobStar)
- if (value === CHAR_LEFT_SQUARE_BRACKET) {
- brackets++;
+ // if the abs isn't a dir, then nothing can match!
+ if (!entries)
+ return
- let closed = true;
- let next;
+ // 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) === '.'
- while (index < length && (next = advance())) {
- value += next;
+ 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)
+ }
+ }
- if (next === CHAR_LEFT_SQUARE_BRACKET) {
- brackets++;
- continue;
- }
+ var len = matchedEntries.length
+ // If there are no matched entries, then nothing matches.
+ if (len === 0)
+ return
- if (next === CHAR_BACKSLASH) {
- value += advance();
- continue;
- }
+ // 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 (next === CHAR_RIGHT_SQUARE_BRACKET) {
- brackets--;
+ if (remain.length === 1 && !this.mark && !this.stat) {
+ if (!this.matches[index])
+ this.matches[index] = Object.create(null)
- if (brackets === 0) {
- break;
- }
- }
+ for (var i = 0; i < len; i ++) {
+ var e = matchedEntries[i]
+ if (prefix) {
+ if (prefix.slice(-1) !== '/')
+ e = prefix + '/' + e
+ else
+ e = prefix + e
}
- push({ type: 'text', value });
- continue;
+ 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
+ }
- /**
- * Parentheses
- */
-
- if (value === CHAR_LEFT_PARENTHESES) {
- block = push({ type: 'paren', nodes: [] });
- stack.push(block);
- push({ type: 'text', value });
- continue;
- }
+ // 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)
+ }
+}
- if (value === CHAR_RIGHT_PARENTHESES) {
- if (block.type !== 'paren') {
- push({ type: 'text', value });
- continue;
- }
- block = stack.pop();
- push({ type: 'text', value });
- block = stack[stack.length - 1];
- continue;
- }
- /**
- * Quotes: '|"|`
- */
+GlobSync.prototype._emitMatch = function (index, e) {
+ if (isIgnored(this, e))
+ return
- if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {
- let open = value;
- let next;
+ var abs = this._makeAbs(e)
- if (options.keepQuotes !== true) {
- value = '';
- }
+ if (this.mark)
+ e = this._mark(e)
- while (index < length && (next = advance())) {
- if (next === CHAR_BACKSLASH) {
- value += next + advance();
- continue;
- }
+ if (this.absolute) {
+ e = abs
+ }
- if (next === open) {
- if (options.keepQuotes === true) value += next;
- break;
- }
+ if (this.matches[index][e])
+ return
- value += next;
- }
+ if (this.nodir) {
+ var c = this.cache[abs]
+ if (c === 'DIR' || Array.isArray(c))
+ return
+ }
- push({ type: 'text', value });
- continue;
- }
+ this.matches[index][e] = true
- /**
- * Left curly brace: '{'
- */
+ if (this.stat)
+ this._stat(e)
+}
- if (value === CHAR_LEFT_CURLY_BRACE) {
- depth++;
- let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;
- let brace = {
- type: 'brace',
- open: true,
- close: false,
- dollar,
- depth,
- commas: 0,
- ranges: 0,
- nodes: []
- };
+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)
- block = push(brace);
- stack.push(block);
- push({ type: 'open', value });
- continue;
+ 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
}
+ }
- /**
- * Right curly brace: '}'
- */
+ var isSym = lstat && lstat.isSymbolicLink()
+ this.symlinks[abs] = isSym
- if (value === CHAR_RIGHT_CURLY_BRACE) {
- if (block.type !== 'brace') {
- push({ type: 'text', value });
- continue;
- }
+ // 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)
- let type = 'close';
- block = stack.pop();
- block.close = true;
+ return entries
+}
- push({ type, value });
- depth--;
+GlobSync.prototype._readdir = function (abs, inGlobStar) {
+ var entries
- block = stack[stack.length - 1];
- continue;
- }
+ if (inGlobStar && !ownProp(this.symlinks, abs))
+ return this._readdirInGlobStar(abs)
- /**
- * Comma: ','
- */
+ if (ownProp(this.cache, abs)) {
+ var c = this.cache[abs]
+ if (!c || c === 'FILE')
+ return null
- if (value === CHAR_COMMA && depth > 0) {
- if (block.ranges > 0) {
- block.ranges = 0;
- let open = block.nodes.shift();
- block.nodes = [open, { type: 'text', value: stringify(block) }];
- }
+ if (Array.isArray(c))
+ return c
+ }
- push({ type: 'comma', value });
- block.commas++;
- continue;
+ 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
}
+ }
- /**
- * Dot: '.'
- */
+ this.cache[abs] = entries
- if (value === CHAR_DOT && depth > 0 && block.commas === 0) {
- let siblings = block.nodes;
+ // mark and cache dir-ness
+ return entries
+}
- if (depth === 0 || siblings.length === 0) {
- push({ type: 'text', value });
- continue;
+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
- if (prev.type === 'dot') {
- block.range = [];
- prev.value += value;
- prev.type = 'range';
-
- if (block.nodes.length !== 3 && block.nodes.length !== 5) {
- block.invalid = true;
- block.ranges = 0;
- prev.type = 'text';
- continue;
- }
+ case 'ENOENT': // not terribly unusual
+ case 'ELOOP':
+ case 'ENAMETOOLONG':
+ case 'UNKNOWN':
+ this.cache[this._makeAbs(f)] = false
+ break
- block.ranges++;
- block.args = [];
- continue;
- }
+ 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
+ }
+}
- if (prev.type === 'range') {
- siblings.pop();
+GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
- let before = siblings[siblings.length - 1];
- before.value += prev.value + value;
- prev = before;
- block.ranges--;
- continue;
- }
+ var entries = this._readdir(abs, inGlobStar)
- push({ type: 'dot', value });
- continue;
- }
+ // no entries means not a dir, so it can never have matches
+ // foo.txt/** doesn't match foo.txt
+ if (!entries)
+ return
- /**
- * Text
- */
+ // 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)
- push({ type: 'text', value });
- }
+ // the noGlobStar pattern exits the inGlobStar state
+ this._process(noGlobStar, index, false)
- // Mark imbalanced braces and brackets as invalid
- do {
- block = stack.pop();
+ var len = entries.length
+ var isSym = this.symlinks[abs]
- if (block.type !== 'root') {
- block.nodes.forEach(node => {
- if (!node.nodes) {
- if (node.type === 'open') node.isOpen = true;
- if (node.type === 'close') node.isClose = true;
- if (!node.nodes) node.type = 'text';
- node.invalid = true;
- }
- });
+ // If it's a symlink, and we're in a globstar, then stop
+ if (isSym && inGlobStar)
+ return
- // get the location of the block on parent.nodes (block's siblings)
- let parent = stack[stack.length - 1];
- let index = parent.nodes.indexOf(block);
- // replace the (invalid) block with it's nodes
- parent.nodes.splice(index, 1, ...block.nodes);
+ 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)
+
+ 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)
+
+ // 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 += '/'
}
- } while (stack.length > 0);
+ }
- push({ type: 'eos' });
- return ast;
-};
+ if (process.platform === 'win32')
+ prefix = prefix.replace(/\\/g, '/')
-module.exports = parse;
+ // Mark this as a match
+ this._emitMatch(index, prefix)
+}
+// Returns either 'DIR', 'FILE', or false
+GlobSync.prototype._stat = function (f) {
+ var abs = this._makeAbs(f)
+ var needDir = f.slice(-1) === '/'
-/***/ }),
-/* 278 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (f.length > this.maxLength)
+ return false
-"use strict";
+ if (!this.stat && ownProp(this.cache, abs)) {
+ var c = this.cache[abs]
+ if (Array.isArray(c))
+ c = 'DIR'
-module.exports = {
- MAX_LENGTH: 1024 * 64,
+ // It exists, but maybe not how we need it
+ if (!needDir || c === 'DIR')
+ return c
- // Digits
- CHAR_0: '0', /* 0 */
- CHAR_9: '9', /* 9 */
+ if (needDir && c === 'FILE')
+ return false
- // Alphabet chars.
- CHAR_UPPERCASE_A: 'A', /* A */
- CHAR_LOWERCASE_A: 'a', /* a */
- CHAR_UPPERCASE_Z: 'Z', /* Z */
- CHAR_LOWERCASE_Z: 'z', /* z */
+ // otherwise we have to stat, because maybe c=true
+ // if we know it exists, but not what it is.
+ }
- CHAR_LEFT_PARENTHESES: '(', /* ( */
- CHAR_RIGHT_PARENTHESES: ')', /* ) */
+ 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
+ }
+ }
- CHAR_ASTERISK: '*', /* * */
+ if (lstat && lstat.isSymbolicLink()) {
+ try {
+ stat = this.fs.statSync(abs)
+ } catch (er) {
+ stat = lstat
+ }
+ } else {
+ stat = lstat
+ }
+ }
- // Non-alphabetic chars.
- CHAR_AMPERSAND: '&', /* & */
- CHAR_AT: '@', /* @ */
- CHAR_BACKSLASH: '\\', /* \ */
- CHAR_BACKTICK: '`', /* ` */
- CHAR_CARRIAGE_RETURN: '\r', /* \r */
- CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */
- CHAR_COLON: ':', /* : */
- CHAR_COMMA: ',', /* , */
- CHAR_DOLLAR: '$', /* . */
- CHAR_DOT: '.', /* . */
- CHAR_DOUBLE_QUOTE: '"', /* " */
- CHAR_EQUAL: '=', /* = */
- CHAR_EXCLAMATION_MARK: '!', /* ! */
- CHAR_FORM_FEED: '\f', /* \f */
- CHAR_FORWARD_SLASH: '/', /* / */
- CHAR_HASH: '#', /* # */
- CHAR_HYPHEN_MINUS: '-', /* - */
- CHAR_LEFT_ANGLE_BRACKET: '<', /* < */
- CHAR_LEFT_CURLY_BRACE: '{', /* { */
- CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */
- CHAR_LINE_FEED: '\n', /* \n */
- CHAR_NO_BREAK_SPACE: '\u00A0', /* \u00A0 */
- CHAR_PERCENT: '%', /* % */
- CHAR_PLUS: '+', /* + */
- CHAR_QUESTION_MARK: '?', /* ? */
- CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */
- CHAR_RIGHT_CURLY_BRACE: '}', /* } */
- CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */
- CHAR_SEMICOLON: ';', /* ; */
- CHAR_SINGLE_QUOTE: '\'', /* ' */
- CHAR_SPACE: ' ', /* */
- CHAR_TAB: '\t', /* \t */
- CHAR_UNDERSCORE: '_', /* _ */
- CHAR_VERTICAL_LINE: '|', /* | */
- CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\uFEFF' /* \uFEFF */
-};
+ this.statCache[abs] = stat
+
+ var c = true
+ if (stat)
+ c = stat.isDirectory() ? 'DIR' : 'FILE'
+ this.cache[abs] = this.cache[abs] || c
-/***/ }),
-/* 279 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (needDir && c === 'FILE')
+ return false
-"use strict";
+ return c
+}
+GlobSync.prototype._mark = function (p) {
+ return common.mark(this, p)
+}
-module.exports = __webpack_require__(280);
+GlobSync.prototype._makeAbs = function (f) {
+ return common.makeAbs(this, f)
+}
/***/ }),
-/* 280 */
+/* 376 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
+exports.setopts = setopts
+exports.ownProp = ownProp
+exports.makeAbs = makeAbs
+exports.finish = finish
+exports.mark = mark
+exports.isIgnored = isIgnored
+exports.childrenIgnored = childrenIgnored
+function ownProp (obj, field) {
+ return Object.prototype.hasOwnProperty.call(obj, field)
+}
-const path = __webpack_require__(4);
-const scan = __webpack_require__(281);
-const parse = __webpack_require__(284);
-const utils = __webpack_require__(282);
-const constants = __webpack_require__(283);
-const isObject = val => val && typeof val === 'object' && !Array.isArray(val);
+var fs = __webpack_require__(253)
+var path = __webpack_require__(4)
+var minimatch = __webpack_require__(368)
+var isAbsolute = __webpack_require__(374)
+var Minimatch = minimatch.Minimatch
-/**
- * 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
- */
+function alphasort (a, b) {
+ return a.localeCompare(b, 'en')
+}
-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;
- }
+function setupIgnores (self, options) {
+ self.ignore = options.ignore || []
- const isState = isObject(glob) && glob.tokens && glob.input;
+ if (!Array.isArray(self.ignore))
+ self.ignore = [self.ignore]
- if (glob === '' || (typeof glob !== 'string' && !isState)) {
- throw new TypeError('Expected pattern to be a non-empty string');
+ if (self.ignore.length) {
+ self.ignore = self.ignore.map(ignoreMap)
}
+}
- 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;
+// 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 })
+ }
- let isIgnored = () => false;
- if (opts.ignore) {
- const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };
- isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);
+ return {
+ matcher: new Minimatch(pattern, { dot: true }),
+ gmatcher: gmatcher
}
+}
- 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 };
+function setopts (self, pattern, options) {
+ if (!options)
+ options = {}
- if (typeof opts.onResult === 'function') {
- opts.onResult(result);
+ // 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
+ }
- if (isMatch === false) {
- result.isMatch = false;
- return returnObject ? result : false;
- }
+ 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
- if (isIgnored(input)) {
- if (typeof opts.onIgnore === 'function') {
- opts.onIgnore(result);
- }
- result.isMatch = false;
- return returnObject ? result : false;
- }
+ 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)
- if (typeof opts.onMatch === 'function') {
- opts.onMatch(result);
- }
- return returnObject ? result : true;
- };
+ setupIgnores(self, options)
- if (returnState) {
- matcher.state = state;
+ 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
}
- 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
- */
+ self.root = options.root || path.resolve(self.cwd, "/")
+ self.root = path.resolve(self.root)
+ if (process.platform === "win32")
+ self.root = self.root.replace(/\\/g, "/")
-picomatch.test = (input, regex, options, { glob, posix } = {}) => {
- if (typeof input !== 'string') {
- throw new TypeError('Expected input to be a string');
- }
+ // 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
- if (input === '') {
- return { isMatch: false, output: '' };
- }
+ // disable comments and negation in Minimatch.
+ // Note that they are not supported in Glob itself anyway.
+ options.nonegate = true
+ options.nocomment = true
- const opts = options || {};
- const format = opts.format || (posix ? utils.toPosixSlashes : null);
- let match = input === glob;
- let output = (match && format) ? format(input) : input;
+ self.minimatch = new Minimatch(pattern, options)
+ self.options = self.minimatch.options
+}
- if (match === false) {
- output = format ? format(input) : input;
- match = output === glob;
- }
+function finish (self) {
+ var nou = self.nounique
+ var all = nou ? [] : Object.create(null)
- if (match === false || opts.capture === true) {
- if (opts.matchBase === true || opts.basename === true) {
- match = picomatch.matchBase(input, regex, options, posix);
+ 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 {
- match = regex.exec(output);
+ // had matches
+ var m = Object.keys(matches)
+ if (nou)
+ all.push.apply(all, m)
+ else
+ m.forEach(function (m) {
+ all[m] = true
+ })
}
}
- return { isMatch: Boolean(match), match, output };
-};
+ if (!nou)
+ all = Object.keys(all)
-/**
- * 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
- */
+ if (!self.nosort)
+ all = all.sort(alphasort)
-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));
-};
+ // 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
+ })
+ }
+ }
-/**
- * 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
- */
+ if (self.ignore.length)
+ all = all.filter(function(m) {
+ return !isIgnored(self, m)
+ })
-picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);
+ self.found = all
+}
-/**
- * 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
- */
+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) === '/'
-picomatch.parse = (pattern, options) => {
- if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));
- return parse(pattern, { ...options, fastpaths: false });
-};
+ if (isDir && !slash)
+ m += '/'
+ else if (!isDir && slash)
+ m = m.slice(0, -1)
-/**
- * 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);
+ if (m !== p) {
+ var mabs = makeAbs(self, m)
+ self.statCache[mabs] = self.statCache[abs]
+ self.cache[mabs] = self.cache[abs]
+ }
+ }
-/**
- * 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
- */
+ return m
+}
-picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {
- if (returnOutput === true) {
- return state.output;
+// 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 opts = options || {};
- const prepend = opts.contains ? '' : '^';
- const append = opts.contains ? '' : '$';
+ if (process.platform === 'win32')
+ abs = abs.replace(/\\/g, '/')
- let source = `${prepend}(?:${state.output})${append}`;
- if (state && state.negated === true) {
- source = `^(?!${source}).*$`;
- }
+ return abs
+}
- const regex = picomatch.toRegex(source, options);
- if (returnState === true) {
- regex.state = state;
- }
- return regex;
-};
+// 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
-/**
- * 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
- */
+ return self.ignore.some(function(item) {
+ return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
+ })
+}
-picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {
- if (!input || typeof input !== 'string') {
- throw new TypeError('Expected a non-empty string');
- }
+function childrenIgnored (self, path) {
+ if (!self.ignore.length)
+ return false
- let parsed = { negated: false, fastpaths: true };
+ return self.ignore.some(function(item) {
+ return !!(item.gmatcher && item.gmatcher.match(path))
+ })
+}
- if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {
- parsed.output = parse.fastpaths(input, options);
- }
- if (!parsed.output) {
- parsed = parse(input, options);
- }
+/***/ }),
+/* 377 */
+/***/ (function(module, exports, __webpack_require__) {
- return picomatch.compileRe(parsed, options, returnOutput, returnState);
-};
+var wrappy = __webpack_require__(291)
+var reqs = Object.create(null)
+var once = __webpack_require__(290)
-/**
- * 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
- */
+module.exports = wrappy(inflight)
-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 /$^/;
+function inflight (key, cb) {
+ if (reqs[key]) {
+ reqs[key].push(cb)
+ return null
+ } else {
+ reqs[key] = [cb]
+ return makeres(key)
}
-};
+}
-/**
- * Picomatch constants.
- * @return {Object}
- */
+function makeres (key) {
+ return once(function RES () {
+ var cbs = reqs[key]
+ var len = cbs.length
+ var args = slice(arguments)
-picomatch.constants = constants;
+ // 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]
+ }
+ }
+ })
+}
-/**
- * Expose "picomatch"
- */
+function slice (args) {
+ var length = args.length
+ var array = []
-module.exports = picomatch;
+ for (var i = 0; i < length; i++) array[i] = args[i]
+ return array
+}
/***/ }),
-/* 281 */
+/* 378 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+const taskManager = __webpack_require__(379);
+const async_1 = __webpack_require__(408);
+const stream_1 = __webpack_require__(443);
+const sync_1 = __webpack_require__(444);
+const settings_1 = __webpack_require__(446);
+const utils = __webpack_require__(380);
+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 utils = __webpack_require__(282);
-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__(283);
-const isPathSeparator = code => {
- return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;
-};
+/***/ }),
+/* 379 */
+/***/ (function(module, exports, __webpack_require__) {
-const depth = token => {
- if (token.isPrefix !== true) {
- token.depth = token.isGlobstar ? Infinity : 1;
- }
-};
+"use strict";
+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__(380);
+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;
/**
- * 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 `!(`).
+ * Returns tasks grouped by basic pattern directories.
*
- * ```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
+ * 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;
-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 = [];
+/***/ }),
+/* 380 */
+/***/ (function(module, exports, __webpack_require__) {
- 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 };
+"use strict";
- const eos = () => index >= length;
- const peek = () => str.charCodeAt(index + 1);
- const advance = () => {
- prev = code;
- return str.charCodeAt(++index);
- };
+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__(381);
+exports.array = array;
+const errno = __webpack_require__(382);
+exports.errno = errno;
+const fs = __webpack_require__(383);
+exports.fs = fs;
+const path = __webpack_require__(384);
+exports.path = path;
+const pattern = __webpack_require__(385);
+exports.pattern = pattern;
+const stream = __webpack_require__(406);
+exports.stream = stream;
+const string = __webpack_require__(407);
+exports.string = string;
- while (index < length) {
- code = advance();
- let next;
- if (code === CHAR_BACKWARD_SLASH) {
- backslashes = token.backslashes = true;
- code = advance();
+/***/ }),
+/* 381 */
+/***/ (function(module, exports, __webpack_require__) {
- if (code === CHAR_LEFT_CURLY_BRACE) {
- braceEscaped = true;
- }
- continue;
+"use strict";
+
+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;
- 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;
- }
+/***/ }),
+/* 382 */
+/***/ (function(module, exports, __webpack_require__) {
- if (code === CHAR_LEFT_CURLY_BRACE) {
- braces++;
- continue;
- }
+"use strict";
- if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {
- isBrace = token.isBrace = true;
- isGlob = token.isGlob = true;
- finished = true;
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isEnoentCodeError = void 0;
+function isEnoentCodeError(error) {
+ return error.code === 'ENOENT';
+}
+exports.isEnoentCodeError = isEnoentCodeError;
- if (scanToEnd === true) {
- continue;
- }
- break;
- }
+/***/ }),
+/* 383 */
+/***/ (function(module, exports, __webpack_require__) {
- if (braceEscaped !== true && code === CHAR_COMMA) {
- isBrace = token.isBrace = true;
- isGlob = token.isGlob = true;
- finished = true;
+"use strict";
- if (scanToEnd === true) {
- continue;
- }
+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;
- break;
- }
- if (code === CHAR_RIGHT_CURLY_BRACE) {
- braces--;
+/***/ }),
+/* 384 */
+/***/ (function(module, exports, __webpack_require__) {
- if (braces === 0) {
- braceEscaped = false;
- isBrace = token.isBrace = true;
- finished = true;
- break;
- }
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0;
+const path = __webpack_require__(4);
+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 (scanToEnd === true) {
- continue;
- }
- break;
+/***/ }),
+/* 385 */
+/***/ (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__(4);
+const globParent = __webpack_require__(386);
+const micromatch = __webpack_require__(389);
+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;
- 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;
- }
+/***/ }),
+/* 386 */
+/***/ (function(module, exports, __webpack_require__) {
- lastIndex = index + 1;
- continue;
- }
+"use strict";
- 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;
- }
+var isGlob = __webpack_require__(387);
+var pathPosixDirname = __webpack_require__(4).posix.dirname;
+var isWin32 = __webpack_require__(243).platform() === 'win32';
- if (scanToEnd === true) {
- while (eos() !== true && (code = advance())) {
- if (code === CHAR_BACKWARD_SLASH) {
- backslashes = token.backslashes = true;
- code = advance();
- continue;
- }
+var slash = '/';
+var backslash = /\\/g;
+var enclosure = /[\{\[].*[\}\]]$/;
+var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/;
+var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g;
- if (code === CHAR_RIGHT_PARENTHESES) {
- isGlob = token.isGlob = true;
- finished = true;
- break;
- }
- }
- continue;
- }
- break;
- }
- }
+/**
+ * @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 (code === CHAR_ASTERISK) {
- if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;
- isGlob = token.isGlob = true;
- finished = true;
+ // flip windows path separators
+ if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {
+ str = str.replace(backslash, slash);
+ }
- if (scanToEnd === true) {
- continue;
- }
- break;
- }
+ // special case for strings ending in enclosure containing path separator
+ if (enclosure.test(str)) {
+ str += slash;
+ }
- if (code === CHAR_QUESTION_MARK) {
- isGlob = token.isGlob = true;
- finished = true;
+ // preserves full path in case of trailing path separator
+ str += 'a';
- if (scanToEnd === true) {
- continue;
- }
- break;
+ // remove path parts that are globby
+ do {
+ str = pathPosixDirname(str);
+ } while (isGlob(str) || globby.test(str));
+
+ // remove escape chars and return result
+ return str.replace(escaped, '$1');
+};
+
+
+/***/ }),
+/* 387 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/*!
+ * is-glob
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+var isExtglob = __webpack_require__(388);
+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 (code === CHAR_LEFT_SQUARE_BRACKET) {
- while (eos() !== true && (next = advance())) {
- if (next === CHAR_BACKWARD_SLASH) {
- backslashes = token.backslashes = true;
- advance();
- continue;
- }
+ if (str[index + 1] === '?' && /[\].+)]/.test(str[index])) {
+ return true;
+ }
- if (next === CHAR_RIGHT_SQUARE_BRACKET) {
- isBracket = token.isBracket = true;
- isGlob = token.isGlob = true;
- finished = true;
- break;
+ 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;
}
}
+ }
- if (scanToEnd === true) {
- continue;
+ 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;
+ }
}
-
- break;
}
- if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {
- negated = token.negated = true;
- start++;
- continue;
+ 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 (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {
- isGlob = token.isGlob = true;
-
- if (scanToEnd === true) {
- while (eos() !== true && (code = advance())) {
- if (code === CHAR_LEFT_PARENTHESES) {
- backslashes = token.backslashes = true;
- code = advance();
- continue;
- }
-
- if (code === CHAR_RIGHT_PARENTHESES) {
- finished = true;
- break;
+ 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;
}
}
- continue;
}
- break;
}
- if (isGlob === true) {
- finished = true;
+ if (str[index] === '\\') {
+ var open = str[index + 1];
+ index += 2;
+ var close = chars[open];
- if (scanToEnd === true) {
- continue;
+ if (close) {
+ var n = str.indexOf(close, index);
+ if (n !== -1) {
+ index = n + 1;
+ }
}
- break;
+ if (str[index] === '!') {
+ return true;
+ }
+ } else {
+ index++;
}
}
+ return false;
+};
- if (opts.noext === true) {
- isExtglob = false;
- isGlob = false;
+var relaxedCheck = function(str) {
+ if (str[0] === '!') {
+ return true;
}
+ var index = 0;
+ while (index < str.length) {
+ if (/[*?{}()[\]]/.test(str[index])) {
+ return true;
+ }
- let base = str;
- let prefix = '';
- let glob = '';
+ if (str[index] === '\\') {
+ var open = str[index + 1];
+ index += 2;
+ var close = chars[open];
- if (start > 0) {
- prefix = str.slice(0, start);
- str = str.slice(start);
- lastIndex -= start;
+ if (close) {
+ var n = str.indexOf(close, index);
+ if (n !== -1) {
+ index = n + 1;
+ }
+ }
+
+ if (str[index] === '!') {
+ return true;
+ }
+ } else {
+ index++;
+ }
}
+ return false;
+};
- 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;
+module.exports = function isGlob(str, options) {
+ if (typeof str !== 'string' || str === '') {
+ return false;
}
- if (base && base !== '' && base !== '/' && base !== str) {
- if (isPathSeparator(base.charCodeAt(base.length - 1))) {
- base = base.slice(0, -1);
- }
+ if (isExtglob(str)) {
+ return true;
}
- if (opts.unescape === true) {
- if (glob) glob = utils.removeBackslashes(glob);
+ var check = strictCheck;
- if (base && backslashes === true) {
- base = utils.removeBackslashes(base);
- }
+ // optionally relax check
+ if (options && options.strict === false) {
+ check = relaxedCheck;
}
- const state = {
- prefix,
- input,
- start,
- base,
- glob,
- isBrace,
- isBracket,
- isGlob,
- isExtglob,
- isGlobstar,
- negated,
- negatedExtglob
- };
+ return check(str);
+};
- if (opts.tokens === true) {
- state.maxDepth = 0;
- if (!isPathSeparator(code)) {
- tokens.push(token);
- }
- state.tokens = tokens;
- }
- if (opts.parts === true || opts.tokens === true) {
- let prevIndex;
+/***/ }),
+/* 388 */
+/***/ (function(module, exports) {
- 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;
- }
-
- if (prevIndex && prevIndex + 1 < input.length) {
- const value = input.slice(prevIndex + 1);
- parts.push(value);
+/*!
+ * is-extglob
+ *
+ * Copyright (c) 2014-2016, Jon Schlinkert.
+ * Licensed under the MIT License.
+ */
- if (opts.tokens) {
- tokens[tokens.length - 1].value = value;
- depth(tokens[tokens.length - 1]);
- state.maxDepth += tokens[tokens.length - 1].depth;
- }
- }
+module.exports = function isExtglob(str) {
+ if (typeof str !== 'string' || str === '') {
+ return false;
+ }
- state.slashes = slashes;
- state.parts = parts;
+ var match;
+ while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) {
+ if (match[2]) return true;
+ str = str.slice(match.index + match[0].length);
}
- return state;
+ return false;
};
-module.exports = scan;
-
/***/ }),
-/* 282 */
+/* 389 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const path = __webpack_require__(4);
-const win32 = process.platform === 'win32';
-const {
- REGEX_BACKSLASH,
- REGEX_REMOVE_BACKSLASH,
- REGEX_SPECIAL_CHARS,
- REGEX_SPECIAL_CHARS_GLOBAL
-} = __webpack_require__(283);
+const util = __webpack_require__(234);
+const braces = __webpack_require__(390);
+const picomatch = __webpack_require__(400);
+const utils = __webpack_require__(403);
+const isEmptyString = val => val === '' || val === './';
-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, '/');
+/**
+ * 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
+ */
-exports.removeBackslashes = str => {
- return str.replace(REGEX_REMOVE_BACKSLASH, match => {
- return match === '\\' ? '' : match;
- });
-};
+const micromatch = (list, patterns, options) => {
+ patterns = [].concat(patterns);
+ list = [].concat(list);
-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;
-};
+ let omit = new Set();
+ let keep = new Set();
+ let items = new Set();
+ let negatives = 0;
-exports.isWindows = options => {
- if (options && typeof options.windows === 'boolean') {
- return options.windows;
- }
- return win32 === true || path.sep === '\\';
-};
+ let onResult = state => {
+ items.add(state.output);
+ if (options && options.onResult) {
+ options.onResult(state);
+ }
+ };
-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)}`;
-};
+ 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++;
-exports.removePrefix = (input, state = {}) => {
- let output = input;
- if (output.startsWith('./')) {
- output = output.slice(2);
- state.prefix = './';
- }
- return output;
-};
+ for (let item of list) {
+ let matched = isMatch(item, true);
-exports.wrapOutput = (input, state = {}, options = {}) => {
- const prepend = options.contains ? '' : '^';
- const append = options.contains ? '' : '$';
+ let match = negated ? !matched.isMatch : matched.isMatch;
+ if (!match) continue;
- let output = `${prepend}(?:${input})${append}`;
- if (state.negated === true) {
- output = `(?:^(?!${output}).*$)`;
+ if (negated) {
+ omit.add(matched.output);
+ } else {
+ omit.delete(matched.output);
+ keep.add(matched.output);
+ }
+ }
}
- return output;
-};
+ let result = negatives === patterns.length ? [...items] : [...keep];
+ let matches = result.filter(item => !omit.has(item));
-/***/ }),
-/* 283 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
+ if (options && matches.length === 0) {
+ if (options.failglob === true) {
+ throw new Error(`No matches found for "${patterns.join(', ')}"`);
+ }
+ if (options.nonull === true || options.nullglob === true) {
+ return options.unescape ? patterns.map(p => p.replace(/\\/g, '')) : patterns;
+ }
+ }
-const path = __webpack_require__(4);
-const WIN_SLASH = '\\\\/';
-const WIN_NO_SLASH = `[^${WIN_SLASH}]`;
+ return matches;
+};
/**
- * Posix glob regex
+ * Backwards compatibility
*/
-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
-};
+micromatch.match = micromatch;
/**
- * Windows glob regex
+ * 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
*/
-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}]|$)`
-};
+micromatch.matcher = (pattern, options) => picomatch(pattern, options);
/**
- * POSIX Bracket Regex
+ * 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 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'
-};
-
-module.exports = {
- MAX_LENGTH: 1024 * 64,
- POSIX_REGEX_SOURCE,
-
- // 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: {
- '***': '*',
- '**/**': '**',
- '**/**/**': '**'
- },
-
- // Digits
- CHAR_0: 48, /* 0 */
- CHAR_9: 57, /* 9 */
-
- // 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, /* ) */
+micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);
- CHAR_ASTERISK: 42, /* * */
+/**
+ * Backwards compatibility
+ */
- // 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 */
+micromatch.any = micromatch.isMatch;
- SEP: path.sep,
+/**
+ * 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
+ */
- /**
- * Create EXTGLOB_CHARS
- */
+micromatch.not = (list, patterns, options = {}) => {
+ patterns = [].concat(patterns).map(String);
+ let result = new Set();
+ let items = [];
- 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: ')' }
- };
- },
+ let onResult = state => {
+ if (options.onResult) options.onResult(state);
+ items.push(state.output);
+ };
- /**
- * Create GLOB_CHARS
- */
+ let matches = micromatch(list, patterns, { ...options, onResult });
- globChars(win32) {
- return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;
+ for (let item of items) {
+ if (!matches.includes(item)) {
+ result.add(item);
+ }
}
+ return [...result];
};
-
-/***/ }),
-/* 284 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-const constants = __webpack_require__(283);
-const utils = __webpack_require__(282);
-
/**
- * Constants
+ * 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 {
- MAX_LENGTH,
- POSIX_REGEX_SOURCE,
- REGEX_NON_SPECIAL_CHARS,
- REGEX_SPECIAL_CHARS_BACKREF,
- REPLACEMENTS
-} = constants;
-
-/**
- * Helpers
- */
+micromatch.contains = (str, pattern, options) => {
+ if (typeof str !== 'string') {
+ throw new TypeError(`Expected a string: "${util.inspect(str)}"`);
+ }
-const expandRange = (args, options) => {
- if (typeof options.expandRange === 'function') {
- return options.expandRange(...args, options);
+ if (Array.isArray(pattern)) {
+ return pattern.some(p => micromatch.contains(str, p, options));
}
- args.sort();
- const value = `[${args.join('-')}]`;
+ if (typeof pattern === 'string') {
+ if (isEmptyString(str) || isEmptyString(pattern)) {
+ return false;
+ }
- try {
- /* eslint-disable-next-line no-new */
- new RegExp(value);
- } catch (ex) {
- return args.map(v => utils.escapeRegex(v)).join('..');
+ if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {
+ return true;
+ }
}
- return value;
+ return micromatch.isMatch(str, pattern, { ...options, contains: true });
};
/**
- * Create the message for a syntax error
+ * 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 syntaxError = (type, char) => {
- return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`;
+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;
};
/**
- * Parse the given input string.
- * @param {String} input
- * @param {Object} options
- * @return {Object}
+ * 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 parse = (input, options) => {
- if (typeof input !== 'string') {
- throw new TypeError('Expected a string');
- }
-
- input = REPLACEMENTS[input] || input;
-
- const opts = { ...options };
- const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
+micromatch.some = (list, patterns, options) => {
+ let items = [].concat(list);
- let len = input.length;
- if (len > max) {
- throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
+ for (let pattern of [].concat(patterns)) {
+ let isMatch = picomatch(String(pattern), options);
+ if (items.some(item => isMatch(item))) {
+ return true;
+ }
}
+ return false;
+};
- const bos = { type: 'bos', value: '', output: opts.prepend || '' };
- const tokens = [bos];
-
- const capture = opts.capture ? '' : '?:';
- const win32 = utils.isWindows(options);
-
- // create constants based on platform, for windows or posix
- const PLATFORM_CHARS = constants.globChars(win32);
- const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);
+/**
+ * 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 {
- 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;
+micromatch.every = (list, patterns, options) => {
+ let items = [].concat(list);
- const globstar = opts => {
- return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
- };
+ for (let pattern of [].concat(patterns)) {
+ let isMatch = picomatch(String(pattern), options);
+ if (!items.every(item => isMatch(item))) {
+ return false;
+ }
+ }
+ return true;
+};
- const nodot = opts.dot ? '' : NO_DOT;
- const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;
- let star = opts.bash === true ? globstar(opts) : STAR;
+/**
+ * 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 (opts.capture) {
- star = `(${star})`;
+micromatch.all = (str, patterns, options) => {
+ if (typeof str !== 'string') {
+ throw new TypeError(`Expected a string: "${util.inspect(str)}"`);
}
- // minimatch options support
- if (typeof opts.noext === 'boolean') {
- opts.noextglob = opts.noext;
- }
+ return [].concat(patterns).every(p => picomatch(p, options)(str));
+};
- 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
- };
+/**
+ * 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
+ */
- input = utils.removePrefix(input, state);
- len = input.length;
+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 extglobs = [];
- const braces = [];
- const stack = [];
- let prev = bos;
- let value;
+ if (match) {
+ return match.slice(1).map(v => v === void 0 ? '' : v);
+ }
+};
- /**
- * Tokenizing helpers
- */
+/**
+ * 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 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;
- };
+micromatch.makeRe = (...args) => picomatch.makeRe(...args);
- const append = token => {
- state.output += token.output != null ? token.output : token.value;
- consume(token.value);
- };
+/**
+ * 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
+ */
- const negate = () => {
- let count = 1;
+micromatch.scan = (...args) => picomatch.scan(...args);
- while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {
- advance();
- state.start++;
- count++;
- }
+/**
+ * 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
+ */
- if (count % 2 === 0) {
- 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;
+};
- state.negated = true;
- state.start++;
- return true;
- };
-
- const increment = type => {
- state[type]++;
- stack.push(type);
- };
-
- const decrement = type => {
- state[type]--;
- stack.pop();
- };
+/**
+ * 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
+ */
- /**
- * 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.
- */
+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);
+};
- 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'));
+/**
+ * Expand braces
+ */
- 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;
- }
- }
+micromatch.braceExpand = (pattern, options) => {
+ if (typeof pattern !== 'string') throw new TypeError('Expected a string');
+ return micromatch.braces(pattern, { ...options, expand: true });
+};
- if (extglobs.length && tok.type !== 'paren') {
- extglobs[extglobs.length - 1].inner += tok.value;
- }
+/**
+ * Expose micromatch
+ */
- 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;
- }
+module.exports = micromatch;
- tok.prev = prev;
- tokens.push(tok);
- prev = tok;
- };
- const extglobOpen = (type, value) => {
- const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };
+/***/ }),
+/* 390 */
+/***/ (function(module, exports, __webpack_require__) {
- token.prev = prev;
- token.parens = state.parens;
- token.output = state.output;
- const output = (opts.capture ? '(' : '') + token.open;
+"use strict";
- increment('parens');
- push({ type, value, output: state.output ? '' : ONE_CHAR });
- push({ type: 'paren', extglob: true, value: advance(), output });
- extglobs.push(token);
- };
- const extglobClose = token => {
- let output = token.close + (opts.capture ? ')' : '');
- let rest;
+const stringify = __webpack_require__(391);
+const compile = __webpack_require__(393);
+const expand = __webpack_require__(397);
+const parse = __webpack_require__(398);
- if (token.type === 'negate') {
- let extglobStar = star;
+/**
+ * Expand the given pattern or create a regex-compatible string.
+ *
+ * ```js
+ * const braces = require('braces');
+ * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']
+ * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']
+ * ```
+ * @param {String} `str`
+ * @param {Object} `options`
+ * @return {String}
+ * @api public
+ */
- if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {
- extglobStar = globstar(opts);
- }
+const braces = (input, options = {}) => {
+ let output = [];
- if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) {
- output = token.close = `)$))${extglobStar}`;
+ if (Array.isArray(input)) {
+ for (let pattern of input) {
+ let result = braces.create(pattern, options);
+ if (Array.isArray(result)) {
+ output.push(...result);
+ } else {
+ output.push(result);
}
+ }
+ } else {
+ output = [].concat(braces.create(input, options));
+ }
- if (token.inner.includes('*') && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) {
- output = token.close = `)${rest})${extglobStar})`;
- }
+ if (options && options.expand === true && options.nodupes === true) {
+ output = [...new Set(output)];
+ }
+ return output;
+};
- if (token.prev.type === 'bos') {
- state.negatedExtglob = true;
- }
- }
+/**
+ * Parse the given `str` with the given `options`.
+ *
+ * ```js
+ * // braces.parse(pattern, [, options]);
+ * const ast = braces.parse('a/{b,c}/d');
+ * console.log(ast);
+ * ```
+ * @param {String} pattern Brace pattern to parse
+ * @param {Object} options
+ * @return {Object} Returns an AST
+ * @api public
+ */
- push({ type: 'paren', extglob: true, value, output });
- decrement('parens');
- };
+braces.parse = (input, options = {}) => parse(input, options);
- /**
- * Fast paths
- */
+/**
+ * Creates a braces string from an AST, or an AST node.
+ *
+ * ```js
+ * const braces = require('braces');
+ * let ast = braces.parse('foo/{a,b}/bar');
+ * console.log(stringify(ast.nodes[2])); //=> '{a,b}'
+ * ```
+ * @param {String} `input` Brace pattern or AST.
+ * @param {Object} `options`
+ * @return {Array} Returns an array of expanded values.
+ * @api public
+ */
- if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) {
- let backslashes = false;
+braces.stringify = (input, options = {}) => {
+ if (typeof input === 'string') {
+ return stringify(braces.parse(input, options), options);
+ }
+ return stringify(input, options);
+};
- let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {
- if (first === '\\') {
- backslashes = true;
- return m;
- }
+/**
+ * Compiles a brace pattern into a regex-compatible, optimized string.
+ * This method is called by the main [braces](#braces) function by default.
+ *
+ * ```js
+ * const braces = require('braces');
+ * console.log(braces.compile('a/{b,c}/d'));
+ * //=> ['a/(b|c)/d']
+ * ```
+ * @param {String} `input` Brace pattern or AST.
+ * @param {Object} `options`
+ * @return {Array} Returns an array of expanded values.
+ * @api public
+ */
- 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);
- }
+braces.compile = (input, options = {}) => {
+ if (typeof input === 'string') {
+ input = braces.parse(input, options);
+ }
+ return compile(input, options);
+};
- if (first === '.') {
- return DOT_LITERAL.repeat(chars.length);
- }
+/**
+ * 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 [.compile](#compile) instead.
+ *
+ * ```js
+ * const 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
+ */
- if (first === '*') {
- if (esc) {
- return esc + first + (rest ? star : '');
- }
- return star;
- }
- return esc ? m : `\\${m}`;
- });
+braces.expand = (input, options = {}) => {
+ if (typeof input === 'string') {
+ input = braces.parse(input, options);
+ }
- if (backslashes === true) {
- if (opts.unescape === true) {
- output = output.replace(/\\/g, '');
- } else {
- output = output.replace(/\\+/g, m => {
- return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : '');
- });
- }
- }
+ let result = expand(input, options);
- if (output === input && opts.contains === true) {
- state.output = input;
- return state;
- }
+ // filter out empty strings if specified
+ if (options.noempty === true) {
+ result = result.filter(Boolean);
+ }
- state.output = utils.wrapOutput(output, state, options);
- return state;
+ // filter out duplicates if specified
+ if (options.nodupes === true) {
+ result = [...new Set(result)];
}
- /**
- * Tokenize input until we reach end-of-string
- */
+ return result;
+};
- while (!eos()) {
- value = advance();
-
- if (value === '\u0000') {
- continue;
- }
-
- /**
- * Escaped characters
- */
-
- if (value === '\\') {
- const next = peek();
-
- if (next === '/' && opts.bash !== true) {
- continue;
- }
-
- if (next === '.' || next === ';') {
- continue;
- }
-
- if (!next) {
- value += '\\';
- push({ type: 'text', value });
- continue;
- }
+/**
+ * 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
+ * const 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
+ */
- // collapse slashes to reduce potential for exploits
- const match = /^\\+/.exec(remaining());
- let slashes = 0;
+braces.create = (input, options = {}) => {
+ if (input === '' || input.length < 3) {
+ return [input];
+ }
- if (match && match[0].length > 2) {
- slashes = match[0].length;
- state.index += slashes;
- if (slashes % 2 !== 0) {
- value += '\\';
- }
- }
+ return options.expand !== true
+ ? braces.compile(input, options)
+ : braces.expand(input, options);
+};
- if (opts.unescape === true) {
- value = advance();
- } else {
- value += advance();
- }
+/**
+ * Expose "braces"
+ */
- if (state.brackets === 0) {
- push({ type: 'text', value });
- continue;
- }
- }
+module.exports = braces;
- /**
- * If we're inside a regex character class, continue
- * until we reach the closing bracket.
- */
- 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;
+/***/ }),
+/* 391 */
+/***/ (function(module, exports, __webpack_require__) {
- 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();
+"use strict";
- if (!bos.output && tokens.indexOf(prev) === 1) {
- bos.output = ONE_CHAR;
- }
- continue;
- }
- }
- }
- }
- if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {
- value = `\\${value}`;
- }
+const utils = __webpack_require__(392);
- if (value === ']' && (prev.value === '[' || prev.value === '[^')) {
- value = `\\${value}`;
- }
+module.exports = (ast, options = {}) => {
+ let stringify = (node, parent = {}) => {
+ let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);
+ let invalidNode = node.invalid === true && options.escapeInvalid === true;
+ let output = '';
- if (opts.posix === true && value === '!' && prev.value === '[') {
- value = '^';
+ if (node.value) {
+ if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {
+ return '\\' + node.value;
}
-
- prev.value += value;
- append({ value });
- continue;
+ return node.value;
}
- /**
- * If we're inside a quoted string, continue
- * until we reach the closing double quote.
- */
-
- if (state.quotes === 1 && value !== '"') {
- value = utils.escapeRegex(value);
- prev.value += value;
- append({ value });
- continue;
+ if (node.value) {
+ return node.value;
}
- /**
- * Double quotes
- */
-
- if (value === '"') {
- state.quotes = state.quotes === 1 ? 0 : 1;
- if (opts.keepQuotes === true) {
- push({ type: 'text', value });
+ if (node.nodes) {
+ for (let child of node.nodes) {
+ output += stringify(child);
}
- continue;
}
+ return output;
+ };
- /**
- * Parentheses
- */
+ return stringify(ast);
+};
- if (value === '(') {
- increment('parens');
- push({ type: 'paren', value });
- continue;
- }
- if (value === ')') {
- if (state.parens === 0 && opts.strictBrackets === true) {
- throw new SyntaxError(syntaxError('opening', '('));
- }
- const extglob = extglobs[extglobs.length - 1];
- if (extglob && state.parens === extglob.parens + 1) {
- extglobClose(extglobs.pop());
- continue;
- }
+/***/ }),
+/* 392 */
+/***/ (function(module, exports, __webpack_require__) {
- push({ type: 'paren', value, output: state.parens ? ')' : '\\)' });
- decrement('parens');
- continue;
- }
+"use strict";
- /**
- * Square brackets
- */
- if (value === '[') {
- if (opts.nobracket === true || !remaining().includes(']')) {
- if (opts.nobracket !== true && opts.strictBrackets === true) {
- throw new SyntaxError(syntaxError('closing', ']'));
- }
+exports.isInteger = num => {
+ if (typeof num === 'number') {
+ return Number.isInteger(num);
+ }
+ if (typeof num === 'string' && num.trim() !== '') {
+ return Number.isInteger(Number(num));
+ }
+ return false;
+};
- value = `\\${value}`;
- } else {
- increment('brackets');
- }
+/**
+ * Find a node of the given type
+ */
- push({ type: 'bracket', value });
- continue;
- }
+exports.find = (node, type) => node.nodes.find(node => node.type === type);
- if (value === ']') {
- if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {
- push({ type: 'text', value, output: `\\${value}` });
- continue;
- }
+/**
+ * Find a node of the given type
+ */
- if (state.brackets === 0) {
- if (opts.strictBrackets === true) {
- throw new SyntaxError(syntaxError('opening', '['));
- }
+exports.exceedsLimit = (min, max, step = 1, limit) => {
+ if (limit === false) return false;
+ if (!exports.isInteger(min) || !exports.isInteger(max)) return false;
+ return ((Number(max) - Number(min)) / Number(step)) >= limit;
+};
- push({ type: 'text', value, output: `\\${value}` });
- continue;
- }
+/**
+ * Escape the given node with '\\' before node.value
+ */
- decrement('brackets');
+exports.escapeNode = (block, n = 0, type) => {
+ let node = block.nodes[n];
+ if (!node) return;
- const prevValue = prev.value.slice(1);
- if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {
- value = `/${value}`;
- }
+ if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {
+ if (node.escaped !== true) {
+ node.value = '\\' + node.value;
+ node.escaped = true;
+ }
+ }
+};
- prev.value += value;
- append({ value });
+/**
+ * Returns true if the given brace node should be enclosed in literal braces
+ */
- // when literal brackets are explicitly disabled
- // assume we should match with a regex character class
- if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {
- continue;
- }
+exports.encloseBrace = node => {
+ if (node.type !== 'brace') return false;
+ if ((node.commas >> 0 + node.ranges >> 0) === 0) {
+ node.invalid = true;
+ return true;
+ }
+ return false;
+};
- const escaped = utils.escapeRegex(prev.value);
- state.output = state.output.slice(0, -prev.value.length);
+/**
+ * Returns true if a brace node is invalid.
+ */
- // 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;
- }
+exports.isInvalidBrace = block => {
+ if (block.type !== 'brace') return false;
+ if (block.invalid === true || block.dollar) return true;
+ if ((block.commas >> 0 + block.ranges >> 0) === 0) {
+ block.invalid = true;
+ return true;
+ }
+ if (block.open !== true || block.close !== true) {
+ block.invalid = true;
+ return true;
+ }
+ return false;
+};
- // when the user specifies nothing, try to match both
- prev.value = `(${capture}${escaped}|${prev.value})`;
- state.output += prev.value;
- continue;
- }
+/**
+ * Returns true if a node is an open or close node
+ */
- /**
- * Braces
- */
+exports.isOpenOrClose = node => {
+ if (node.type === 'open' || node.type === 'close') {
+ return true;
+ }
+ return node.open === true || node.close === true;
+};
- if (value === '{' && opts.nobrace !== true) {
- increment('braces');
+/**
+ * Reduce an array of text nodes.
+ */
- const open = {
- type: 'brace',
- value,
- output: '(',
- outputIndex: state.output.length,
- tokensIndex: state.tokens.length
- };
+exports.reduce = nodes => nodes.reduce((acc, node) => {
+ if (node.type === 'text') acc.push(node.value);
+ if (node.type === 'range') node.type = 'text';
+ return acc;
+}, []);
- braces.push(open);
- push(open);
- continue;
+/**
+ * Flatten an array
+ */
+
+exports.flatten = (...args) => {
+ const result = [];
+ const flat = arr => {
+ for (let i = 0; i < arr.length; i++) {
+ let ele = arr[i];
+ Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele);
}
+ return result;
+ };
+ flat(args);
+ return result;
+};
- if (value === '}') {
- const brace = braces[braces.length - 1];
- if (opts.nobrace === true || !brace) {
- push({ type: 'text', value, output: value });
- continue;
- }
+/***/ }),
+/* 393 */
+/***/ (function(module, exports, __webpack_require__) {
- let output = ')';
+"use strict";
- if (brace.dots === true) {
- const arr = tokens.slice();
- const range = [];
- 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);
- }
- }
+const fill = __webpack_require__(394);
+const utils = __webpack_require__(392);
- output = expandRange(range, opts);
- state.backtrack = true;
- }
+const compile = (ast, options = {}) => {
+ let walk = (node, parent = {}) => {
+ let invalidBlock = utils.isInvalidBrace(parent);
+ let invalidNode = node.invalid === true && options.escapeInvalid === true;
+ let invalid = invalidBlock === true || invalidNode === true;
+ let prefix = options.escapeInvalid === true ? '\\' : '';
+ let output = '';
- 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);
- }
- }
+ if (node.isOpen === true) {
+ return prefix + node.value;
+ }
+ if (node.isClose === true) {
+ return prefix + node.value;
+ }
- push({ type: 'brace', value, output });
- decrement('braces');
- braces.pop();
- continue;
+ if (node.type === 'open') {
+ return invalid ? (prefix + node.value) : '(';
}
- /**
- * Pipes
- */
+ if (node.type === 'close') {
+ return invalid ? (prefix + node.value) : ')';
+ }
- if (value === '|') {
- if (extglobs.length > 0) {
- extglobs[extglobs.length - 1].conditions++;
- }
- push({ type: 'text', value });
- continue;
+ if (node.type === 'comma') {
+ return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|');
}
- /**
- * Commas
- */
+ if (node.value) {
+ return node.value;
+ }
- if (value === ',') {
- let output = value;
+ if (node.nodes && node.ranges > 0) {
+ let args = utils.reduce(node.nodes);
+ let range = fill(...args, { ...options, wrap: false, toRegex: true });
- const brace = braces[braces.length - 1];
- if (brace && stack[stack.length - 1] === 'braces') {
- brace.comma = true;
- output = '|';
+ if (range.length !== 0) {
+ return args.length > 1 && range.length > 1 ? `(${range})` : range;
}
-
- push({ type: 'comma', value, output });
- continue;
}
- /**
- * Slashes
- */
-
- 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;
+ if (node.nodes) {
+ for (let child of node.nodes) {
+ output += walk(child, node);
}
-
- push({ type: 'slash', value, output: SLASH_LITERAL });
- continue;
}
+ return output;
+ };
- /**
- * Dots
- */
+ return walk(ast);
+};
- 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;
- }
+module.exports = compile;
- if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {
- push({ type: 'text', value, output: DOT_LITERAL });
- continue;
- }
- push({ type: 'dot', value, output: DOT_LITERAL });
- continue;
- }
+/***/ }),
+/* 394 */
+/***/ (function(module, exports, __webpack_require__) {
- /**
- * Question marks
- */
+"use strict";
+/*!
+ * fill-range
+ *
+ * Copyright (c) 2014-present, Jon Schlinkert.
+ * Licensed under the MIT License.
+ */
- if (value === '?') {
- const isGroup = prev && prev.value === '(';
- if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
- extglobOpen('qmark', value);
- continue;
- }
- if (prev && prev.type === 'paren') {
- const next = peek();
- let output = value;
- if (next === '<' && !utils.supportsLookbehinds()) {
- throw new Error('Node.js v10 or higher is required for regex lookbehinds');
- }
+const util = __webpack_require__(234);
+const toRegexRange = __webpack_require__(395);
- if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) {
- output = `\\${value}`;
- }
+const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
- push({ type: 'text', value, output });
- continue;
- }
+const transform = toNumber => {
+ return value => toNumber === true ? Number(value) : String(value);
+};
- if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {
- push({ type: 'qmark', value, output: QMARK_NO_DOT });
- continue;
- }
-
- push({ type: 'qmark', value, output: QMARK });
- continue;
- }
-
- /**
- * Exclamation
- */
-
- if (value === '!') {
- if (opts.noextglob !== true && peek() === '(') {
- if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {
- extglobOpen('negate', value);
- continue;
- }
- }
-
- if (opts.nonegate !== true && state.index === 0) {
- negate();
- continue;
- }
- }
-
- /**
- * Plus
- */
+const isValidValue = value => {
+ return typeof value === 'number' || (typeof value === 'string' && value !== '');
+};
- if (value === '+') {
- if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
- extglobOpen('plus', value);
- continue;
- }
+const isNumber = num => Number.isInteger(+num);
- if ((prev && prev.value === '(') || opts.regex === false) {
- push({ type: 'plus', value, output: PLUS_LITERAL });
- continue;
- }
+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 ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {
- push({ type: 'plus', value });
- continue;
- }
+const stringify = (start, end, options) => {
+ if (typeof start === 'string' || typeof end === 'string') {
+ return true;
+ }
+ return options.stringify === true;
+};
- push({ type: 'plus', value: PLUS_LITERAL });
- continue;
- }
+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;
+};
- /**
- * Plain text
- */
+const toMaxLen = (input, maxLength) => {
+ let negative = input[0] === '-' ? '-' : '';
+ if (negative) {
+ input = input.slice(1);
+ maxLength--;
+ }
+ while (input.length < maxLength) input = '0' + input;
+ return negative ? ('-' + input) : input;
+};
- if (value === '@') {
- if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
- push({ type: 'at', extglob: true, value, output: '' });
- continue;
- }
+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);
- push({ type: 'text', value });
- continue;
- }
+ let prefix = options.capture ? '' : '?:';
+ let positives = '';
+ let negatives = '';
+ let result;
- /**
- * Plain text
- */
+ if (parts.positives.length) {
+ positives = parts.positives.join('|');
+ }
- if (value !== '*') {
- if (value === '$' || value === '^') {
- value = `\\${value}`;
- }
+ if (parts.negatives.length) {
+ negatives = `-(${prefix}${parts.negatives.join('|')})`;
+ }
- const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());
- if (match) {
- value += match[0];
- state.index += match[0].length;
- }
+ if (positives && negatives) {
+ result = `${positives}|${negatives}`;
+ } else {
+ result = positives || negatives;
+ }
- push({ type: 'text', value });
- continue;
- }
+ if (options.wrap) {
+ return `(${prefix}${result})`;
+ }
- /**
- * Stars
- */
+ return result;
+};
- 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;
- }
+const toRange = (a, b, isNumbers, options) => {
+ if (isNumbers) {
+ return toRegexRange(a, b, { wrap: false, ...options });
+ }
- let rest = remaining();
- if (opts.noextglob !== true && /^\([^?]/.test(rest)) {
- extglobOpen('star', value);
- continue;
- }
+ let start = String.fromCharCode(a);
+ if (a === b) return start;
- if (prev.type === 'star') {
- if (opts.noglobstar === true) {
- consume(value);
- continue;
- }
+ let stop = String.fromCharCode(b);
+ return `[${start}-${stop}]`;
+};
- 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');
+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);
+};
- if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {
- push({ type: 'star', value, output: '' });
- continue;
- }
+const rangeError = (...args) => {
+ return new RangeError('Invalid range arguments: ' + util.inspect(...args));
+};
- 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;
- }
+const invalidRange = (start, end, options) => {
+ if (options.strictRanges === true) throw rangeError([start, end]);
+ return [];
+};
- // strip consecutive `/**/`
- while (rest.slice(0, 3) === '/**') {
- const after = input[state.index + 4];
- if (after && after !== '/') {
- break;
- }
- rest = rest.slice(3);
- consume('/**', 3);
- }
+const invalidStep = (step, options) => {
+ if (options.strictRanges === true) {
+ throw new TypeError(`Expected step "${step}" to be a number`);
+ }
+ return [];
+};
- 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;
- }
+const fillNumbers = (start, end, step = 1, options = {}) => {
+ let a = Number(start);
+ let b = Number(end);
- 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}`;
+ if (!Number.isInteger(a) || !Number.isInteger(b)) {
+ if (options.strictRanges === true) throw rangeError([start, end]);
+ return [];
+ }
- prev.type = 'globstar';
- prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');
- prev.value += value;
- state.globstar = true;
- state.output += prior.output + prev.output;
- consume(value);
- continue;
- }
+ // fix negative zero
+ if (a === 0) a = 0;
+ if (b === 0) b = 0;
- if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {
- const end = rest[1] !== void 0 ? '|$' : '';
+ let descending = a > b;
+ let startString = String(start);
+ let endString = String(end);
+ let stepString = String(step);
+ step = Math.max(Math.abs(step), 1);
- state.output = state.output.slice(0, -(prior.output + prev.output).length);
- prior.output = `(?:${prior.output}`;
+ 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);
- prev.type = 'globstar';
- prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;
- prev.value += value;
+ if (options.toRegex && step === 1) {
+ return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);
+ }
- state.output += prior.output + prev.output;
- state.globstar = true;
+ let parts = { negatives: [], positives: [] };
+ let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));
+ let range = [];
+ let index = 0;
- consume(value + advance());
+ 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++;
+ }
- push({ type: 'slash', value: '/', output: '' });
- continue;
- }
+ if (options.toRegex === true) {
+ return step > 1
+ ? toSequence(parts, options)
+ : toRegex(range, null, { wrap: false, ...options });
+ }
- 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;
- }
+ return range;
+};
- // remove single star from output
- state.output = state.output.slice(0, -prev.output.length);
+const fillLetters = (start, end, step = 1, options = {}) => {
+ if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {
+ return invalidRange(start, end, options);
+ }
- // reset previous token to globstar
- prev.type = 'globstar';
- prev.output = globstar(opts);
- prev.value += value;
- // reset output with globstar
- state.output += prev.output;
- state.globstar = true;
- consume(value);
- continue;
- }
+ let format = options.transform || (val => String.fromCharCode(val));
+ let a = `${start}`.charCodeAt(0);
+ let b = `${end}`.charCodeAt(0);
- const token = { type: 'star', value, output: star };
+ let descending = a > b;
+ let min = Math.min(a, b);
+ let max = Math.max(a, b);
- if (opts.bash === true) {
- token.output = '.*?';
- if (prev.type === 'bos' || prev.type === 'slash') {
- token.output = nodot + token.output;
- }
- push(token);
- continue;
- }
+ if (options.toRegex && step === 1) {
+ return toRange(min, max, false, options);
+ }
- if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {
- token.output = value;
- push(token);
- continue;
- }
+ let range = [];
+ let index = 0;
- 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;
+ while (descending ? a >= b : a <= b) {
+ range.push(format(a, index));
+ a = descending ? a - step : a + step;
+ index++;
+ }
- } else if (opts.dot === true) {
- state.output += NO_DOTS_SLASH;
- prev.output += NO_DOTS_SLASH;
+ if (options.toRegex === true) {
+ return toRegex(range, null, { wrap: false, options });
+ }
- } else {
- state.output += nodot;
- prev.output += nodot;
- }
+ return range;
+};
- if (peek() !== '*') {
- state.output += ONE_CHAR;
- prev.output += ONE_CHAR;
- }
- }
+const fill = (start, end, step, options = {}) => {
+ if (end == null && isValidValue(start)) {
+ return [start];
+ }
- push(token);
+ if (!isValidValue(start) || !isValidValue(end)) {
+ return invalidRange(start, end, options);
}
- while (state.brackets > 0) {
- if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));
- state.output = utils.escapeLast(state.output, '[');
- decrement('brackets');
+ if (typeof step === 'function') {
+ return fill(start, end, 1, { transform: step });
}
- while (state.parens > 0) {
- if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));
- state.output = utils.escapeLast(state.output, '(');
- decrement('parens');
+ if (isObject(step)) {
+ return fill(start, end, 0, step);
}
- while (state.braces > 0) {
- if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));
- state.output = utils.escapeLast(state.output, '{');
- decrement('braces');
+ let opts = { ...options };
+ if (opts.capture === true) opts.wrap = true;
+ step = step || opts.step || 1;
+
+ if (!isNumber(step)) {
+ if (step != null && !isObject(step)) return invalidStep(step, opts);
+ return fill(start, end, 1, step);
}
- if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {
- push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });
+ if (isNumber(start) && isNumber(end)) {
+ return fillNumbers(start, end, step, opts);
}
- // rebuild the output if we had to backtrack at any point
- if (state.backtrack === true) {
- state.output = '';
+ return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);
+};
- for (const token of state.tokens) {
- state.output += token.output != null ? token.output : token.value;
+module.exports = fill;
- if (token.suffix) {
- state.output += token.suffix;
- }
- }
- }
- return state;
-};
+/***/ }),
+/* 395 */
+/***/ (function(module, exports, __webpack_require__) {
-/**
- * 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.
+"use strict";
+/*!
+ * to-regex-range
+ *
+ * Copyright (c) 2015-present, Jon Schlinkert.
+ * Released under the MIT License.
*/
-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;
+const isNumber = __webpack_require__(396);
- if (opts.capture) {
- star = `(${star})`;
+const toRegexRange = (min, max, options) => {
+ if (isNumber(min) === false) {
+ throw new TypeError('toRegexRange: expected the first argument to be a number');
}
- const globstar = opts => {
- if (opts.noglobstar === true) return star;
- return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
- };
+ if (max === void 0 || min === max) {
+ return String(min);
+ }
- const create = str => {
- switch (str) {
- case '*':
- return `${nodot}${ONE_CHAR}${star}`;
+ if (isNumber(max) === false) {
+ throw new TypeError('toRegexRange: expected the second argument to be a number.');
+ }
- case '.*':
- return `${DOT_LITERAL}${ONE_CHAR}${star}`;
+ let opts = { relaxZeros: true, ...options };
+ if (typeof opts.strictZeros === 'boolean') {
+ opts.relaxZeros = opts.strictZeros === false;
+ }
- case '*.*':
- return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;
+ 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;
- case '*/*':
- return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;
+ if (toRegexRange.cache.hasOwnProperty(cacheKey)) {
+ return toRegexRange.cache[cacheKey].result;
+ }
- case '**':
- return nodot + globstar(opts);
+ let a = Math.min(min, max);
+ let b = Math.max(min, max);
- case '**/*':
- return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;
+ if (Math.abs(a - b) === 1) {
+ let result = min + '|' + max;
+ if (opts.capture) {
+ return `(${result})`;
+ }
+ if (opts.wrap === false) {
+ return result;
+ }
+ return `(?:${result})`;
+ }
- case '**/*.*':
- return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;
+ let isPadded = hasPadding(min) || hasPadding(max);
+ let state = { min, max, a, b };
+ let positives = [];
+ let negatives = [];
- case '**/.*':
- return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;
+ if (isPadded) {
+ state.isPadded = isPadded;
+ state.maxLen = String(state.max).length;
+ }
- default: {
- const match = /^(.*?)\.(\w+)$/.exec(str);
- if (!match) return;
-
- const source = create(match[1]);
- if (!source) return;
+ if (a < 0) {
+ let newMin = b < 0 ? Math.abs(b) : 1;
+ negatives = splitToPatterns(newMin, Math.abs(a), state, opts);
+ a = state.a = 0;
+ }
- return source + DOT_LITERAL + match[2];
- }
- }
- };
+ if (b >= 0) {
+ positives = splitToPatterns(a, b, state, opts);
+ }
- const output = utils.removePrefix(input, state);
- let source = create(output);
+ state.negatives = negatives;
+ state.positives = positives;
+ state.result = collatePatterns(negatives, positives, opts);
- if (source && opts.strictSlashes !== true) {
- source += `${SLASH_LITERAL}?`;
+ if (opts.capture === true) {
+ state.result = `(${state.result})`;
+ } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {
+ state.result = `(?:${state.result})`;
}
- return source;
+ toRegexRange.cache[cacheKey] = state;
+ return state.result;
};
-module.exports = parse;
+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;
-/***/ }),
-/* 285 */
-/***/ (function(module, exports, __webpack_require__) {
+ let stop = countNines(min, nines);
+ let stops = new Set([max]);
-"use strict";
+ while (min <= stop && stop <= max) {
+ stops.add(stop);
+ nines += 1;
+ stop = countNines(min, nines);
+ }
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.merge = void 0;
-const merge2 = __webpack_require__(243);
-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'));
-}
+ stop = countZeros(max + 1, zeros) - 1;
+ while (min < stop && stop <= max) {
+ stops.add(stop);
+ zeros += 1;
+ stop = countZeros(max + 1, zeros) - 1;
+ }
-/***/ }),
-/* 286 */
-/***/ (function(module, exports, __webpack_require__) {
+ stops = [...stops];
+ stops.sort(compare);
+ return stops;
+}
-"use strict";
+/**
+ * Convert a range to a regex pattern
+ * @param {Number} `start`
+ * @param {Number} `stop`
+ * @return {String}
+ */
-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 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;
-/***/ }),
-/* 287 */
-/***/ (function(module, exports, __webpack_require__) {
+ for (let i = 0; i < digits; i++) {
+ let [startDigit, stopDigit] = zipped[i];
-"use strict";
+ if (startDigit === stopDigit) {
+ pattern += startDigit;
-Object.defineProperty(exports, "__esModule", { value: true });
-const stream_1 = __webpack_require__(288);
-const provider_1 = __webpack_require__(315);
-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);
+ } else if (startDigit !== '0' || stopDigit !== '9') {
+ pattern += toCharacterClass(startDigit, stopDigit, options);
+
+ } else {
+ count++;
}
+ }
+
+ if (count) {
+ pattern += options.shorthand === true ? '\\d' : '[0-9]';
+ }
+
+ return { pattern, count: [count], digits };
}
-exports.default = ProviderAsync;
+function splitToPatterns(min, max, tok, options) {
+ let ranges = splitToRanges(min, max);
+ let tokens = [];
+ let start = min;
+ let prev;
-/***/ }),
-/* 288 */
-/***/ (function(module, exports, __webpack_require__) {
+ for (let i = 0; i < ranges.length; i++) {
+ let max = ranges[i];
+ let obj = rangeToPattern(String(start), String(max), options);
+ let zeros = '';
-"use strict";
+ if (!tok.isPadded && prev && prev.pattern === obj.pattern) {
+ if (prev.count.length > 1) {
+ prev.count.pop();
+ }
-Object.defineProperty(exports, "__esModule", { value: true });
-const stream_1 = __webpack_require__(173);
-const fsStat = __webpack_require__(289);
-const fsWalk = __webpack_require__(294);
-const reader_1 = __webpack_require__(314);
-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);
+ prev.count.push(obj.count[0]);
+ prev.string = prev.pattern + toQuantifier(prev.count);
+ start = max + 1;
+ continue;
}
- 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;
+
+ if (tok.isPadded) {
+ zeros = padZeros(max, tok, options);
}
- _getEntry(filepath, pattern, options) {
- return this._getStat(filepath)
- .then((stats) => this._makeEntry(stats, pattern))
- .catch((error) => {
- if (options.errorFilter(error)) {
- return null;
- }
- throw error;
- });
+
+ obj.string = zeros + obj.pattern + toQuantifier(obj.count);
+ tokens.push(obj);
+ start = max + 1;
+ prev = obj;
+ }
+
+ return tokens;
+}
+
+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);
}
- _getStat(filepath) {
- return new Promise((resolve, reject) => {
- this._stat(filepath, this._fsStatSettings, (error, stats) => {
- return error === null ? resolve(stats) : reject(error);
- });
- });
+
+ // or _both_ are positive
+ if (intersection && contains(comparison, 'string', string)) {
+ result.push(prefix + string);
}
+ }
+ return result;
}
-exports.default = ReaderStream;
+/**
+ * Zip strings
+ */
-/***/ }),
-/* 289 */
-/***/ (function(module, exports, __webpack_require__) {
+function zip(a, b) {
+ let arr = [];
+ for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);
+ return arr;
+}
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const async = __webpack_require__(290);
-const sync = __webpack_require__(291);
-const settings_1 = __webpack_require__(292);
-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);
-}
+function compare(a, b) {
+ return a > b ? 1 : b > a ? -1 : 0;
+}
+function contains(arr, key, val) {
+ return arr.some(ele => ele[key] === val);
+}
-/***/ }),
-/* 290 */
-/***/ (function(module, exports, __webpack_require__) {
+function countNines(min, len) {
+ return Number(String(min).slice(0, -len) + '9'.repeat(len));
+}
-"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);
-}
+function countZeros(integer, zeros) {
+ return integer - (integer % Math.pow(10, zeros));
+}
+function toQuantifier(digits) {
+ let [start = 0, stop = ''] = digits;
+ if (stop || start > 1) {
+ return `{${start + (stop ? ',' + stop : '')}}`;
+ }
+ return '';
+}
-/***/ }),
-/* 291 */
-/***/ (function(module, exports, __webpack_require__) {
+function toCharacterClass(a, b, options) {
+ return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;
+}
-"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;
+function hasPadding(str) {
+ return /^-?(0+)\d/.test(str);
+}
+function padZeros(value, tok, options) {
+ if (!tok.isPadded) {
+ return value;
+ }
-/***/ }),
-/* 292 */
-/***/ (function(module, exports, __webpack_require__) {
+ let diff = Math.abs(tok.maxLen - String(value).length);
+ let relax = options.relaxZeros !== false;
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = __webpack_require__(293);
-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;
+ 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
+ */
-/***/ }),
-/* 293 */
-/***/ (function(module, exports, __webpack_require__) {
+toRegexRange.cache = {};
+toRegexRange.clearCache = () => (toRegexRange.cache = {});
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = __webpack_require__(132);
-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;
+/**
+ * Expose `toRegexRange`
+ */
+
+module.exports = toRegexRange;
/***/ }),
-/* 294 */
+/* 396 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const async_1 = __webpack_require__(295);
-const stream_1 = __webpack_require__(310);
-const sync_1 = __webpack_require__(311);
-const settings_1 = __webpack_require__(313);
-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);
-}
+/*!
+ * is-number
+ *
+ * Copyright (c) 2014-present, Jon Schlinkert.
+ * Released under the MIT License.
+ */
-/***/ }),
-/* 295 */
-/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const async_1 = __webpack_require__(296);
-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);
-}
+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;
+};
/***/ }),
-/* 296 */
+/* 397 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const events_1 = __webpack_require__(164);
-const fsScandir = __webpack_require__(297);
-const fastq = __webpack_require__(306);
-const common = __webpack_require__(308);
-const reader_1 = __webpack_require__(309);
-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;
-/***/ }),
-/* 297 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const async = __webpack_require__(298);
-const sync = __webpack_require__(303);
-const settings_1 = __webpack_require__(304);
-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 fill = __webpack_require__(394);
+const stringify = __webpack_require__(391);
+const utils = __webpack_require__(392);
+const append = (queue = '', stash = '', enclose = false) => {
+ let result = [];
-/***/ }),
-/* 298 */
-/***/ (function(module, exports, __webpack_require__) {
+ queue = [].concat(queue);
+ stash = [].concat(stash);
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const fsStat = __webpack_require__(289);
-const rpl = __webpack_require__(299);
-const constants_1 = __webpack_require__(300);
-const utils = __webpack_require__(301);
-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);
-}
+ if (!stash.length) return queue;
+ if (!queue.length) {
+ return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;
+ }
+ for (let item of queue) {
+ if (Array.isArray(item)) {
+ for (let value of item) {
+ result.push(append(value, stash, enclose));
+ }
+ } else {
+ for (let ele of stash) {
+ if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;
+ result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele));
+ }
+ }
+ }
+ return utils.flatten(result);
+};
-/***/ }),
-/* 299 */
-/***/ (function(module, exports) {
+const expand = (ast, options = {}) => {
+ let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit;
-module.exports = runParallel
+ let walk = (node, parent = {}) => {
+ node.queue = [];
-function runParallel (tasks, cb) {
- var results, pending, keys
- var isSync = true
+ let p = parent;
+ let q = parent.queue;
- if (Array.isArray(tasks)) {
- results = []
- pending = tasks.length
- } else {
- keys = Object.keys(tasks)
- results = {}
- pending = keys.length
- }
+ while (p.type !== 'brace' && p.type !== 'root' && p.parent) {
+ p = p.parent;
+ q = p.queue;
+ }
- function done (err) {
- function end () {
- if (cb) cb(err, results)
- cb = null
+ if (node.invalid || node.dollar) {
+ q.push(append(q.pop(), stringify(node, options)));
+ return;
}
- if (isSync) process.nextTick(end)
- else end()
- }
- function each (i, err, result) {
- results[i] = result
- if (--pending === 0 || err) {
- done(err)
+ if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {
+ q.push(append(q.pop(), ['{}']));
+ return;
}
- }
- 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) })
- })
- }
+ if (node.nodes && node.ranges > 0) {
+ let args = utils.reduce(node.nodes);
- isSync = false
-}
+ if (utils.exceedsLimit(...args, options.step, rangeLimit)) {
+ throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');
+ }
+ let range = fill(...args, options);
+ if (range.length === 0) {
+ range = stringify(node, options);
+ }
-/***/ }),
-/* 300 */
-/***/ (function(module, exports, __webpack_require__) {
+ q.push(append(q.pop(), range));
+ node.nodes = [];
+ return;
+ }
-"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;
+ let enclose = utils.encloseBrace(node);
+ let queue = node.queue;
+ let block = node;
+ while (block.type !== 'brace' && block.type !== 'root' && block.parent) {
+ block = block.parent;
+ queue = block.queue;
+ }
-/***/ }),
-/* 301 */
-/***/ (function(module, exports, __webpack_require__) {
+ for (let i = 0; i < node.nodes.length; i++) {
+ let child = node.nodes[i];
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = __webpack_require__(302);
-exports.fs = fs;
+ if (child.type === 'comma' && node.type === 'brace') {
+ if (i === 1) queue.push('');
+ queue.push('');
+ continue;
+ }
+ if (child.type === 'close') {
+ q.push(append(q.pop(), queue, enclose));
+ continue;
+ }
-/***/ }),
-/* 302 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (child.value && child.type !== 'open') {
+ queue.push(append(queue.pop(), child.value));
+ continue;
+ }
-"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;
+ if (child.nodes) {
+ walk(child, node);
+ }
+ }
+ return queue;
+ };
-/***/ }),
-/* 303 */
-/***/ (function(module, exports, __webpack_require__) {
+ return utils.flatten(walk(ast));
+};
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const fsStat = __webpack_require__(289);
-const constants_1 = __webpack_require__(300);
-const utils = __webpack_require__(301);
-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;
+module.exports = expand;
/***/ }),
-/* 304 */
+/* 398 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = __webpack_require__(4);
-const fsStat = __webpack_require__(289);
-const fs = __webpack_require__(305);
-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;
-/***/ }),
-/* 305 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = __webpack_require__(132);
-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;
+const stringify = __webpack_require__(391);
+/**
+ * Constants
+ */
-/***/ }),
-/* 306 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
+const {
+ MAX_LENGTH,
+ CHAR_BACKSLASH, /* \ */
+ CHAR_BACKTICK, /* ` */
+ CHAR_COMMA, /* , */
+ CHAR_DOT, /* . */
+ CHAR_LEFT_PARENTHESES, /* ( */
+ CHAR_RIGHT_PARENTHESES, /* ) */
+ CHAR_LEFT_CURLY_BRACE, /* { */
+ CHAR_RIGHT_CURLY_BRACE, /* } */
+ CHAR_LEFT_SQUARE_BRACKET, /* [ */
+ CHAR_RIGHT_SQUARE_BRACKET, /* ] */
+ CHAR_DOUBLE_QUOTE, /* " */
+ CHAR_SINGLE_QUOTE, /* ' */
+ CHAR_NO_BREAK_SPACE,
+ CHAR_ZERO_WIDTH_NOBREAK_SPACE
+} = __webpack_require__(399);
+/**
+ * parse
+ */
-var reusify = __webpack_require__(307)
+const parse = (input, options = {}) => {
+ if (typeof input !== 'string') {
+ throw new TypeError('Expected a string');
+ }
-function fastqueue (context, worker, concurrency) {
- if (typeof context === 'function') {
- concurrency = worker
- worker = context
- context = null
+ let opts = options || {};
+ let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
+ if (input.length > max) {
+ throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);
}
- var cache = reusify(Task)
- var queueHead = null
- var queueTail = null
- var _running = 0
+ let ast = { type: 'root', input, nodes: [] };
+ let stack = [ast];
+ let block = ast;
+ let prev = ast;
+ let brackets = 0;
+ let length = input.length;
+ let index = 0;
+ let depth = 0;
+ let value;
+ let memo = {};
- 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
- }
+ /**
+ * Helpers
+ */
- return self
+ const advance = () => input[index++];
+ const push = node => {
+ if (node.type === 'text' && prev.type === 'dot') {
+ prev.type = 'text';
+ }
- function running () {
- return _running
- }
+ if (prev && prev.type === 'text' && node.type === 'text') {
+ prev.value += node.value;
+ return;
+ }
- function pause () {
- self.paused = true
- }
+ block.nodes.push(node);
+ node.parent = block;
+ node.prev = prev;
+ prev = node;
+ return node;
+ };
- function length () {
- var current = queueHead
- var counter = 0
+ push({ type: 'bos' });
- while (current) {
- current = current.next
- counter++
+ while (index < length) {
+ block = stack[stack.length - 1];
+ value = advance();
+
+ /**
+ * Invalid chars
+ */
+
+ if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {
+ continue;
}
- return counter
- }
+ /**
+ * Escaped chars
+ */
- function resume () {
- if (!self.paused) return
- self.paused = false
- for (var i = 0; i < self.concurrency; i++) {
- _running++
- release()
+ if (value === CHAR_BACKSLASH) {
+ push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });
+ continue;
}
- }
- function idle () {
- return _running === 0 && self.length() === 0
- }
+ /**
+ * Right square bracket (literal): ']'
+ */
- function push (value, done) {
- var current = cache.get()
+ if (value === CHAR_RIGHT_SQUARE_BRACKET) {
+ push({ type: 'text', value: '\\' + value });
+ continue;
+ }
- current.context = context
- current.release = release
- current.value = value
- current.callback = done || noop
+ /**
+ * Left square bracket: '['
+ */
- if (_running === self.concurrency || self.paused) {
- if (queueTail) {
- queueTail.next = current
- queueTail = current
- } else {
- queueHead = current
- queueTail = current
- self.saturated()
+ if (value === CHAR_LEFT_SQUARE_BRACKET) {
+ brackets++;
+
+ let closed = true;
+ let next;
+
+ while (index < length && (next = advance())) {
+ value += next;
+
+ if (next === CHAR_LEFT_SQUARE_BRACKET) {
+ brackets++;
+ continue;
+ }
+
+ if (next === CHAR_BACKSLASH) {
+ value += advance();
+ continue;
+ }
+
+ if (next === CHAR_RIGHT_SQUARE_BRACKET) {
+ brackets--;
+
+ if (brackets === 0) {
+ break;
+ }
+ }
}
- } else {
- _running++
- worker.call(context, current.value, current.worked)
+
+ push({ type: 'text', value });
+ continue;
}
- }
- function unshift (value, done) {
- var current = cache.get()
+ /**
+ * Parentheses
+ */
- current.context = context
- current.release = release
- current.value = value
- current.callback = done || noop
+ if (value === CHAR_LEFT_PARENTHESES) {
+ block = push({ type: 'paren', nodes: [] });
+ stack.push(block);
+ push({ type: 'text', value });
+ continue;
+ }
- if (_running === self.concurrency || self.paused) {
- if (queueHead) {
- current.next = queueHead
- queueHead = current
- } else {
- queueHead = current
- queueTail = current
- self.saturated()
+ if (value === CHAR_RIGHT_PARENTHESES) {
+ if (block.type !== 'paren') {
+ push({ type: 'text', value });
+ continue;
}
- } else {
- _running++
- worker.call(context, current.value, current.worked)
+ block = stack.pop();
+ push({ type: 'text', value });
+ block = stack[stack.length - 1];
+ continue;
}
- }
- function release (holder) {
- if (holder) {
- cache.release(holder)
- }
- var next = queueHead
- if (next) {
- if (!self.paused) {
- if (queueTail === queueHead) {
- queueTail = null
+ /**
+ * Quotes: '|"|`
+ */
+
+ if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {
+ let open = value;
+ let next;
+
+ if (options.keepQuotes !== true) {
+ value = '';
+ }
+
+ while (index < length && (next = advance())) {
+ if (next === CHAR_BACKSLASH) {
+ value += next + advance();
+ continue;
}
- queueHead = next.next
- next.next = null
- worker.call(context, next.value, next.worked)
- if (queueTail === null) {
- self.empty()
+
+ if (next === open) {
+ if (options.keepQuotes === true) value += next;
+ break;
}
- } else {
- _running--
+
+ value += next;
}
- } else if (--_running === 0) {
- self.drain()
+
+ push({ type: 'text', value });
+ continue;
}
- }
- function kill () {
- queueHead = null
- queueTail = null
- self.drain = noop
- }
+ /**
+ * Left curly brace: '{'
+ */
- function killAndDrain () {
- queueHead = null
- queueTail = null
- self.drain()
- self.drain = noop
- }
-}
+ if (value === CHAR_LEFT_CURLY_BRACE) {
+ depth++;
-function noop () {}
+ let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;
+ let brace = {
+ type: 'brace',
+ open: true,
+ close: false,
+ dollar,
+ depth,
+ commas: 0,
+ ranges: 0,
+ nodes: []
+ };
-function Task () {
- this.value = null
- this.callback = noop
- this.next = null
- this.release = noop
- this.context = null
+ block = push(brace);
+ stack.push(block);
+ push({ type: 'open', value });
+ continue;
+ }
- var self = this
+ /**
+ * Right curly brace: '}'
+ */
- 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 (value === CHAR_RIGHT_CURLY_BRACE) {
+ if (block.type !== 'brace') {
+ push({ type: 'text', value });
+ continue;
+ }
-module.exports = fastqueue
+ let type = 'close';
+ block = stack.pop();
+ block.close = true;
+ push({ type, value });
+ depth--;
-/***/ }),
-/* 307 */
-/***/ (function(module, exports, __webpack_require__) {
+ block = stack[stack.length - 1];
+ continue;
+ }
-"use strict";
+ /**
+ * Comma: ','
+ */
+ if (value === CHAR_COMMA && depth > 0) {
+ if (block.ranges > 0) {
+ block.ranges = 0;
+ let open = block.nodes.shift();
+ block.nodes = [open, { type: 'text', value: stringify(block) }];
+ }
-function reusify (Constructor) {
- var head = new Constructor()
- var tail = head
+ push({ type: 'comma', value });
+ block.commas++;
+ continue;
+ }
- function get () {
- var current = head
+ /**
+ * Dot: '.'
+ */
- if (current.next) {
- head = current.next
- } else {
- head = new Constructor()
- tail = head
+ if (value === CHAR_DOT && depth > 0 && block.commas === 0) {
+ let siblings = block.nodes;
+
+ if (depth === 0 || siblings.length === 0) {
+ push({ type: 'text', value });
+ continue;
+ }
+
+ if (prev.type === 'dot') {
+ block.range = [];
+ prev.value += value;
+ prev.type = 'range';
+
+ if (block.nodes.length !== 3 && block.nodes.length !== 5) {
+ block.invalid = true;
+ block.ranges = 0;
+ prev.type = 'text';
+ continue;
+ }
+
+ block.ranges++;
+ block.args = [];
+ continue;
+ }
+
+ if (prev.type === 'range') {
+ siblings.pop();
+
+ let before = siblings[siblings.length - 1];
+ before.value += prev.value + value;
+ prev = before;
+ block.ranges--;
+ continue;
+ }
+
+ push({ type: 'dot', value });
+ continue;
}
- current.next = null
+ /**
+ * Text
+ */
- return current
+ push({ type: 'text', value });
}
- function release (obj) {
- tail.next = obj
- tail = obj
- }
+ // Mark imbalanced braces and brackets as invalid
+ do {
+ block = stack.pop();
- return {
- get: get,
- release: release
- }
-}
+ if (block.type !== 'root') {
+ block.nodes.forEach(node => {
+ if (!node.nodes) {
+ if (node.type === 'open') node.isOpen = true;
+ if (node.type === 'close') node.isClose = true;
+ if (!node.nodes) node.type = 'text';
+ node.invalid = true;
+ }
+ });
-module.exports = reusify
+ // get the location of the block on parent.nodes (block's siblings)
+ let parent = stack[stack.length - 1];
+ let index = parent.nodes.indexOf(block);
+ // replace the (invalid) block with it's nodes
+ parent.nodes.splice(index, 1, ...block.nodes);
+ }
+ } while (stack.length > 0);
+
+ push({ type: 'eos' });
+ return ast;
+};
+
+module.exports = parse;
/***/ }),
-/* 308 */
+/* 399 */
/***/ (function(module, exports, __webpack_require__) {
"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;
+
+
+module.exports = {
+ MAX_LENGTH: 1024 * 64,
+
+ // Digits
+ CHAR_0: '0', /* 0 */
+ CHAR_9: '9', /* 9 */
+
+ // Alphabet chars.
+ CHAR_UPPERCASE_A: 'A', /* A */
+ CHAR_LOWERCASE_A: 'a', /* a */
+ CHAR_UPPERCASE_Z: 'Z', /* Z */
+ CHAR_LOWERCASE_Z: 'z', /* z */
+
+ CHAR_LEFT_PARENTHESES: '(', /* ( */
+ CHAR_RIGHT_PARENTHESES: ')', /* ) */
+
+ CHAR_ASTERISK: '*', /* * */
+
+ // Non-alphabetic chars.
+ CHAR_AMPERSAND: '&', /* & */
+ CHAR_AT: '@', /* @ */
+ CHAR_BACKSLASH: '\\', /* \ */
+ CHAR_BACKTICK: '`', /* ` */
+ CHAR_CARRIAGE_RETURN: '\r', /* \r */
+ CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */
+ CHAR_COLON: ':', /* : */
+ CHAR_COMMA: ',', /* , */
+ CHAR_DOLLAR: '$', /* . */
+ CHAR_DOT: '.', /* . */
+ CHAR_DOUBLE_QUOTE: '"', /* " */
+ CHAR_EQUAL: '=', /* = */
+ CHAR_EXCLAMATION_MARK: '!', /* ! */
+ CHAR_FORM_FEED: '\f', /* \f */
+ CHAR_FORWARD_SLASH: '/', /* / */
+ CHAR_HASH: '#', /* # */
+ CHAR_HYPHEN_MINUS: '-', /* - */
+ CHAR_LEFT_ANGLE_BRACKET: '<', /* < */
+ CHAR_LEFT_CURLY_BRACE: '{', /* { */
+ CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */
+ CHAR_LINE_FEED: '\n', /* \n */
+ CHAR_NO_BREAK_SPACE: '\u00A0', /* \u00A0 */
+ CHAR_PERCENT: '%', /* % */
+ CHAR_PLUS: '+', /* + */
+ CHAR_QUESTION_MARK: '?', /* ? */
+ CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */
+ CHAR_RIGHT_CURLY_BRACE: '}', /* } */
+ CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */
+ CHAR_SEMICOLON: ';', /* ; */
+ CHAR_SINGLE_QUOTE: '\'', /* ' */
+ CHAR_SPACE: ' ', /* */
+ CHAR_TAB: '\t', /* \t */
+ CHAR_UNDERSCORE: '_', /* _ */
+ CHAR_VERTICAL_LINE: '|', /* | */
+ CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\uFEFF' /* \uFEFF */
+};
/***/ }),
-/* 309 */
+/* 400 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const common = __webpack_require__(308);
-class Reader {
- constructor(_root, _settings) {
- this._root = _root;
- this._settings = _settings;
- this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);
- }
-}
-exports.default = Reader;
+
+
+module.exports = __webpack_require__(401);
/***/ }),
-/* 310 */
+/* 401 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const stream_1 = __webpack_require__(173);
-const async_1 = __webpack_require__(296);
-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;
-
-
-/***/ }),
-/* 311 */
-/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const sync_1 = __webpack_require__(312);
-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;
+const path = __webpack_require__(4);
+const scan = __webpack_require__(402);
+const parse = __webpack_require__(405);
+const utils = __webpack_require__(403);
+const constants = __webpack_require__(404);
+const isObject = val => val && typeof val === 'object' && !Array.isArray(val);
-/***/ }),
-/* 312 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * 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
+ */
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const fsScandir = __webpack_require__(297);
-const common = __webpack_require__(308);
-const reader_1 = __webpack_require__(309);
-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 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;
-/***/ }),
-/* 313 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (glob === '' || (typeof glob !== 'string' && !isState)) {
+ throw new TypeError('Expected pattern to be a non-empty string');
+ }
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = __webpack_require__(4);
-const fsScandir = __webpack_require__(297);
-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;
+ 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;
-/***/ }),
-/* 314 */
-/***/ (function(module, exports, __webpack_require__) {
+ let isIgnored = () => false;
+ if (opts.ignore) {
+ const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };
+ isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);
+ }
-"use strict";
+ 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 };
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = __webpack_require__(4);
-const fsStat = __webpack_require__(289);
-const utils = __webpack_require__(259);
-class Reader {
- constructor(_settings) {
- this._settings = _settings;
- this._fsStatSettings = new fsStat.Settings({
- followSymbolicLink: this._settings.followSymbolicLinks,
- fs: this._settings.fs,
- throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks
- });
+ if (typeof opts.onResult === 'function') {
+ opts.onResult(result);
}
- _getFullEntryPath(filepath) {
- return path.resolve(this._settings.cwd, filepath);
+
+ if (isMatch === false) {
+ result.isMatch = false;
+ return returnObject ? result : false;
}
- _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 (isIgnored(input)) {
+ if (typeof opts.onIgnore === 'function') {
+ opts.onIgnore(result);
+ }
+ result.isMatch = false;
+ return returnObject ? result : false;
}
- _isFatalError(error) {
- return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;
+
+ if (typeof opts.onMatch === 'function') {
+ opts.onMatch(result);
}
-}
-exports.default = Reader;
+ return returnObject ? result : true;
+ };
+ if (returnState) {
+ matcher.state = state;
+ }
-/***/ }),
-/* 315 */
-/***/ (function(module, exports, __webpack_require__) {
+ return matcher;
+};
-"use strict";
+/**
+ * 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
+ */
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = __webpack_require__(4);
-const deep_1 = __webpack_require__(316);
-const entry_1 = __webpack_require__(319);
-const error_1 = __webpack_require__(320);
-const entry_2 = __webpack_require__(321);
-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;
+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: '' };
+ }
-/***/ }),
-/* 316 */
-/***/ (function(module, exports, __webpack_require__) {
+ const opts = options || {};
+ const format = opts.format || (posix ? utils.toPosixSlashes : null);
+ let match = input === glob;
+ let output = (match && format) ? format(input) : input;
-"use strict";
+ if (match === false) {
+ output = format ? format(input) : input;
+ match = output === glob;
+ }
-Object.defineProperty(exports, "__esModule", { value: true });
-const utils = __webpack_require__(259);
-const partial_1 = __webpack_require__(317);
-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);
+ 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);
}
-}
-exports.default = DeepFilter;
+ }
+ return { isMatch: Boolean(match), match, output };
+};
-/***/ }),
-/* 317 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * 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
+ */
-"use strict";
+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));
+};
-Object.defineProperty(exports, "__esModule", { value: true });
-const matcher_1 = __webpack_require__(318);
-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;
+/**
+ * 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);
-/***/ }),
-/* 318 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * 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
+ */
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const utils = __webpack_require__(259);
-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;
+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
+ */
-/***/ }),
-/* 319 */
-/***/ (function(module, exports, __webpack_require__) {
+picomatch.scan = (input, options) => scan(input, options);
-"use strict";
+/**
+ * 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
+ */
-Object.defineProperty(exports, "__esModule", { value: true });
-const utils = __webpack_require__(259);
-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;
+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 ? '' : '$';
-/***/ }),
-/* 320 */
-/***/ (function(module, exports, __webpack_require__) {
+ let source = `${prepend}(?:${state.output})${append}`;
+ if (state && state.negated === true) {
+ source = `^(?!${source}).*$`;
+ }
-"use strict";
+ const regex = picomatch.toRegex(source, options);
+ if (returnState === true) {
+ regex.state = state;
+ }
-Object.defineProperty(exports, "__esModule", { value: true });
-const utils = __webpack_require__(259);
-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;
+ 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
+ */
-/***/ }),
-/* 321 */
-/***/ (function(module, exports, __webpack_require__) {
+picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {
+ if (!input || typeof input !== 'string') {
+ throw new TypeError('Expected a non-empty string');
+ }
-"use strict";
+ let parsed = { negated: false, fastpaths: true };
-Object.defineProperty(exports, "__esModule", { value: true });
-const utils = __webpack_require__(259);
-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;
+ if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {
+ parsed.output = parse.fastpaths(input, options);
+ }
+ if (!parsed.output) {
+ parsed = parse(input, options);
+ }
-/***/ }),
-/* 322 */
-/***/ (function(module, exports, __webpack_require__) {
+ return picomatch.compileRe(parsed, options, returnOutput, returnState);
+};
-"use strict";
+/**
+ * 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
+ */
-Object.defineProperty(exports, "__esModule", { value: true });
-const stream_1 = __webpack_require__(173);
-const stream_2 = __webpack_require__(288);
-const provider_1 = __webpack_require__(315);
-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;
+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}
+ */
-/***/ }),
-/* 323 */
-/***/ (function(module, exports, __webpack_require__) {
+picomatch.constants = constants;
-"use strict";
+/**
+ * Expose "picomatch"
+ */
-Object.defineProperty(exports, "__esModule", { value: true });
-const sync_1 = __webpack_require__(324);
-const provider_1 = __webpack_require__(315);
-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;
+module.exports = picomatch;
/***/ }),
-/* 324 */
+/* 402 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const fsStat = __webpack_require__(289);
-const fsWalk = __webpack_require__(294);
-const reader_1 = __webpack_require__(314);
-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 utils = __webpack_require__(403);
+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__(404);
-/***/ }),
-/* 325 */
-/***/ (function(module, exports, __webpack_require__) {
+const isPathSeparator = code => {
+ return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;
+};
-"use strict";
+const depth = token => {
+ if (token.isPrefix !== true) {
+ token.depth = token.isGlobstar ? Infinity : 1;
+ }
+};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
-const fs = __webpack_require__(132);
-const os = __webpack_require__(122);
/**
- * 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
+ * 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 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;
+const scan = (input, options) => {
+ const opts = options || {};
-/***/ }),
-/* 326 */
-/***/ (function(module, exports, __webpack_require__) {
+ const length = input.length - 1;
+ const scanToEnd = opts.parts === true || opts.scanToEnd === true;
+ const slashes = [];
+ const tokens = [];
+ const parts = [];
-"use strict";
+ 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 path = __webpack_require__(4);
-const pathType = __webpack_require__(327);
+ const eos = () => index >= length;
+ const peek = () => str.charCodeAt(index + 1);
+ const advance = () => {
+ prev = code;
+ return str.charCodeAt(++index);
+ };
-const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0];
+ while (index < length) {
+ code = advance();
+ let next;
-const getPath = (filepath, cwd) => {
- const pth = filepath[0] === '!' ? filepath.slice(1) : filepath;
- return path.isAbsolute(pth) ? pth : path.join(cwd, pth);
-};
+ if (code === CHAR_BACKWARD_SLASH) {
+ backslashes = token.backslashes = true;
+ code = advance();
-const addExtensions = (file, extensions) => {
- if (path.extname(file)) {
- return `**/${file}`;
- }
+ if (code === CHAR_LEFT_CURLY_BRACE) {
+ braceEscaped = true;
+ }
+ continue;
+ }
- return `**/${file}.${getExtensions(extensions)}`;
-};
+ if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {
+ braces++;
-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}\``);
- }
+ while (eos() !== true && (code = advance())) {
+ if (code === CHAR_BACKWARD_SLASH) {
+ backslashes = token.backslashes = true;
+ advance();
+ continue;
+ }
- if (options.extensions && !Array.isArray(options.extensions)) {
- throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof options.extensions}\``);
- }
+ if (code === CHAR_LEFT_CURLY_BRACE) {
+ braces++;
+ continue;
+ }
- if (options.files && options.extensions) {
- return options.files.map(x => path.posix.join(directory, addExtensions(x, options.extensions)));
- }
+ if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {
+ isBrace = token.isBrace = true;
+ isGlob = token.isGlob = true;
+ finished = true;
- if (options.files) {
- return options.files.map(x => path.posix.join(directory, `**/${x}`));
- }
+ if (scanToEnd === true) {
+ continue;
+ }
- if (options.extensions) {
- return [path.posix.join(directory, `**/*.${getExtensions(options.extensions)}`)];
- }
+ break;
+ }
- return [path.posix.join(directory, '**')];
-};
+ if (braceEscaped !== true && code === CHAR_COMMA) {
+ isBrace = token.isBrace = true;
+ isGlob = token.isGlob = true;
+ finished = true;
-module.exports = async (input, options) => {
- options = {
- cwd: process.cwd(),
- ...options
- };
+ if (scanToEnd === true) {
+ continue;
+ }
- if (typeof options.cwd !== 'string') {
- throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``);
- }
+ break;
+ }
- 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;
- }));
+ if (code === CHAR_RIGHT_CURLY_BRACE) {
+ braces--;
- return [].concat.apply([], globs); // eslint-disable-line prefer-spread
-};
+ if (braces === 0) {
+ braceEscaped = false;
+ isBrace = token.isBrace = true;
+ finished = true;
+ break;
+ }
+ }
+ }
-module.exports.sync = (input, options) => {
- options = {
- cwd: process.cwd(),
- ...options
- };
+ if (scanToEnd === true) {
+ continue;
+ }
- if (typeof options.cwd !== 'string') {
- throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``);
- }
+ break;
+ }
- const globs = [].concat(input).map(x => pathType.isDirectorySync(getPath(x, options.cwd)) ? getGlob(x, options) : x);
+ if (code === CHAR_FORWARD_SLASH) {
+ slashes.push(index);
+ tokens.push(token);
+ token = { value: '', depth: 0, isGlob: false };
- return [].concat.apply([], globs); // eslint-disable-line prefer-spread
-};
+ if (finished === true) continue;
+ if (prev === CHAR_DOT && index === (start + 1)) {
+ start += 2;
+ continue;
+ }
+ lastIndex = index + 1;
+ continue;
+ }
-/***/ }),
-/* 327 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (opts.noext !== true) {
+ const isExtglobChar = code === CHAR_PLUS
+ || code === CHAR_AT
+ || code === CHAR_ASTERISK
+ || code === CHAR_QUESTION_MARK
+ || code === CHAR_EXCLAMATION_MARK;
-"use strict";
+ 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;
+ }
-const {promisify} = __webpack_require__(113);
-const fs = __webpack_require__(132);
+ if (scanToEnd === true) {
+ while (eos() !== true && (code = advance())) {
+ if (code === CHAR_BACKWARD_SLASH) {
+ backslashes = token.backslashes = true;
+ code = advance();
+ continue;
+ }
-async function isType(fsStatType, statsMethodName, filePath) {
- if (typeof filePath !== 'string') {
- throw new TypeError(`Expected a string, got ${typeof filePath}`);
- }
+ if (code === CHAR_RIGHT_PARENTHESES) {
+ isGlob = token.isGlob = true;
+ finished = true;
+ break;
+ }
+ }
+ continue;
+ }
+ break;
+ }
+ }
- try {
- const stats = await promisify(fs[fsStatType])(filePath);
- return stats[statsMethodName]();
- } catch (error) {
- if (error.code === 'ENOENT') {
- return false;
- }
+ if (code === CHAR_ASTERISK) {
+ if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;
+ isGlob = token.isGlob = true;
+ finished = true;
- throw error;
- }
-}
+ if (scanToEnd === true) {
+ continue;
+ }
+ break;
+ }
-function isTypeSync(fsStatType, statsMethodName, filePath) {
- if (typeof filePath !== 'string') {
- throw new TypeError(`Expected a string, got ${typeof filePath}`);
- }
+ if (code === CHAR_QUESTION_MARK) {
+ isGlob = token.isGlob = true;
+ finished = true;
- try {
- return fs[fsStatType](filePath)[statsMethodName]();
- } catch (error) {
- if (error.code === 'ENOENT') {
- return false;
- }
+ if (scanToEnd === true) {
+ continue;
+ }
+ break;
+ }
- throw error;
- }
-}
+ if (code === CHAR_LEFT_SQUARE_BRACKET) {
+ while (eos() !== true && (next = advance())) {
+ if (next === CHAR_BACKWARD_SLASH) {
+ backslashes = token.backslashes = true;
+ advance();
+ continue;
+ }
-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');
+ if (next === CHAR_RIGHT_SQUARE_BRACKET) {
+ isBracket = token.isBracket = true;
+ isGlob = token.isGlob = true;
+ finished = true;
+ break;
+ }
+ }
+ if (scanToEnd === true) {
+ continue;
+ }
-/***/ }),
-/* 328 */
-/***/ (function(module, exports, __webpack_require__) {
+ break;
+ }
-"use strict";
+ if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {
+ negated = token.negated = true;
+ start++;
+ continue;
+ }
-const {promisify} = __webpack_require__(113);
-const fs = __webpack_require__(132);
-const path = __webpack_require__(4);
-const fastGlob = __webpack_require__(257);
-const gitIgnore = __webpack_require__(329);
-const slash = __webpack_require__(330);
+ if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {
+ isGlob = token.isGlob = true;
-const DEFAULT_IGNORE = [
- '**/node_modules/**',
- '**/flow-typed/**',
- '**/coverage/**',
- '**/.git'
-];
+ if (scanToEnd === true) {
+ while (eos() !== true && (code = advance())) {
+ if (code === CHAR_LEFT_PARENTHESES) {
+ backslashes = token.backslashes = true;
+ code = advance();
+ continue;
+ }
-const readFileP = promisify(fs.readFile);
+ if (code === CHAR_RIGHT_PARENTHESES) {
+ finished = true;
+ break;
+ }
+ }
+ continue;
+ }
+ break;
+ }
-const mapGitIgnorePatternTo = base => ignore => {
- if (ignore.startsWith('!')) {
- return '!' + path.posix.join(base, ignore.slice(1));
- }
+ if (isGlob === true) {
+ finished = true;
- return path.posix.join(base, ignore);
-};
+ if (scanToEnd === true) {
+ continue;
+ }
-const parseGitIgnore = (content, options) => {
- const base = slash(path.relative(options.cwd, path.dirname(options.fileName)));
+ break;
+ }
+ }
- return content
- .split(/\r?\n/)
- .filter(Boolean)
- .filter(line => !line.startsWith('#'))
- .map(mapGitIgnorePatternTo(base));
-};
+ if (opts.noext === true) {
+ isExtglob = false;
+ isGlob = false;
+ }
-const reduceIgnore = files => {
- return files.reduce((ignores, file) => {
- ignores.add(parseGitIgnore(file.content, {
- cwd: file.cwd,
- fileName: file.filePath
- }));
- return ignores;
- }, gitIgnore());
-};
+ let base = str;
+ let prefix = '';
+ let glob = '';
-const ensureAbsolutePathForCwd = (cwd, p) => {
- if (path.isAbsolute(p)) {
- if (p.startsWith(cwd)) {
- return p;
- }
+ if (start > 0) {
+ prefix = str.slice(0, start);
+ str = str.slice(start);
+ lastIndex -= start;
+ }
- throw new Error(`Path ${p} is not in cwd ${cwd}`);
- }
+ 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;
+ }
- return path.join(cwd, p);
-};
+ if (base && base !== '' && base !== '/' && base !== str) {
+ if (isPathSeparator(base.charCodeAt(base.length - 1))) {
+ base = base.slice(0, -1);
+ }
+ }
-const getIsIgnoredPredecate = (ignores, cwd) => {
- return p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p))));
-};
+ if (opts.unescape === true) {
+ if (glob) glob = utils.removeBackslashes(glob);
-const getFile = async (file, cwd) => {
- const filePath = path.join(cwd, file);
- const content = await readFileP(filePath, 'utf8');
+ if (base && backslashes === true) {
+ base = utils.removeBackslashes(base);
+ }
+ }
- return {
- cwd,
- filePath,
- content
- };
-};
+ const state = {
+ prefix,
+ input,
+ start,
+ base,
+ glob,
+ isBrace,
+ isBracket,
+ isGlob,
+ isExtglob,
+ isGlobstar,
+ negated,
+ negatedExtglob
+ };
-const getFileSync = (file, cwd) => {
- const filePath = path.join(cwd, file);
- const content = fs.readFileSync(filePath, 'utf8');
+ if (opts.tokens === true) {
+ state.maxDepth = 0;
+ if (!isPathSeparator(code)) {
+ tokens.push(token);
+ }
+ state.tokens = tokens;
+ }
- return {
- cwd,
- filePath,
- content
- };
-};
+ if (opts.parts === true || opts.tokens === true) {
+ let prevIndex;
-const normalizeOptions = ({
- ignore = [],
- cwd = slash(process.cwd())
-} = {}) => {
- return {ignore, cwd};
-};
+ 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;
+ }
-module.exports = async options => {
- options = normalizeOptions(options);
+ if (prevIndex && prevIndex + 1 < input.length) {
+ const value = input.slice(prevIndex + 1);
+ parts.push(value);
- const paths = await fastGlob('**/.gitignore', {
- ignore: DEFAULT_IGNORE.concat(options.ignore),
- cwd: options.cwd
- });
+ if (opts.tokens) {
+ tokens[tokens.length - 1].value = value;
+ depth(tokens[tokens.length - 1]);
+ state.maxDepth += tokens[tokens.length - 1].depth;
+ }
+ }
- const files = await Promise.all(paths.map(file => getFile(file, options.cwd)));
- const ignores = reduceIgnore(files);
+ state.slashes = slashes;
+ state.parts = parts;
+ }
- return getIsIgnoredPredecate(ignores, options.cwd);
+ return state;
};
-module.exports.sync = options => {
- options = normalizeOptions(options);
+module.exports = scan;
- 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);
+/***/ }),
+/* 403 */
+/***/ (function(module, exports, __webpack_require__) {
- return getIsIgnoredPredecate(ignores, options.cwd);
-};
+"use strict";
-/***/ }),
-/* 329 */
-/***/ (function(module, exports) {
+const path = __webpack_require__(4);
+const win32 = process.platform === 'win32';
+const {
+ REGEX_BACKSLASH,
+ REGEX_REMOVE_BACKSLASH,
+ REGEX_SPECIAL_CHARS,
+ REGEX_SPECIAL_CHARS_GLOBAL
+} = __webpack_require__(404);
-// A simple implementation of make-array
-function makeArray (subject) {
- return Array.isArray(subject)
- ? subject
- : [subject]
-}
+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, '/');
-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 = /^\.*\/|^\.+$/
+exports.removeBackslashes = str => {
+ return str.replace(REGEX_REMOVE_BACKSLASH, match => {
+ return match === '\\' ? '' : match;
+ });
+};
-const SLASH = '/'
-const KEY_IGNORE = typeof Symbol !== 'undefined'
- ? Symbol.for('node-ignore')
- /* istanbul ignore next */
- : 'node-ignore'
+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;
+};
-const define = (object, key, value) =>
- Object.defineProperty(object, key, {value})
+exports.isWindows = options => {
+ if (options && typeof options.windows === 'boolean') {
+ return options.windows;
+ }
+ return win32 === true || path.sep === '\\';
+};
-const REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g
+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)}`;
+};
-// 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
-)
+exports.removePrefix = (input, state = {}) => {
+ let output = input;
+ if (output.startsWith('./')) {
+ output = output.slice(2);
+ state.prefix = './';
+ }
+ return output;
+};
-// See fixtures #59
-const cleanRangeBackSlash = slashes => {
- const {length} = slashes
- return slashes.slice(0, length - length % 2)
-}
+exports.wrapOutput = (input, state = {}, options = {}) => {
+ const prepend = options.contains ? '' : '^';
+ const append = options.contains ? '' : '$';
-// > 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`
+ let output = `${prepend}(?:${input})${append}`;
+ if (state.negated === true) {
+ output = `(?:^(?!${output}).*$)`;
+ }
+ return output;
+};
-// '`foo/`' should not continue with the '`..`'
-const REPLACERS = [
- // > Trailing spaces are ignored unless they are quoted with backslash ("\")
- [
- // (a\ ) -> (a )
- // (a ) -> (a)
- // (a \ ) -> (a )
- /\\?\s+$/,
- match => match.indexOf('\\') === 0
- ? SPACE
- : EMPTY
- ],
+/***/ }),
+/* 404 */
+/***/ (function(module, exports, __webpack_require__) {
- // replace (\ ) with ' '
- [
- /\\\s/g,
- () => SPACE
- ],
+"use strict";
- // Escape metacharacters
- // which is written down by users but means special for regular expressions.
- // > 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}`
- ],
+const path = __webpack_require__(4);
+const WIN_SLASH = '\\\\/';
+const WIN_NO_SLASH = `[^${WIN_SLASH}]`;
- [
- // > a question mark (?) matches a single character
- /(?!\\)\?/g,
- () => '[^/]'
- ],
+/**
+ * Posix glob regex
+ */
- // leading slash
- [
+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}*?`;
- // > 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
- /^\//,
- () => '^'
- ],
+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
+};
- // replace special metacharacter slash after the leading slash
- [
- /\//g,
- () => '\\/'
- ],
+/**
+ * Windows glob regex
+ */
- [
- // > 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 '\\*'
- /^\^*\\\*\\\*\\\//,
+const WINDOWS_CHARS = {
+ ...POSIX_CHARS,
- // '**/foo' <-> 'foo'
- () => '^(?:.*\\/)?'
- ],
+ 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}]|$)`
+};
- // 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
+/**
+ * POSIX Bracket Regex
+ */
- // 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.
- ? '(?:^|\\/)'
+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'
+};
- // > Otherwise, Git treats the pattern as a shell glob suitable for
- // > consumption by fnmatch(3)
- : '^'
- }
- ],
+module.exports = {
+ MAX_LENGTH: 1024 * 64,
+ POSIX_REGEX_SOURCE,
- // two globstars
- [
- // Use lookahead assertions so that we could match more than one `'/**'`
- /\\\/\\\*\\\*(?=\\\/|$)/g,
+ // 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,
- // Zero, one or several directories
- // should not use '*', or it will be replaced by the next replacer
+ // Replace globs with equivalent patterns to reduce parsing time.
+ REPLACEMENTS: {
+ '***': '*',
+ '**/**': '**',
+ '**/**/**': '**'
+ },
- // Check if it is not the last `'/**'`
- (_, index, str) => index + 6 < str.length
+ // Digits
+ CHAR_0: 48, /* 0 */
+ CHAR_9: 57, /* 9 */
- // 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.
- // '/**/'
- ? '(?:\\/[^\\/]+)*'
+ // Alphabet chars.
+ CHAR_UPPERCASE_A: 65, /* A */
+ CHAR_LOWERCASE_A: 97, /* a */
+ CHAR_UPPERCASE_Z: 90, /* Z */
+ CHAR_LOWERCASE_Z: 122, /* z */
- // case: /**
- // > A trailing `"/**"` matches everything inside.
+ CHAR_LEFT_PARENTHESES: 40, /* ( */
+ CHAR_RIGHT_PARENTHESES: 41, /* ) */
- // #21: everything inside but it should not include the current folder
- : '\\/.+'
- ],
+ CHAR_ASTERISK: 42, /* * */
- // intermediate wildcards
- [
- // Never replace escaped '*'
- // ignore rule '\*' will match the path '*'
+ // 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 */
- // 'abc.*/' -> go
- // 'abc.*' -> skip this rule
- /(^|[^\\]+)\\\*(?=.+)/g,
+ SEP: path.sep,
- // '*.js' matches '.js'
- // '*.js' doesn't match 'abc'
- (_, p1) => `${p1}[^\\/]*`
- ],
+ /**
+ * Create EXTGLOB_CHARS
+ */
- [
- // unescape, revert step 3 except for back slash
- // For example, if a user escape a '\\*',
- // after step 3, the result will be '\\\\\\*'
- /\\\\\\(?=[$.|*+(){^])/g,
- () => ESCAPE
- ],
+ 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: ')' }
+ };
+ },
- [
- // '\\\\' -> '\\'
- /\\\\/g,
- () => ESCAPE
- ],
+ /**
+ * Create GLOB_CHARS
+ */
- [
- // > The range notation, e.g. [a-zA-Z],
- // > can be used to match one of the characters in a range.
+ globChars(win32) {
+ return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;
+ }
+};
- // `\` 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\\\\]'
- : '[]'
- : '[]'
- ],
- // ending
- [
- // 'js' will not match 'js.'
- // 'ab' will not match 'abc'
- /(?:[^*])$/,
+/***/ }),
+/* 405 */
+/***/ (function(module, exports, __webpack_require__) {
- // 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
+"use strict";
- // > 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.
- // '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}(?=$|\\/$)`
- ],
+const constants = __webpack_require__(404);
+const utils = __webpack_require__(403);
- // trailing wildcard
- [
- /(\^|\\\/)?\\\*$/,
- (_, p1) => {
- const prefix = p1
- // '\^':
- // '/*' does not match EMPTY
- // '/*' does not match everything
+/**
+ * Constants
+ */
- // '\\\/':
- // 'abc/*' does not match 'abc/'
- ? `${p1}[^/]+`
+const {
+ MAX_LENGTH,
+ POSIX_REGEX_SOURCE,
+ REGEX_NON_SPECIAL_CHARS,
+ REGEX_SPECIAL_CHARS_BACKREF,
+ REPLACEMENTS
+} = constants;
- // 'a*' matches 'a'
- // 'a*' matches 'aa'
- : '[^/]*'
+/**
+ * Helpers
+ */
- return `${prefix}(?=$|\\/$)`
- }
- ],
-]
+const expandRange = (args, options) => {
+ if (typeof options.expandRange === 'function') {
+ return options.expandRange(...args, options);
+ }
-// A simple cache, because an ignore rule only has only one certain meaning
-const regexCache = Object.create(null)
+ args.sort();
+ const value = `[${args.join('-')}]`;
-// @param {pattern}
-const makeRegex = (pattern, negative, ignorecase) => {
- const r = regexCache[pattern]
- if (r) {
- return r
+ try {
+ /* eslint-disable-next-line no-new */
+ new RegExp(value);
+ } catch (ex) {
+ return args.map(v => utils.escapeRegex(v)).join('..');
}
- // const replacers = negative
- // ? NEGATIVE_REPLACERS
- // : POSITIVE_REPLACERS
+ return value;
+};
- const source = REPLACERS.reduce(
- (prev, current) => prev.replace(current[0], current[1].bind(pattern)),
- pattern
- )
+/**
+ * Create the message for a syntax error
+ */
- return regexCache[pattern] = ignorecase
- ? new RegExp(source, 'i')
- : new RegExp(source)
-}
+const syntaxError = (type, char) => {
+ return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`;
+};
-const isString = subject => typeof subject === 'string'
+/**
+ * Parse the given input string.
+ * @param {String} input
+ * @param {Object} options
+ * @return {Object}
+ */
-// > 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)
+const parse = (input, options) => {
+ if (typeof input !== 'string') {
+ throw new TypeError('Expected a string');
+ }
- // > A line starting with # serves as a comment.
- && pattern.indexOf('#') !== 0
+ input = REPLACEMENTS[input] || input;
-const splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF)
+ const opts = { ...options };
+ const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
-class IgnoreRule {
- constructor (
- origin,
- pattern,
- negative,
- regex
- ) {
- this.origin = origin
- this.pattern = pattern
- this.negative = negative
- this.regex = regex
+ let len = input.length;
+ if (len > max) {
+ throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
}
-}
-
-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)
- }
+ const bos = { type: 'bos', value: '', output: opts.prepend || '' };
+ const tokens = [bos];
- 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, '#')
+ const capture = opts.capture ? '' : '?:';
+ const win32 = utils.isWindows(options);
- const regex = makeRegex(pattern, negative, ignorecase)
+ // create constants based on platform, for windows or posix
+ const PLATFORM_CHARS = constants.globChars(win32);
+ const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);
- return new IgnoreRule(
- origin,
- pattern,
- negative,
- regex
- )
-}
+ 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;
-const throwError = (message, Ctor) => {
- throw new Ctor(message)
-}
+ const globstar = opts => {
+ return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
+ };
-const checkPath = (path, originalPath, doThrow) => {
- if (!isString(path)) {
- return doThrow(
- `path must be a string, but got \`${originalPath}\``,
- TypeError
- )
- }
+ const nodot = opts.dot ? '' : NO_DOT;
+ const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;
+ let star = opts.bash === true ? globstar(opts) : STAR;
- // We don't know if we should ignore EMPTY, so throw
- if (!path) {
- return doThrow(`path must not be empty`, TypeError)
+ if (opts.capture) {
+ star = `(${star})`;
}
- // 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
- )
+ // minimatch options support
+ if (typeof opts.noext === 'boolean') {
+ opts.noextglob = opts.noext;
}
- return true
-}
-
-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()
- }
-
- _initCache () {
- this._ignoreCache = Object.create(null)
- this._testCache = Object.create(null)
- }
+ 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
+ };
- _addPattern (pattern) {
- // #32
- if (pattern && pattern[KEY_IGNORE]) {
- this._rules = this._rules.concat(pattern._rules)
- this._added = true
- return
- }
+ input = utils.removePrefix(input, state);
+ len = input.length;
- if (checkPattern(pattern)) {
- const rule = createRule(pattern, this._ignorecase)
- this._added = true
- this._rules.push(rule)
- }
- }
+ const extglobs = [];
+ const braces = [];
+ const stack = [];
+ let prev = bos;
+ let value;
- // @param {Array | string | Ignore} pattern
- add (pattern) {
- this._added = false
+ /**
+ * Tokenizing helpers
+ */
- makeArray(
- isString(pattern)
- ? splitPattern(pattern)
- : pattern
- ).forEach(this._addPattern, this)
+ 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;
+ };
- // Some rules have just added to the ignore,
- // making the behavior changed.
- if (this._added) {
- this._initCache()
- }
+ const append = token => {
+ state.output += token.output != null ? token.output : token.value;
+ consume(token.value);
+ };
- return this
- }
+ const negate = () => {
+ let count = 1;
- // legacy
- addPattern (pattern) {
- return this.add(pattern)
- }
+ while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {
+ advance();
+ state.start++;
+ count++;
+ }
- // | ignored : unignored
- // negative | 0:0 | 0:1 | 1:0 | 1:1
- // -------- | ------- | ------- | ------- | --------
- // 0 | TEST | TEST | SKIP | X
- // 1 | TESTIF | SKIP | TEST | X
+ if (count % 2 === 0) {
+ return false;
+ }
- // - SKIP: always skip
- // - TEST: always test
- // - TESTIF: only test if checkUnignored
- // - X: that never happen
+ state.negated = true;
+ state.start++;
+ return true;
+ };
- // @param {boolean} whether should check if the path is unignored,
- // setting `checkUnignored` to `false` could reduce additional
- // path matching.
+ const increment = type => {
+ state[type]++;
+ stack.push(type);
+ };
- // @returns {TestResult} true if a file is ignored
- _testOne (path, checkUnignored) {
- let ignored = false
- let unignored = false
+ const decrement = type => {
+ state[type]--;
+ stack.pop();
+ };
- this._rules.forEach(rule => {
- const {negative} = rule
- if (
- unignored === negative && ignored !== unignored
- || negative && !ignored && !unignored && !checkUnignored
- ) {
- return
- }
+ /**
+ * 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.
+ */
- const matched = rule.regex.test(path)
+ 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 (matched) {
- ignored = !negative
- unignored = negative
+ 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;
}
- })
-
- return {
- ignored,
- unignored
}
- }
-
- // @returns {TestResult}
- _test (originalPath, cache, checkUnignored, slices) {
- const path = originalPath
- // Supports nullable path
- && checkPath.convert(originalPath)
-
- checkPath(path, originalPath, throwError)
-
- return this._t(path, cache, checkUnignored, slices)
- }
- _t (path, cache, checkUnignored, slices) {
- if (path in cache) {
- return cache[path]
+ if (extglobs.length && tok.type !== 'paren') {
+ extglobs[extglobs.length - 1].inner += tok.value;
}
- if (!slices) {
- // path/to/a.js
- // ['path', 'to', 'a.js']
- slices = path.split(SLASH)
+ 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;
}
- slices.pop()
-
- // If the path has no parent directory, just test it
- if (!slices.length) {
- return cache[path] = this._testOne(path, checkUnignored)
- }
+ tok.prev = prev;
+ tokens.push(tok);
+ prev = tok;
+ };
- const parent = this._t(
- slices.join(SLASH) + SLASH,
- cache,
- checkUnignored,
- slices
- )
+ const extglobOpen = (type, value) => {
+ const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };
- // 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)
- }
+ token.prev = prev;
+ token.parens = state.parens;
+ token.output = state.output;
+ const output = (opts.capture ? '(' : '') + token.open;
- ignores (path) {
- return this._test(path, this._ignoreCache, false).ignored
- }
+ increment('parens');
+ push({ type, value, output: state.output ? '' : ONE_CHAR });
+ push({ type: 'paren', extglob: true, value: advance(), output });
+ extglobs.push(token);
+ };
- createFilter () {
- return path => !this.ignores(path)
- }
+ const extglobClose = token => {
+ let output = token.close + (opts.capture ? ')' : '');
+ let rest;
- filter (paths) {
- return makeArray(paths).filter(this.createFilter())
- }
+ if (token.type === 'negate') {
+ let extglobStar = star;
- // @returns {TestResult}
- test (path) {
- return this._test(path, this._testCache, true)
- }
-}
+ if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {
+ extglobStar = globstar(opts);
+ }
-const factory = options => new Ignore(options)
+ if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) {
+ output = token.close = `)$))${extglobStar}`;
+ }
-const returnFalse = () => false
+ if (token.inner.includes('*') && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) {
+ output = token.close = `)${rest})${extglobStar})`;
+ }
-const isPathValid = path =>
- checkPath(path && checkPath.convert(path), path, returnFalse)
+ if (token.prev.type === 'bos') {
+ state.negatedExtglob = true;
+ }
+ }
-factory.isPathValid = isPathValid
+ push({ type: 'paren', extglob: true, value, output });
+ decrement('parens');
+ };
-// Fixes typescript
-factory.default = factory
+ /**
+ * Fast paths
+ */
-module.exports = factory
+ if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) {
+ let backslashes = false;
-// 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, '/')
+ let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {
+ if (first === '\\') {
+ backslashes = true;
+ return m;
+ }
- checkPath.convert = makePosix
+ 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);
+ }
- // '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)
-}
+ if (first === '.') {
+ return DOT_LITERAL.repeat(chars.length);
+ }
+ if (first === '*') {
+ if (esc) {
+ return esc + first + (rest ? star : '');
+ }
+ return star;
+ }
+ return esc ? m : `\\${m}`;
+ });
-/***/ }),
-/* 330 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (backslashes === true) {
+ if (opts.unescape === true) {
+ output = output.replace(/\\/g, '');
+ } else {
+ output = output.replace(/\\+/g, m => {
+ return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : '');
+ });
+ }
+ }
-"use strict";
+ if (output === input && opts.contains === true) {
+ state.output = input;
+ return state;
+ }
-module.exports = path => {
- const isExtendedLengthPath = /^\\\\\?\\/.test(path);
- const hasNonAscii = /[^\u0000-\u0080]+/.test(path); // eslint-disable-line no-control-regex
+ state.output = utils.wrapOutput(output, state, options);
+ return state;
+ }
- if (isExtendedLengthPath || hasNonAscii) {
- return path;
- }
+ /**
+ * Tokenize input until we reach end-of-string
+ */
- return path.replace(/\\/g, '/');
-};
+ while (!eos()) {
+ value = advance();
+ if (value === '\u0000') {
+ continue;
+ }
-/***/ }),
-/* 331 */
-/***/ (function(module, exports, __webpack_require__) {
+ /**
+ * Escaped characters
+ */
-"use strict";
+ if (value === '\\') {
+ const next = peek();
-const {Transform} = __webpack_require__(173);
+ if (next === '/' && opts.bash !== true) {
+ continue;
+ }
-class ObjectTransform extends Transform {
- constructor() {
- super({
- objectMode: true
- });
- }
-}
+ if (next === '.' || next === ';') {
+ continue;
+ }
-class FilterStream extends ObjectTransform {
- constructor(filter) {
- super();
- this._filter = filter;
- }
+ if (!next) {
+ value += '\\';
+ push({ type: 'text', value });
+ continue;
+ }
- _transform(data, encoding, callback) {
- if (this._filter(data)) {
- this.push(data);
- }
+ // collapse slashes to reduce potential for exploits
+ const match = /^\\+/.exec(remaining());
+ let slashes = 0;
- callback();
- }
-}
+ if (match && match[0].length > 2) {
+ slashes = match[0].length;
+ state.index += slashes;
+ if (slashes % 2 !== 0) {
+ value += '\\';
+ }
+ }
-class UniqueStream extends ObjectTransform {
- constructor() {
- super();
- this._pushed = new Set();
- }
+ if (opts.unescape === true) {
+ value = advance();
+ } else {
+ value += advance();
+ }
- _transform(data, encoding, callback) {
- if (!this._pushed.has(data)) {
- this.push(data);
- this._pushed.add(data);
- }
+ if (state.brackets === 0) {
+ push({ type: 'text', value });
+ continue;
+ }
+ }
- callback();
- }
-}
+ /**
+ * If we're inside a regex character class, continue
+ * until we reach the closing bracket.
+ */
-module.exports = {
- FilterStream,
- UniqueStream
-};
+ 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;
+ 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();
-/***/ }),
-/* 332 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (!bos.output && tokens.indexOf(prev) === 1) {
+ bos.output = ONE_CHAR;
+ }
+ continue;
+ }
+ }
+ }
+ }
-"use strict";
+ if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {
+ value = `\\${value}`;
+ }
-const path = __webpack_require__(4);
+ if (value === ']' && (prev.value === '[' || prev.value === '[^')) {
+ value = `\\${value}`;
+ }
-module.exports = path_ => {
- let cwd = process.cwd();
+ if (opts.posix === true && value === '!' && prev.value === '[') {
+ value = '^';
+ }
- path_ = path.resolve(path_);
+ prev.value += value;
+ append({ value });
+ continue;
+ }
- if (process.platform === 'win32') {
- cwd = cwd.toLowerCase();
- path_ = path_.toLowerCase();
- }
+ /**
+ * If we're inside a quoted string, continue
+ * until we reach the closing double quote.
+ */
- return path_ === cwd;
-};
+ if (state.quotes === 1 && value !== '"') {
+ value = utils.escapeRegex(value);
+ prev.value += value;
+ append({ value });
+ continue;
+ }
+ /**
+ * Double quotes
+ */
-/***/ }),
-/* 333 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (value === '"') {
+ state.quotes = state.quotes === 1 ? 0 : 1;
+ if (opts.keepQuotes === true) {
+ push({ type: 'text', value });
+ }
+ continue;
+ }
-"use strict";
+ /**
+ * Parentheses
+ */
-const path = __webpack_require__(4);
+ if (value === '(') {
+ increment('parens');
+ push({ type: 'paren', value });
+ continue;
+ }
-module.exports = (childPath, parentPath) => {
- childPath = path.resolve(childPath);
- parentPath = path.resolve(parentPath);
+ if (value === ')') {
+ if (state.parens === 0 && opts.strictBrackets === true) {
+ throw new SyntaxError(syntaxError('opening', '('));
+ }
- if (process.platform === 'win32') {
- childPath = childPath.toLowerCase();
- parentPath = parentPath.toLowerCase();
- }
+ const extglob = extglobs[extglobs.length - 1];
+ if (extglob && state.parens === extglob.parens + 1) {
+ extglobClose(extglobs.pop());
+ continue;
+ }
- if (childPath === parentPath) {
- return false;
- }
+ push({ type: 'paren', value, output: state.parens ? ')' : '\\)' });
+ decrement('parens');
+ continue;
+ }
- childPath += path.sep;
- parentPath += path.sep;
+ /**
+ * Square brackets
+ */
- return childPath.startsWith(parentPath);
-};
+ if (value === '[') {
+ if (opts.nobracket === true || !remaining().includes(']')) {
+ if (opts.nobracket !== true && opts.strictBrackets === true) {
+ throw new SyntaxError(syntaxError('closing', ']'));
+ }
+ value = `\\${value}`;
+ } else {
+ increment('brackets');
+ }
-/***/ }),
-/* 334 */
-/***/ (function(module, exports, __webpack_require__) {
+ push({ type: 'bracket', value });
+ continue;
+ }
-const assert = __webpack_require__(162)
-const path = __webpack_require__(4)
-const fs = __webpack_require__(132)
-let glob = undefined
-try {
- glob = __webpack_require__(244)
-} catch (_err) {
- // treat glob as optional.
-}
+ if (value === ']') {
+ if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {
+ push({ type: 'text', value, output: `\\${value}` });
+ continue;
+ }
-const defaultGlobOpts = {
- nosort: true,
- silent: true
-}
+ if (state.brackets === 0) {
+ if (opts.strictBrackets === true) {
+ throw new SyntaxError(syntaxError('opening', '['));
+ }
-// for EMFILE handling
-let timeout = 0
+ push({ type: 'text', value, output: `\\${value}` });
+ continue;
+ }
-const isWindows = (process.platform === "win32")
+ decrement('brackets');
-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]
- })
+ const prevValue = prev.value.slice(1);
+ if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {
+ value = `/${value}`;
+ }
- 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
-}
+ prev.value += value;
+ append({ value });
-const rimraf = (p, options, cb) => {
- if (typeof options === 'function') {
- cb = options
- options = {}
- }
+ // when literal brackets are explicitly disabled
+ // assume we should match with a regex character class
+ if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {
+ continue;
+ }
- 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')
+ const escaped = utils.escapeRegex(prev.value);
+ state.output = state.output.slice(0, -prev.value.length);
- defaults(options)
+ // 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;
+ }
- let busyTries = 0
- let errState = null
- let n = 0
+ // when the user specifies nothing, try to match both
+ prev.value = `(${capture}${escaped}|${prev.value})`;
+ state.output += prev.value;
+ continue;
+ }
- const next = (er) => {
- errState = errState || er
- if (--n === 0)
- cb(errState)
- }
+ /**
+ * Braces
+ */
- const afterGlob = (er, results) => {
- if (er)
- return cb(er)
+ if (value === '{' && opts.nobrace !== true) {
+ increment('braces');
- n = results.length
- if (n === 0)
- return cb()
+ const open = {
+ type: 'brace',
+ value,
+ output: '(',
+ outputIndex: state.output.length,
+ tokensIndex: state.tokens.length
+ };
- 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)
- }
+ braces.push(open);
+ push(open);
+ continue;
+ }
- // this one won't happen if graceful-fs is used.
- if (er.code === "EMFILE" && timeout < options.emfileWait) {
- return setTimeout(() => rimraf_(p, options, CB), timeout ++)
- }
+ if (value === '}') {
+ const brace = braces[braces.length - 1];
- // already gone
- if (er.code === "ENOENT") er = null
+ if (opts.nobrace === true || !brace) {
+ push({ type: 'text', value, output: value });
+ continue;
+ }
+
+ let output = ')';
+
+ if (brace.dots === true) {
+ const arr = tokens.slice();
+ const range = [];
+
+ 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);
+ }
}
- timeout = 0
- next(er)
+ output = expandRange(range, opts);
+ state.backtrack = true;
}
- rimraf_(p, options, CB)
- })
- }
- if (options.disableGlob || !glob.hasMagic(p))
- return afterGlob(null, [p])
+ 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);
+ }
+ }
- options.lstat(p, (er, stat) => {
- if (!er)
- return afterGlob(null, [p])
+ push({ type: 'brace', value, output });
+ decrement('braces');
+ braces.pop();
+ continue;
+ }
- glob(p, options.glob, afterGlob)
- })
+ /**
+ * Pipes
+ */
-}
+ if (value === '|') {
+ if (extglobs.length > 0) {
+ extglobs[extglobs.length - 1].conditions++;
+ }
+ push({ type: 'text', value });
+ continue;
+ }
-// 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')
+ /**
+ * Commas
+ */
- // 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)
+ if (value === ',') {
+ let output = value;
- // Windows can EPERM on stat. Life is suffering.
- if (er && er.code === "EPERM" && isWindows)
- fixWinEPERM(p, options, er, cb)
+ const brace = braces[braces.length - 1];
+ if (brace && stack[stack.length - 1] === 'braces') {
+ brace.comma = true;
+ output = '|';
+ }
- if (st && st.isDirectory())
- return rmdir(p, options, er, cb)
+ push({ type: 'comma', value, output });
+ continue;
+ }
- 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)
- })
- })
-}
+ /**
+ * Slashes
+ */
-const fixWinEPERM = (p, options, er, cb) => {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
+ 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;
+ }
- 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)
- })
- })
-}
+ push({ type: 'slash', value, output: SLASH_LITERAL });
+ continue;
+ }
-const fixWinEPERMSync = (p, options, er) => {
- assert(p)
- assert(options)
+ /**
+ * Dots
+ */
- try {
- options.chmodSync(p, 0o666)
- } catch (er2) {
- if (er2.code === "ENOENT")
- return
- else
- throw er
- }
+ 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;
+ }
- let stats
- try {
- stats = options.statSync(p)
- } catch (er3) {
- if (er3.code === "ENOENT")
- return
- else
- throw er
- }
+ if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {
+ push({ type: 'text', value, output: DOT_LITERAL });
+ continue;
+ }
- if (stats.isDirectory())
- rmdirSync(p, options, er)
- else
- options.unlinkSync(p)
-}
+ push({ type: 'dot', value, output: DOT_LITERAL });
+ continue;
+ }
-const rmdir = (p, options, originalEr, cb) => {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
+ /**
+ * Question marks
+ */
- // 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)
- })
-}
+ if (value === '?') {
+ const isGroup = prev && prev.value === '(';
+ if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
+ extglobOpen('qmark', value);
+ continue;
+ }
-const rmkids = (p, options, cb) => {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
+ if (prev && prev.type === 'paren') {
+ const next = peek();
+ let output = value;
- 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)
- })
- })
- })
-}
+ if (next === '<' && !utils.supportsLookbehinds()) {
+ throw new Error('Node.js v10 or higher is required for regex lookbehinds');
+ }
-// 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 ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) {
+ output = `\\${value}`;
+ }
- 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')
+ push({ type: 'text', value, output });
+ continue;
+ }
- let results
+ if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {
+ push({ type: 'qmark', value, output: QMARK_NO_DOT });
+ continue;
+ }
- if (options.disableGlob || !glob.hasMagic(p)) {
- results = [p]
- } else {
- try {
- options.lstatSync(p)
- results = [p]
- } catch (er) {
- results = glob.sync(p, options.glob)
+ push({ type: 'qmark', value, output: QMARK });
+ continue;
}
- }
- if (!results.length)
- return
-
- for (let i = 0; i < results.length; i++) {
- const p = results[i]
+ /**
+ * Exclamation
+ */
- let st
- try {
- st = options.lstatSync(p)
- } catch (er) {
- if (er.code === "ENOENT")
- return
+ if (value === '!') {
+ if (opts.noextglob !== true && peek() === '(') {
+ if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {
+ extglobOpen('negate', value);
+ continue;
+ }
+ }
- // Windows can EPERM on stat. Life is suffering.
- if (er.code === "EPERM" && isWindows)
- fixWinEPERMSync(p, options, er)
+ if (opts.nonegate !== true && state.index === 0) {
+ negate();
+ continue;
+ }
}
- 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
+ /**
+ * Plus
+ */
- rmdirSync(p, options, er)
- }
- }
-}
+ if (value === '+') {
+ if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
+ extglobOpen('plus', value);
+ continue;
+ }
-const rmdirSync = (p, options, originalEr) => {
- assert(p)
- assert(options)
+ if ((prev && prev.value === '(') || opts.regex === false) {
+ push({ type: 'plus', value, output: PLUS_LITERAL });
+ continue;
+ }
- 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))
+ if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {
+ push({ type: 'plus', value });
+ continue;
+ }
- // 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
+ push({ type: 'plus', value: PLUS_LITERAL });
+ continue;
}
- } while (true)
-}
-module.exports = rimraf
-rimraf.sync = rimrafSync
+ /**
+ * Plain text
+ */
+ if (value === '@') {
+ if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
+ push({ type: 'at', extglob: true, value, output: '' });
+ continue;
+ }
-/***/ }),
-/* 335 */
-/***/ (function(module, exports, __webpack_require__) {
+ push({ type: 'text', value });
+ continue;
+ }
-"use strict";
+ /**
+ * Plain text
+ */
-const AggregateError = __webpack_require__(336);
+ if (value !== '*') {
+ if (value === '$' || value === '^') {
+ value = `\\${value}`;
+ }
-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');
- }
+ const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());
+ if (match) {
+ value += match[0];
+ state.index += match[0].length;
+ }
- if (!(typeof concurrency === 'number' && concurrency >= 1)) {
- throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${concurrency}\` (${typeof concurrency})`);
- }
+ push({ type: 'text', value });
+ continue;
+ }
- const ret = [];
- const errors = [];
- const iterator = iterable[Symbol.iterator]();
- let isRejected = false;
- let isIterableDone = false;
- let resolvingCount = 0;
- let currentIndex = 0;
+ /**
+ * Stars
+ */
- const next = () => {
- if (isRejected) {
- return;
- }
+ 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;
+ }
- const nextItem = iterator.next();
- const i = currentIndex;
- currentIndex++;
+ let rest = remaining();
+ if (opts.noextglob !== true && /^\([^?]/.test(rest)) {
+ extglobOpen('star', value);
+ continue;
+ }
- if (nextItem.done) {
- isIterableDone = true;
+ if (prev.type === 'star') {
+ if (opts.noglobstar === true) {
+ consume(value);
+ continue;
+ }
- if (resolvingCount === 0) {
- if (!stopOnError && errors.length !== 0) {
- reject(new AggregateError(errors));
- } else {
- resolve(ret);
- }
- }
+ 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');
- return;
- }
+ if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {
+ push({ type: 'star', value, output: '' });
+ continue;
+ }
- resolvingCount++;
+ 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;
+ }
- (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();
- }
- }
- })();
- };
+ // strip consecutive `/**/`
+ while (rest.slice(0, 3) === '/**') {
+ const after = input[state.index + 4];
+ if (after && after !== '/') {
+ break;
+ }
+ rest = rest.slice(3);
+ consume('/**', 3);
+ }
- for (let i = 0; i < concurrency; i++) {
- next();
+ 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;
+ }
- if (isIterableDone) {
- break;
- }
- }
- });
-};
+ 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}`;
+ prev.type = 'globstar';
+ prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');
+ prev.value += value;
+ state.globstar = true;
+ state.output += prior.output + prev.output;
+ consume(value);
+ continue;
+ }
-/***/ }),
-/* 336 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {
+ const end = rest[1] !== void 0 ? '|$' : '';
-"use strict";
+ state.output = state.output.slice(0, -(prior.output + prev.output).length);
+ prior.output = `(?:${prior.output}`;
-const indentString = __webpack_require__(337);
-const cleanStack = __webpack_require__(338);
+ prev.type = 'globstar';
+ prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;
+ prev.value += value;
-const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, '');
+ state.output += prior.output + prev.output;
+ state.globstar = true;
-class AggregateError extends Error {
- constructor(errors) {
- if (!Array.isArray(errors)) {
- throw new TypeError(`Expected input to be an Array, got ${typeof errors}`);
- }
+ consume(value + advance());
- errors = [...errors].map(error => {
- if (error instanceof Error) {
- return error;
- }
+ push({ type: 'slash', value: '/', output: '' });
+ continue;
+ }
- 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);
- }
+ 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;
+ }
- return new Error(error);
- });
+ // remove single star from output
+ state.output = state.output.slice(0, -prev.output.length);
- 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);
+ // reset previous token to globstar
+ prev.type = 'globstar';
+ prev.output = globstar(opts);
+ prev.value += value;
- this.name = 'AggregateError';
+ // reset output with globstar
+ state.output += prev.output;
+ state.globstar = true;
+ consume(value);
+ continue;
+ }
- Object.defineProperty(this, '_errors', {value: errors});
- }
+ const token = { type: 'star', value, output: star };
- * [Symbol.iterator]() {
- for (const error of this._errors) {
- yield error;
- }
- }
-}
+ if (opts.bash === true) {
+ token.output = '.*?';
+ if (prev.type === 'bos' || prev.type === 'slash') {
+ token.output = nodot + token.output;
+ }
+ push(token);
+ continue;
+ }
-module.exports = AggregateError;
+ if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {
+ token.output = value;
+ push(token);
+ continue;
+ }
+ 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;
-/***/ }),
-/* 337 */
-/***/ (function(module, exports, __webpack_require__) {
+ } else if (opts.dot === true) {
+ state.output += NO_DOTS_SLASH;
+ prev.output += NO_DOTS_SLASH;
-"use strict";
+ } else {
+ state.output += nodot;
+ prev.output += nodot;
+ }
+ if (peek() !== '*') {
+ state.output += ONE_CHAR;
+ prev.output += ONE_CHAR;
+ }
+ }
-module.exports = (string, count = 1, options) => {
- options = {
- indent: ' ',
- includeEmptyLines: false,
- ...options
- };
+ push(token);
+ }
- if (typeof string !== 'string') {
- throw new TypeError(
- `Expected \`input\` to be a \`string\`, got \`${typeof string}\``
- );
- }
+ while (state.brackets > 0) {
+ if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));
+ state.output = utils.escapeLast(state.output, '[');
+ decrement('brackets');
+ }
- if (typeof count !== 'number') {
- throw new TypeError(
- `Expected \`count\` to be a \`number\`, got \`${typeof count}\``
- );
- }
+ while (state.parens > 0) {
+ if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));
+ state.output = utils.escapeLast(state.output, '(');
+ decrement('parens');
+ }
- if (typeof options.indent !== 'string') {
- throw new TypeError(
- `Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\``
- );
- }
+ while (state.braces > 0) {
+ if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));
+ state.output = utils.escapeLast(state.output, '{');
+ decrement('braces');
+ }
- if (count === 0) {
- return string;
- }
+ if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {
+ push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });
+ }
- const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm;
+ // rebuild the output if we had to backtrack at any point
+ if (state.backtrack === true) {
+ state.output = '';
- return string.replace(regex, options.indent.repeat(count));
-};
+ for (const token of state.tokens) {
+ state.output += token.output != null ? token.output : token.value;
+ if (token.suffix) {
+ state.output += token.suffix;
+ }
+ }
+ }
-/***/ }),
-/* 338 */
-/***/ (function(module, exports, __webpack_require__) {
+ return state;
+};
-"use strict";
+/**
+ * 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 os = __webpack_require__(122);
+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}`);
+ }
-const extractPathRegex = /\s+at.*(?:\(|\s)(.*)\)?/;
-const pathRegex = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/;
-const homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir();
+ input = REPLACEMENTS[input] || input;
+ const win32 = utils.isWindows(options);
-module.exports = (stack, options) => {
- options = Object.assign({pretty: false}, 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);
- return stack.replace(/\\/g, '/')
- .split('\n')
- .filter(line => {
- const pathMatches = line.match(extractPathRegex);
- if (pathMatches === null || !pathMatches[1]) {
- return true;
- }
+ 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;
- const match = pathMatches[1];
+ if (opts.capture) {
+ star = `(${star})`;
+ }
- // Electron
- if (
- match.includes('.app/Contents/Resources/electron.asar') ||
- match.includes('.app/Contents/Resources/default_app.asar')
- ) {
- return false;
- }
+ const globstar = opts => {
+ if (opts.noglobstar === true) return star;
+ return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
+ };
- return !pathRegex.test(match);
- })
- .filter(line => line.trim() !== '')
- .map(line => {
- if (options.pretty) {
- return line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));
- }
+ const create = str => {
+ switch (str) {
+ case '*':
+ return `${nodot}${ONE_CHAR}${star}`;
- return line;
- })
- .join('\n');
-};
+ case '.*':
+ return `${DOT_LITERAL}${ONE_CHAR}${star}`;
+ case '*.*':
+ return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;
-/***/ }),
-/* 339 */
-/***/ (function(module, exports, __webpack_require__) {
+ case '*/*':
+ return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;
-var fs = __webpack_require__(132),
- path = __webpack_require__(4);
+ case '**':
+ return nodot + globstar(opts);
-module.exports = ncp;
-ncp.ncp = ncp;
+ case '**/*':
+ return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;
-function ncp (source, dest, options, callback) {
- var cback = callback;
+ case '**/*.*':
+ return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;
- if (!callback) {
- cback = options;
- options = {};
- }
+ case '**/.*':
+ return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;
- 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;
+ default: {
+ const match = /^(.*?)\.(\w+)$/.exec(str);
+ if (!match) return;
- limit = (limit < 1) ? 1 : (limit > 512) ? 512 : limit;
+ const source = create(match[1]);
+ if (!source) return;
- 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 source + DOT_LITERAL + match[2];
}
}
- return getStats(source);
- }
-
- 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
+ const output = utils.removePrefix(input, state);
+ let source = create(output);
- 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);
- }
- });
+ if (source && opts.strictSlashes !== true) {
+ source += `${SLASH_LITERAL}?`;
}
- 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();
- }
- });
- }
+ return source;
+};
- 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();
- });
- }
+module.exports = parse;
- 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);
- });
- }
+/***/ }),
+/* 406 */
+/***/ (function(module, exports, __webpack_require__) {
- function mkDir(dir, target) {
- fs.mkdir(target, dir.mode, function (err) {
- if (err) {
- return onError(err);
- }
- copyDir(dir.name);
- });
- }
+"use strict";
- 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();
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.merge = void 0;
+const merge2 = __webpack_require__(364);
+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 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);
+/***/ }),
+/* 407 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+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;
+
+
+/***/ }),
+/* 408 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const stream_1 = __webpack_require__(409);
+const provider_1 = __webpack_require__(436);
+class ProviderAsync extends provider_1.default {
+ constructor() {
+ super(...arguments);
+ this._reader = new stream_1.default(this._settings);
}
- 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);
- }
- if (targetDest === resolvedPath) {
- return cb();
- }
- return rmFile(target, function () {
- makeLink(resolvedPath, target);
+ 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;
- 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);
- });
- }
+/***/ }),
+/* 409 */
+/***/ (function(module, exports, __webpack_require__) {
- function onError(err) {
- if (options.stopOnError) {
- return cback(err);
- }
- else if (!errs && options.errs) {
- errs = fs.createWriteStream(options.errs);
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const stream_1 = __webpack_require__(294);
+const fsStat = __webpack_require__(410);
+const fsWalk = __webpack_require__(415);
+const reader_1 = __webpack_require__(435);
+class ReaderStream extends reader_1.default {
+ constructor() {
+ super(...arguments);
+ this._walkStream = fsWalk.walkStream;
+ this._stat = fsStat.stat;
}
- else if (!errs) {
- errs = [];
+ dynamic(root, options) {
+ return this._walkStream(root, options);
}
- if (typeof errs.write === 'undefined') {
- errs.push(err);
+ 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;
}
- else {
- errs.write(err.stack + '\n\n');
+ _getEntry(filepath, pattern, options) {
+ return this._getStat(filepath)
+ .then((stats) => this._makeEntry(stats, pattern))
+ .catch((error) => {
+ if (options.errorFilter(error)) {
+ return null;
+ }
+ throw error;
+ });
}
- return cb();
- }
-
- function cb(skipped) {
- if (!skipped) running--;
- finished++;
- if ((started === finished) && (running === 0)) {
- if (cback !== undefined ) {
- return errs ? cback(errs) : cback(null);
- }
+ _getStat(filepath) {
+ return new Promise((resolve, reject) => {
+ this._stat(filepath, this._fsStatSettings, (error, stats) => {
+ return error === null ? resolve(stats) : reject(error);
+ });
+ });
}
- }
}
-
-
+exports.default = ReaderStream;
/***/ }),
-/* 340 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 410 */
+/***/ (function(module, exports, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProjects", function() { return getProjects; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNonBazelProjectsOnly", function() { return getNonBazelProjectsOnly; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBazelProjectsOnly", function() { return getBazelProjectsOnly; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildProjectGraph", function() { return buildProjectGraph; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "topologicallyBatchProjects", function() { return topologicallyBatchProjects; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "includeTransitiveProjects", function() { return includeTransitiveProjects; });
-/* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(244);
-/* 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__(4);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(113);
-/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(341);
-/* harmony import */ var _project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(342);
-/*
- * 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.
- */
-
-
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const async = __webpack_require__(411);
+const sync = __webpack_require__(412);
+const settings_1 = __webpack_require__(413);
+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);
+}
+/***/ }),
+/* 411 */
+/***/ (function(module, exports, __webpack_require__) {
-const glob = Object(util__WEBPACK_IMPORTED_MODULE_2__["promisify"])(glob__WEBPACK_IMPORTED_MODULE_0___default.a);
-/** a Map of project names to Project instances */
+"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);
+}
-async function getProjects(rootPath, projectsPathsPatterns, {
- include = [],
- exclude = []
-} = {}, bazelOnly = false) {
- const projects = new Map();
- for (const pattern of projectsPathsPatterns) {
- const pathsToProcess = await packagesFromGlobPattern({
- pattern,
- rootPath
- });
+/***/ }),
+/* 412 */
+/***/ (function(module, exports, __webpack_require__) {
- for (const filePath of pathsToProcess) {
- const projectConfigPath = normalize(filePath);
- const projectDir = path__WEBPACK_IMPORTED_MODULE_1___default.a.dirname(projectConfigPath);
- const project = await _project__WEBPACK_IMPORTED_MODULE_4__["Project"].fromPath(projectDir);
- const excludeProject = exclude.includes(project.name) || include.length > 0 && !include.includes(project.name) || bazelOnly && !project.isBazelPackage();
+"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;
- if (excludeProject) {
- continue;
- }
- if (projects.has(project.name)) {
- throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`There are multiple projects with the same name [${project.name}]`, {
- name: project.name,
- paths: [project.path, projects.get(project.name).path]
- });
- }
+/***/ }),
+/* 413 */
+/***/ (function(module, exports, __webpack_require__) {
- projects.set(project.name, project);
- }
- }
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs = __webpack_require__(414);
+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;
- return projects;
-}
-async function getNonBazelProjectsOnly(projects) {
- const bazelProjectsOnly = new Map();
- for (const project of projects.values()) {
- if (!project.isBazelPackage()) {
- bazelProjectsOnly.set(project.name, project);
- }
- }
+/***/ }),
+/* 414 */
+/***/ (function(module, exports, __webpack_require__) {
- return bazelProjectsOnly;
-}
-async function getBazelProjectsOnly(projects) {
- const bazelProjectsOnly = new Map();
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs = __webpack_require__(253);
+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;
- for (const project of projects.values()) {
- if (project.isBazelPackage()) {
- bazelProjectsOnly.set(project.name, project);
- }
- }
- return bazelProjectsOnly;
-}
+/***/ }),
+/* 415 */
+/***/ (function(module, exports, __webpack_require__) {
-function packagesFromGlobPattern({
- pattern,
- rootPath
-}) {
- const globOptions = {
- cwd: rootPath,
- // Should throw in case of unusual errors when reading the file system
- strict: true,
- // Always returns absolute paths for matched files
- absolute: true,
- // Do not match ** against multiple filenames
- // (This is only specified because we currently don't have a need for it.)
- noglobstar: true
- };
- return glob(path__WEBPACK_IMPORTED_MODULE_1___default.a.join(pattern, 'package.json'), globOptions);
-} // https://github.com/isaacs/node-glob/blob/master/common.js#L104
-// glob always returns "\\" as "/" in windows, so everyone
-// gets normalized because we can't have nice things.
-
-
-function normalize(dir) {
- return path__WEBPACK_IMPORTED_MODULE_1___default.a.normalize(dir);
-}
-
-function buildProjectGraph(projects) {
- const projectGraph = new Map();
-
- for (const project of projects.values()) {
- const projectDeps = [];
- const dependencies = project.allDependencies;
-
- for (const depName of Object.keys(dependencies)) {
- if (projects.has(depName)) {
- const dep = projects.get(depName);
- project.ensureValidProjectDependency(dep);
- projectDeps.push(dep);
- }
- }
-
- projectGraph.set(project.name, projectDeps);
- }
-
- return projectGraph;
-}
-function topologicallyBatchProjects(projectsToBatch, projectGraph) {
- // We're going to be chopping stuff out of this list, so copy it.
- const projectsLeftToBatch = new Set(projectsToBatch.keys());
- const batches = [];
-
- while (projectsLeftToBatch.size > 0) {
- // Get all projects that have no remaining dependencies within the repo
- // that haven't yet been picked.
- const batch = [];
-
- for (const projectName of projectsLeftToBatch) {
- const projectDeps = projectGraph.get(projectName);
- const needsDependenciesBatched = projectDeps.some(dep => projectsLeftToBatch.has(dep.name));
-
- if (!needsDependenciesBatched) {
- batch.push(projectsToBatch.get(projectName));
- }
- } // If we weren't able to find a project with no remaining dependencies,
- // then we've encountered a cycle in the dependency graph.
-
-
- const hasCycles = batch.length === 0;
-
- if (hasCycles) {
- const cycleProjectNames = [...projectsLeftToBatch];
- const message = 'Encountered a cycle in the dependency graph. Projects in cycle are:\n' + cycleProjectNames.join(', ');
- throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](message);
- }
-
- batches.push(batch);
- batch.forEach(project => projectsLeftToBatch.delete(project.name));
- }
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const async_1 = __webpack_require__(416);
+const stream_1 = __webpack_require__(431);
+const sync_1 = __webpack_require__(432);
+const settings_1 = __webpack_require__(434);
+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);
+}
- return batches;
-}
-function includeTransitiveProjects(subsetOfProjects, allProjects, {
- onlyProductionDependencies = false
-} = {}) {
- const projectsWithDependents = new Map(); // the current list of packages we are expanding using breadth-first-search
- const toProcess = [...subsetOfProjects];
+/***/ }),
+/* 416 */
+/***/ (function(module, exports, __webpack_require__) {
- while (toProcess.length > 0) {
- const project = toProcess.shift();
- const dependencies = onlyProductionDependencies ? project.productionDependencies : project.allDependencies;
- Object.keys(dependencies).forEach(dep => {
- if (allProjects.has(dep)) {
- toProcess.push(allProjects.get(dep));
- }
- });
- projectsWithDependents.set(project.name, project);
- }
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const async_1 = __webpack_require__(417);
+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);
+}
- return projectsWithDependents;
-}
/***/ }),
-/* 341 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 417 */
+/***/ (function(module, exports, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CliError", function() { return CliError; });
-/*
- * 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.
- */
-class CliError extends Error {
- constructor(message, meta = {}) {
- super(message);
- this.meta = meta;
- }
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const events_1 = __webpack_require__(285);
+const fsScandir = __webpack_require__(418);
+const fastq = __webpack_require__(427);
+const common = __webpack_require__(429);
+const reader_1 = __webpack_require__(430);
+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;
-}
/***/ }),
-/* 342 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 418 */
+/***/ (function(module, exports, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Project", function() { return Project; });
-/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(132);
-/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(113);
-/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(341);
-/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(220);
-/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(343);
-/* harmony import */ var _scripts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(408);
-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; }
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const async = __webpack_require__(419);
+const sync = __webpack_require__(424);
+const settings_1 = __webpack_require__(425);
+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);
+}
-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; }
+/***/ }),
+/* 419 */
+/***/ (function(module, exports, __webpack_require__) {
-/*
- * 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.
- */
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const fsStat = __webpack_require__(410);
+const rpl = __webpack_require__(420);
+const constants_1 = __webpack_require__(421);
+const utils = __webpack_require__(422);
+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);
+}
+/***/ }),
+/* 420 */
+/***/ (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()
+ }
-class Project {
- static async fromPath(path) {
- const pkgJson = await Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["readPackageJson"])(path);
- return new Project(pkgJson, path);
+ function each (i, err, result) {
+ results[i] = result
+ if (--pending === 0 || err) {
+ done(err)
+ }
}
- /** parsed package.json */
+ 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) })
+ })
+ }
- constructor(packageJson, projectPath) {
- _defineProperty(this, "json", void 0);
+ isSync = false
+}
- _defineProperty(this, "packageJsonLocation", void 0);
- _defineProperty(this, "nodeModulesLocation", void 0);
+/***/ }),
+/* 421 */
+/***/ (function(module, exports, __webpack_require__) {
- _defineProperty(this, "targetLocation", void 0);
+"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;
- _defineProperty(this, "path", void 0);
- _defineProperty(this, "version", void 0);
+/***/ }),
+/* 422 */
+/***/ (function(module, exports, __webpack_require__) {
- _defineProperty(this, "allDependencies", void 0);
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs = __webpack_require__(423);
+exports.fs = fs;
- _defineProperty(this, "productionDependencies", void 0);
- _defineProperty(this, "devDependencies", void 0);
+/***/ }),
+/* 423 */
+/***/ (function(module, exports, __webpack_require__) {
- _defineProperty(this, "scripts", void 0);
+"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;
- _defineProperty(this, "bazelPackage", void 0);
- _defineProperty(this, "isSinglePackageJsonProject", false);
+/***/ }),
+/* 424 */
+/***/ (function(module, exports, __webpack_require__) {
- this.json = Object.freeze(packageJson);
- this.path = projectPath;
- this.packageJsonLocation = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, 'package.json');
- this.nodeModulesLocation = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, 'node_modules');
- this.targetLocation = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, 'target');
- this.version = this.json.version;
- this.productionDependencies = this.json.dependencies || {};
- this.devDependencies = this.json.devDependencies || {};
- this.allDependencies = _objectSpread(_objectSpread({}, this.devDependencies), this.productionDependencies);
- this.isSinglePackageJsonProject = this.json.name === 'kibana';
- this.scripts = this.json.scripts || {};
- this.bazelPackage = !this.isSinglePackageJsonProject && fs__WEBPACK_IMPORTED_MODULE_0___default.a.existsSync(path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, 'BUILD.bazel'));
- }
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const fsStat = __webpack_require__(410);
+const constants_1 = __webpack_require__(421);
+const utils = __webpack_require__(422);
+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;
- get name() {
- return this.json.name;
- }
- ensureValidProjectDependency(project) {
- const relativePathToProject = normalizePath(path__WEBPACK_IMPORTED_MODULE_1___default.a.relative(this.path, project.path));
- const relativePathToProjectIfBazelPkg = normalizePath(path__WEBPACK_IMPORTED_MODULE_1___default.a.relative(this.path, `${__dirname}/../../../bazel-bin/packages/${path__WEBPACK_IMPORTED_MODULE_1___default.a.basename(project.path)}`));
- const versionInPackageJson = this.allDependencies[project.name];
- const expectedVersionInPackageJson = `link:${relativePathToProject}`;
- const expectedVersionInPackageJsonIfBazelPkg = `link:${relativePathToProjectIfBazelPkg}`; // TODO: after introduce bazel to build all the packages and completely remove the support for kbn packages
- // do not allow child projects to hold dependencies, unless they are meant to be published externally
+/***/ }),
+/* 425 */
+/***/ (function(module, exports, __webpack_require__) {
- if (versionInPackageJson === expectedVersionInPackageJson || versionInPackageJson === expectedVersionInPackageJsonIfBazelPkg) {
- return;
- }
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const path = __webpack_require__(4);
+const fsStat = __webpack_require__(410);
+const fs = __webpack_require__(426);
+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 updateMsg = 'Update its package.json to the expected value below.';
- const meta = {
- actual: `"${project.name}": "${versionInPackageJson}"`,
- expected: `"${project.name}": "${expectedVersionInPackageJson}" or "${project.name}": "${expectedVersionInPackageJsonIfBazelPkg}"`,
- package: `${this.name} (${this.packageJsonLocation})`
- };
- if (Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["isLinkDependency"])(versionInPackageJson)) {
- throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`[${this.name}] depends on [${project.name}] using 'link:', but the path is wrong. ${updateMsg}`, meta);
- }
+/***/ }),
+/* 426 */
+/***/ (function(module, exports, __webpack_require__) {
- throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`[${this.name}] depends on [${project.name}] but it's not using the local package. ${updateMsg}`, meta);
- }
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs = __webpack_require__(253);
+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;
- 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.
- */
+/***/ }),
+/* 427 */
+/***/ (function(module, exports, __webpack_require__) {
- getIntermediateBuildDirectory() {
- return path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, this.getBuildConfig().intermediateBuildDirectory || '.');
- }
+"use strict";
- getCleanConfig() {
- return this.json.kibana && this.json.kibana.clean || {};
- }
- isBazelPackage() {
- return this.bazelPackage;
- }
+var reusify = __webpack_require__(428)
- isFlaggedAsDevOnly() {
- return !!(this.json.kibana && this.json.kibana.devOnly);
+function fastqueue (context, worker, concurrency) {
+ if (typeof context === 'function') {
+ concurrency = worker
+ worker = context
+ context = null
}
- hasScript(name) {
- return name in this.scripts;
- }
+ var cache = reusify(Task)
+ var queueHead = null
+ var queueTail = null
+ var _running = 0
- getExecutables() {
- const raw = this.json.bin;
+ 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
+ }
- if (!raw) {
- return {};
- }
+ return self
- if (typeof raw === 'string') {
- return {
- [this.name]: path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, raw)
- };
- }
+ function running () {
+ return _running
+ }
- if (typeof raw === 'object') {
- const binsConfig = {};
+ function pause () {
+ self.paused = true
+ }
- for (const binName of Object.keys(raw)) {
- binsConfig[binName] = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, raw[binName]);
- }
+ function length () {
+ var current = queueHead
+ var counter = 0
- return binsConfig;
+ while (current) {
+ current = current.next
+ counter++
}
- throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`[${this.name}] has an invalid "bin" field in its package.json, ` + `expected an object or a string`, {
- binConfig: Object(util__WEBPACK_IMPORTED_MODULE_2__["inspect"])(raw),
- package: `${this.name} (${this.packageJsonLocation})`
- });
+ return counter
}
- async runScript(scriptName, args = []) {
- _log__WEBPACK_IMPORTED_MODULE_4__["log"].info(`Running script [${scriptName}] in [${this.name}]:`);
- return Object(_scripts__WEBPACK_IMPORTED_MODULE_6__["runScriptInPackage"])(scriptName, args, this);
+ function resume () {
+ if (!self.paused) return
+ self.paused = false
+ for (var i = 0; i < self.concurrency; i++) {
+ _running++
+ release()
+ }
}
- runScriptStreaming(scriptName, options = {}) {
- return Object(_scripts__WEBPACK_IMPORTED_MODULE_6__["runScriptInPackageStreaming"])({
- script: scriptName,
- args: options.args || [],
- pkg: this,
- debug: options.debug
- });
+ function idle () {
+ return _running === 0 && self.length() === 0
}
- hasDependencies() {
- return Object.keys(this.allDependencies).length > 0;
- }
+ function push (value, done) {
+ var current = cache.get()
- isEveryDependencyLocal() {
- return Object.values(this.allDependencies).every(dep => Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["isLinkDependency"])(dep));
- }
+ current.context = context
+ current.release = release
+ current.value = value
+ current.callback = done || noop
- async installDependencies(options = {}) {
- _log__WEBPACK_IMPORTED_MODULE_4__["log"].info(`[${this.name}] running yarn`);
- _log__WEBPACK_IMPORTED_MODULE_4__["log"].write('');
- await Object(_scripts__WEBPACK_IMPORTED_MODULE_6__["installInDir"])(this.path, options === null || options === void 0 ? void 0 : options.extraArgs);
- _log__WEBPACK_IMPORTED_MODULE_4__["log"].write('');
+ 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)
+ }
}
-} // We normalize all path separators to `/` in generated files
-
-function normalizePath(path) {
- return path.replace(/[\\\/]+/g, '/');
-}
-
-/***/ }),
-/* 343 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readPackageJson", function() { return readPackageJson; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "writePackageJson", function() { return writePackageJson; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createProductionPackageJson", function() { return createProductionPackageJson; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLinkDependency", function() { return isLinkDependency; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBazelPackageDependency", function() { return isBazelPackageDependency; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transformDependencies", function() { return transformDependencies; });
-/* harmony import */ var read_pkg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(344);
-/* 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__(397);
-/* 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 unshift (value, done) {
+ var current = cache.get()
-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; }
+ current.context = context
+ current.release = release
+ current.value = value
+ current.callback = done || noop
-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; }
+ 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)
+ }
+ }
-/*
- * 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 release (holder) {
+ if (holder) {
+ cache.release(holder)
+ }
+ 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()
+ }
+ }
+ function kill () {
+ queueHead = null
+ queueTail = null
+ self.drain = noop
+ }
-function readPackageJson(cwd) {
- return read_pkg__WEBPACK_IMPORTED_MODULE_0___default()({
- cwd,
- normalize: false
- });
-}
-function writePackageJson(path, json) {
- return write_pkg__WEBPACK_IMPORTED_MODULE_1___default()(path, json);
+ function killAndDrain () {
+ queueHead = null
+ queueTail = null
+ self.drain()
+ self.drain = noop
+ }
}
-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];
+function noop () {}
- if (!isLinkDependency(depVersion)) {
- newDeps[name] = depVersion;
- continue;
- }
+function Task () {
+ this.value = null
+ this.callback = noop
+ this.next = null
+ this.release = noop
+ this.context = null
- if (isBazelPackageDependency(depVersion)) {
- newDeps[name] = depVersion.replace('link:bazel-bin/', 'file:');
- continue;
- }
+ var self = this
- newDeps[name] = depVersion.replace('link:', 'file:');
+ 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)
}
-
- return newDeps;
}
+module.exports = fastqueue
+
+
/***/ }),
-/* 344 */
+/* 428 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const {promisify} = __webpack_require__(113);
-const fs = __webpack_require__(132);
-const path = __webpack_require__(4);
-const parseJson = __webpack_require__(345);
-
-const readFileAsync = promisify(fs.readFile);
-module.exports = async options => {
- options = {
- cwd: process.cwd(),
- normalize: true,
- ...options
- };
+function reusify (Constructor) {
+ var head = new Constructor()
+ var tail = head
- const filePath = path.resolve(options.cwd, 'package.json');
- const json = parseJson(await readFileAsync(filePath, 'utf8'));
+ function get () {
+ var current = head
- if (options.normalize) {
- __webpack_require__(366)(json);
- }
+ if (current.next) {
+ head = current.next
+ } else {
+ head = new Constructor()
+ tail = head
+ }
- return json;
-};
+ current.next = null
-module.exports.sync = options => {
- options = {
- cwd: process.cwd(),
- normalize: true,
- ...options
- };
+ return current
+ }
- const filePath = path.resolve(options.cwd, 'package.json');
- const json = parseJson(fs.readFileSync(filePath, 'utf8'));
+ function release (obj) {
+ tail.next = obj
+ tail = obj
+ }
- if (options.normalize) {
- __webpack_require__(366)(json);
- }
+ return {
+ get: get,
+ release: release
+ }
+}
- return json;
-};
+module.exports = reusify
/***/ }),
-/* 345 */
+/* 429 */
/***/ (function(module, exports, __webpack_require__) {
"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;
-const errorEx = __webpack_require__(346);
-const fallback = __webpack_require__(348);
-const {default: LinesAndColumns} = __webpack_require__(349);
-const {codeFrameColumns} = __webpack_require__(350);
-const JSONError = errorEx('JSONError', {
- fileName: errorEx.append('in %s'),
- codeFrame: errorEx.append('\n\n%s\n')
-});
+/***/ }),
+/* 430 */
+/***/ (function(module, exports, __webpack_require__) {
-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);
-
- const codeFrame = codeFrameColumns(
- string,
- {start: {line: location.line + 1, column: location.column + 1}},
- {highlightCode: true}
- );
-
- jsonError.codeFrame = codeFrame;
- }
-
- throw jsonError;
- }
-};
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const common = __webpack_require__(429);
+class Reader {
+ constructor(_root, _settings) {
+ this._root = _root;
+ this._settings = _settings;
+ this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);
+ }
+}
+exports.default = Reader;
/***/ }),
-/* 346 */
+/* 431 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const stream_1 = __webpack_require__(294);
+const async_1 = __webpack_require__(417);
+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;
-var util = __webpack_require__(113);
-var isArrayish = __webpack_require__(347);
-
-var errorEx = function errorEx(name, properties) {
- if (!name || name.constructor !== String) {
- properties = name || {};
- name = Error.name;
- }
-
- var errorExError = function ErrorEXError(message) {
- if (!this) {
- return new ErrorEXError(message);
- }
-
- message = message instanceof Error
- ? message.message
- : (message || this.message);
-
- 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);
-
- for (var key in properties) {
- if (!properties.hasOwnProperty(key)) {
- continue;
- }
-
- var modifier = properties[key];
-
- 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;
-};
+/***/ }),
+/* 432 */
+/***/ (function(module, exports, __webpack_require__) {
-errorEx.append = function (str, def) {
- return {
- message: function (v, message) {
- v = v || def;
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const sync_1 = __webpack_require__(433);
+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;
- if (v) {
- message[0] += ' ' + str.replace('%s', v.toString());
- }
- return message;
- }
- };
-};
+/***/ }),
+/* 433 */
+/***/ (function(module, exports, __webpack_require__) {
-errorEx.line = function (str, def) {
- return {
- line: function (v) {
- v = v || def;
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const fsScandir = __webpack_require__(418);
+const common = __webpack_require__(429);
+const reader_1 = __webpack_require__(430);
+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;
- if (v) {
- return str.replace('%s', v.toString());
- }
- return null;
- }
- };
-};
+/***/ }),
+/* 434 */
+/***/ (function(module, exports, __webpack_require__) {
-module.exports = errorEx;
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const path = __webpack_require__(4);
+const fsScandir = __webpack_require__(418);
+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;
/***/ }),
-/* 347 */
+/* 435 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-
-module.exports = function isArrayish(obj) {
- if (!obj) {
- return false;
- }
-
- return obj instanceof Array || Array.isArray(obj) ||
- (obj.length >= 0 && obj.splice instanceof Function);
-};
+Object.defineProperty(exports, "__esModule", { value: true });
+const path = __webpack_require__(4);
+const fsStat = __webpack_require__(410);
+const utils = __webpack_require__(380);
+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;
/***/ }),
-/* 348 */
+/* 436 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-
-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)
+Object.defineProperty(exports, "__esModule", { value: true });
+const path = __webpack_require__(4);
+const deep_1 = __webpack_require__(437);
+const entry_1 = __webpack_require__(440);
+const error_1 = __webpack_require__(441);
+const entry_2 = __webpack_require__(442);
+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);
}
- 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)}'`
+ _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
+ };
}
- throw e
- }
}
+exports.default = Provider;
/***/ }),
-/* 349 */
-/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {
+/* 437 */
+/***/ (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;
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const utils = __webpack_require__(380);
+const partial_1 = __webpack_require__(438);
+class DeepFilter {
+ constructor(_settings, _micromatchOptions) {
+ this._settings = _settings;
+ this._micromatchOptions = _micromatchOptions;
}
- LinesAndColumns.prototype.locationForIndex = function (index) {
- if (index < 0 || index > this.string.length) {
- return null;
+ 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;
}
- var line = 0;
- var offsets = this.offsets;
- while (offsets[line + 1] <= index) {
- line++;
+ if (this._isSkippedSymbolicLink(entry)) {
+ 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;
+ const filepath = utils.path.removeLeadingDotSegment(entry.path);
+ if (this._isSkippedByPositivePatterns(filepath, matcher)) {
+ return false;
}
- if (column < 0 || column > this.lengthOfLine(line)) {
- return null;
+ 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.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);
+ 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;
/***/ }),
-/* 350 */
+/* 438 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.codeFrameColumns = codeFrameColumns;
-exports.default = _default;
-
-var _highlight = __webpack_require__(351);
-
-let deprecationWarningShown = false;
-
-function getDefs(chalk) {
- return {
- gutter: chalk.grey,
- marker: chalk.red.bold,
- message: chalk.red.bold
- };
+Object.defineProperty(exports, "__esModule", { value: true });
+const matcher_1 = __webpack_require__(439);
+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 NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
-
-function getMarkerLines(loc, source, opts) {
- const startLoc = Object.assign({
- column: 0,
- line: -1
- }, loc.start);
- const endLoc = Object.assign({}, startLoc, loc.end);
- const {
- linesAbove = 2,
- linesBelow = 3
- } = opts || {};
- const startLine = startLoc.line;
- const startColumn = startLoc.column;
- const endLine = endLoc.line;
- const endColumn = endLoc.column;
- let start = Math.max(startLine - (linesAbove + 1), 0);
- let end = Math.min(source.length, endLine + linesBelow);
-
- if (startLine === -1) {
- start = 0;
- }
-
- if (endLine === -1) {
- end = source.length;
- }
- const lineDiff = endLine - startLine;
- const markerLines = {};
+/***/ }),
+/* 439 */
+/***/ (function(module, exports, __webpack_require__) {
- if (lineDiff) {
- for (let i = 0; i <= lineDiff; i++) {
- const lineNumber = i + startLine;
+"use strict";
- if (!startColumn) {
- markerLines[lineNumber] = true;
- } else if (i === 0) {
- const sourceLength = source[lineNumber - 1].length;
- markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
- } else if (i === lineDiff) {
- markerLines[lineNumber] = [0, endColumn];
- } else {
- const sourceLength = source[lineNumber - i].length;
- markerLines[lineNumber] = [0, sourceLength];
- }
+Object.defineProperty(exports, "__esModule", { value: true });
+const utils = __webpack_require__(380);
+class Matcher {
+ constructor(_patterns, _settings, _micromatchOptions) {
+ this._patterns = _patterns;
+ this._settings = _settings;
+ this._micromatchOptions = _micromatchOptions;
+ this._storage = [];
+ this._fillStorage();
}
- } else {
- if (startColumn === endColumn) {
- if (startColumn) {
- markerLines[startLine] = [startColumn, 0];
- } else {
- markerLines[startLine] = true;
- }
- } else {
- markerLines[startLine] = [startColumn, endColumn - startColumn];
+ _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));
}
- }
-
- return {
- start,
- end,
- markerLines
- };
}
+exports.default = Matcher;
-function codeFrameColumns(rawLines, loc, opts = {}) {
- const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);
- const chalk = (0, _highlight.getChalk)(opts);
- const defs = getDefs(chalk);
-
- const maybeHighlight = (chalkFn, string) => {
- return highlighted ? chalkFn(string) : string;
- };
-
- const lines = rawLines.split(NEWLINE);
- const {
- start,
- end,
- markerLines
- } = getMarkerLines(loc, lines, opts);
- const hasColumns = loc.start && typeof loc.start.column === "number";
- const numberMaxWidth = String(end).length;
- const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;
- let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
- const number = start + 1 + index;
- const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
- const gutter = ` ${paddedNumber} |`;
- const hasMarker = markerLines[number];
- const lastMarkerLine = !markerLines[number + 1];
- if (hasMarker) {
- let markerLine = "";
+/***/ }),
+/* 440 */
+/***/ (function(module, exports, __webpack_require__) {
- if (Array.isArray(hasMarker)) {
- const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
- const numberOfMarkers = hasMarker[1] || 1;
- markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
+"use strict";
- if (lastMarkerLine && opts.message) {
- markerLine += " " + maybeHighlight(defs.message, opts.message);
+Object.defineProperty(exports, "__esModule", { value: true });
+const utils = __webpack_require__(380);
+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;
}
- }
-
- return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
- } else {
- return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`;
+ 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;
}
- }).join("\n");
-
- if (opts.message && !hasColumns) {
- frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
- }
-
- if (highlighted) {
- return chalk.reset(frame);
- } else {
- return frame;
- }
-}
-
-function _default(rawLines, lineNumber, colNumber, opts = {}) {
- if (!deprecationWarningShown) {
- deprecationWarningShown = true;
- const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
-
- if (process.emitWarning) {
- process.emitWarning(message, "DeprecationWarning");
- } else {
- const deprecationError = new Error(message);
- deprecationError.name = "DeprecationWarning";
- console.warn(new Error(message));
+ _isDuplicateEntry(entry) {
+ return this.index.has(entry.path);
}
- }
-
- colNumber = Math.max(colNumber, 0);
- const location = {
- start: {
- column: colNumber,
- line: lineNumber
+ _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);
}
- };
- return codeFrameColumns(rawLines, location, opts);
}
+exports.default = EntryFilter;
+
/***/ }),
-/* 351 */
+/* 441 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = highlight;
-exports.getChalk = getChalk;
-exports.shouldHighlight = shouldHighlight;
-
-var _jsTokens = __webpack_require__(352);
-
-var _helperValidatorIdentifier = __webpack_require__(353);
-
-var _chalk = __webpack_require__(356);
-
-const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
-
-function getDefs(chalk) {
- return {
- keyword: chalk.cyan,
- capitalized: chalk.yellow,
- jsxIdentifier: chalk.yellow,
- punctuator: chalk.yellow,
- number: chalk.magenta,
- string: chalk.green,
- regex: chalk.magenta,
- comment: chalk.grey,
- invalid: chalk.white.bgRed.bold
- };
+Object.defineProperty(exports, "__esModule", { value: true });
+const utils = __webpack_require__(380);
+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;
-const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
-const BRACKET = /^[()[\]{}]$/;
-let tokenize;
-{
- const JSX_TAG = /^[a-z][\w-]*$/i;
- const getTokenType = function (token, offset, text) {
- if (token.type === "name") {
- if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) {
- return "keyword";
- }
+/***/ }),
+/* 442 */
+/***/ (function(module, exports, __webpack_require__) {
- if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "")) {
- return "jsxIdentifier";
- }
+"use strict";
- if (token.value[0] !== token.value[0].toLowerCase()) {
- return "capitalized";
- }
+Object.defineProperty(exports, "__esModule", { value: true });
+const utils = __webpack_require__(380);
+class EntryTransformer {
+ constructor(_settings) {
+ this._settings = _settings;
}
-
- if (token.type === "punctuator" && BRACKET.test(token.value)) {
- return "bracket";
+ getTransformer() {
+ return (entry) => this._transform(entry);
}
-
- if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
- return "punctuator";
+ _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;
- return token.type;
- };
- tokenize = function* (text) {
- let match;
+/***/ }),
+/* 443 */
+/***/ (function(module, exports, __webpack_require__) {
- while (match = _jsTokens.default.exec(text)) {
- const token = _jsTokens.matchToToken(match);
+"use strict";
- yield {
- type: getTokenType(token, match.index, text),
- value: token.value
- };
+Object.defineProperty(exports, "__esModule", { value: true });
+const stream_1 = __webpack_require__(294);
+const stream_2 = __webpack_require__(409);
+const provider_1 = __webpack_require__(436);
+class ProviderStream extends provider_1.default {
+ constructor() {
+ super(...arguments);
+ this._reader = new stream_2.default(this._settings);
}
- };
-}
-
-function highlightTokens(defs, text) {
- let highlighted = "";
-
- for (const {
- type,
- value
- } of tokenize(text)) {
- const colorize = defs[type];
-
- if (colorize) {
- highlighted += value.split(NEWLINE).map(str => colorize(str)).join("\n");
- } else {
- highlighted += value;
+ 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 highlighted;
-}
-
-function shouldHighlight(options) {
- return !!_chalk.supportsColor || options.forceColor;
-}
-
-function getChalk(options) {
- return options.forceColor ? new _chalk.constructor({
- enabled: true,
- level: 1
- }) : _chalk;
}
+exports.default = ProviderStream;
-function highlight(code, options = {}) {
- if (code !== "" && shouldHighlight(options)) {
- const chalk = getChalk(options);
- const defs = getDefs(chalk);
- return highlightTokens(defs, code);
- } else {
- return code;
- }
-}
/***/ }),
-/* 352 */
-/***/ (function(module, exports) {
-
-// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell
-// License: MIT. (See LICENSE.)
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-})
+/* 444 */
+/***/ (function(module, exports, __webpack_require__) {
-// This regex comes from regex.coffee, and is inserted here by generate-index.js
-// (run `npm run build`).
-exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g
+"use strict";
-exports.matchToToken = function(match) {
- var token = {type: "invalid", value: match[0], closed: undefined}
- if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4])
- else if (match[ 5]) token.type = "comment"
- else if (match[ 6]) token.type = "comment", token.closed = !!match[7]
- else if (match[ 8]) token.type = "regex"
- else if (match[ 9]) token.type = "number"
- else if (match[10]) token.type = "name"
- else if (match[11]) token.type = "punctuator"
- else if (match[12]) token.type = "whitespace"
- return token
+Object.defineProperty(exports, "__esModule", { value: true });
+const sync_1 = __webpack_require__(445);
+const provider_1 = __webpack_require__(436);
+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;
/***/ }),
-/* 353 */
+/* 445 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fsStat = __webpack_require__(410);
+const fsWalk = __webpack_require__(415);
+const reader_1 = __webpack_require__(435);
+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;
+
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-Object.defineProperty(exports, "isIdentifierChar", {
- enumerable: true,
- get: function () {
- return _identifier.isIdentifierChar;
- }
-});
-Object.defineProperty(exports, "isIdentifierName", {
- enumerable: true,
- get: function () {
- return _identifier.isIdentifierName;
- }
-});
-Object.defineProperty(exports, "isIdentifierStart", {
- enumerable: true,
- get: function () {
- return _identifier.isIdentifierStart;
- }
-});
-Object.defineProperty(exports, "isKeyword", {
- enumerable: true,
- get: function () {
- return _keyword.isKeyword;
- }
-});
-Object.defineProperty(exports, "isReservedWord", {
- enumerable: true,
- get: function () {
- return _keyword.isReservedWord;
- }
-});
-Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
- enumerable: true,
- get: function () {
- return _keyword.isStrictBindOnlyReservedWord;
- }
-});
-Object.defineProperty(exports, "isStrictBindReservedWord", {
- enumerable: true,
- get: function () {
- return _keyword.isStrictBindReservedWord;
- }
-});
-Object.defineProperty(exports, "isStrictReservedWord", {
- enumerable: true,
- get: function () {
- return _keyword.isStrictReservedWord;
- }
-});
-
-var _identifier = __webpack_require__(354);
+/***/ }),
+/* 446 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
+const fs = __webpack_require__(253);
+const os = __webpack_require__(243);
+/**
+ * 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;
-var _keyword = __webpack_require__(355);
/***/ }),
-/* 354 */
+/* 447 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+const path = __webpack_require__(4);
+const pathType = __webpack_require__(448);
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.isIdentifierChar = isIdentifierChar;
-exports.isIdentifierName = isIdentifierName;
-exports.isIdentifierStart = isIdentifierStart;
-let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
-let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
-const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
-const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
-nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
-const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];
-const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
+const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0];
-function isInAstralSet(code, set) {
- let pos = 0x10000;
+const getPath = (filepath, cwd) => {
+ const pth = filepath[0] === '!' ? filepath.slice(1) : filepath;
+ return path.isAbsolute(pth) ? pth : path.join(cwd, pth);
+};
- for (let i = 0, length = set.length; i < length; i += 2) {
- pos += set[i];
- if (pos > code) return false;
- pos += set[i + 1];
- if (pos >= code) return true;
- }
+const addExtensions = (file, extensions) => {
+ if (path.extname(file)) {
+ return `**/${file}`;
+ }
- return false;
-}
+ return `**/${file}.${getExtensions(extensions)}`;
+};
-function isIdentifierStart(code) {
- if (code < 65) return code === 36;
- if (code <= 90) return true;
- if (code < 97) return code === 95;
- if (code <= 122) return true;
+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}\``);
+ }
- if (code <= 0xffff) {
- return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
- }
+ if (options.extensions && !Array.isArray(options.extensions)) {
+ throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof options.extensions}\``);
+ }
- return isInAstralSet(code, astralIdentifierStartCodes);
-}
+ if (options.files && options.extensions) {
+ return options.files.map(x => path.posix.join(directory, addExtensions(x, options.extensions)));
+ }
-function isIdentifierChar(code) {
- if (code < 48) return code === 36;
- if (code < 58) return true;
- if (code < 65) return false;
- if (code <= 90) return true;
- if (code < 97) return code === 95;
- if (code <= 122) return true;
+ if (options.files) {
+ return options.files.map(x => path.posix.join(directory, `**/${x}`));
+ }
- if (code <= 0xffff) {
- return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
- }
+ if (options.extensions) {
+ return [path.posix.join(directory, `**/*.${getExtensions(options.extensions)}`)];
+ }
- return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
-}
+ return [path.posix.join(directory, '**')];
+};
-function isIdentifierName(name) {
- let isFirst = true;
+module.exports = async (input, options) => {
+ options = {
+ cwd: process.cwd(),
+ ...options
+ };
- for (let i = 0; i < name.length; i++) {
- let cp = name.charCodeAt(i);
+ if (typeof options.cwd !== 'string') {
+ throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``);
+ }
- if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
- const trail = name.charCodeAt(++i);
+ 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;
+ }));
- if ((trail & 0xfc00) === 0xdc00) {
- cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
- }
- }
+ return [].concat.apply([], globs); // eslint-disable-line prefer-spread
+};
- if (isFirst) {
- isFirst = false;
+module.exports.sync = (input, options) => {
+ options = {
+ cwd: process.cwd(),
+ ...options
+ };
- if (!isIdentifierStart(cp)) {
- return false;
- }
- } else if (!isIdentifierChar(cp)) {
- return false;
- }
- }
+ if (typeof options.cwd !== 'string') {
+ throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``);
+ }
+
+ 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
+};
- return !isFirst;
-}
/***/ }),
-/* 355 */
+/* 448 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+const {promisify} = __webpack_require__(234);
+const fs = __webpack_require__(253);
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.isKeyword = isKeyword;
-exports.isReservedWord = isReservedWord;
-exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
-exports.isStrictBindReservedWord = isStrictBindReservedWord;
-exports.isStrictReservedWord = isStrictReservedWord;
-const reservedWords = {
- keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
- strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
- strictBind: ["eval", "arguments"]
-};
-const keywords = new Set(reservedWords.keyword);
-const reservedWordsStrictSet = new Set(reservedWords.strict);
-const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
+async function isType(fsStatType, statsMethodName, filePath) {
+ if (typeof filePath !== 'string') {
+ throw new TypeError(`Expected a string, got ${typeof filePath}`);
+ }
-function isReservedWord(word, inModule) {
- return inModule && word === "await" || word === "enum";
-}
+ try {
+ const stats = await promisify(fs[fsStatType])(filePath);
+ return stats[statsMethodName]();
+ } catch (error) {
+ if (error.code === 'ENOENT') {
+ return false;
+ }
-function isStrictReservedWord(word, inModule) {
- return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
+ throw error;
+ }
}
-function isStrictBindOnlyReservedWord(word) {
- return reservedWordsStrictBindSet.has(word);
-}
+function isTypeSync(fsStatType, statsMethodName, filePath) {
+ if (typeof filePath !== 'string') {
+ throw new TypeError(`Expected a string, got ${typeof filePath}`);
+ }
-function isStrictBindReservedWord(word, inModule) {
- return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
-}
+ try {
+ return fs[fsStatType](filePath)[statsMethodName]();
+ } catch (error) {
+ if (error.code === 'ENOENT') {
+ return false;
+ }
-function isKeyword(word) {
- return keywords.has(word);
+ throw error;
+ }
}
+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');
+
+
/***/ }),
-/* 356 */
+/* 449 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const escapeStringRegexp = __webpack_require__(357);
-const ansiStyles = __webpack_require__(358);
-const stdoutColor = __webpack_require__(363).stdout;
-
-const template = __webpack_require__(365);
-
-const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');
-
-// `supportsColor.level` → `ansiStyles.color[name]` mapping
-const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];
+const {promisify} = __webpack_require__(234);
+const fs = __webpack_require__(253);
+const path = __webpack_require__(4);
+const fastGlob = __webpack_require__(378);
+const gitIgnore = __webpack_require__(450);
+const slash = __webpack_require__(451);
-// `color-convert` models to exclude from the Chalk API due to conflicts and such
-const skipModels = new Set(['gray']);
+const DEFAULT_IGNORE = [
+ '**/node_modules/**',
+ '**/flow-typed/**',
+ '**/coverage/**',
+ '**/.git'
+];
-const styles = Object.create(null);
+const readFileP = promisify(fs.readFile);
-function applyOptions(obj, options) {
- options = options || {};
+const mapGitIgnorePatternTo = base => ignore => {
+ if (ignore.startsWith('!')) {
+ return '!' + path.posix.join(base, ignore.slice(1));
+ }
- // 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;
-}
+ return path.posix.join(base, ignore);
+};
-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);
+const parseGitIgnore = (content, options) => {
+ const base = slash(path.relative(options.cwd, path.dirname(options.fileName)));
- chalk.template = function () {
- const args = [].slice.call(arguments);
- return chalkTag.apply(null, [chalk.template].concat(args));
- };
+ return content
+ .split(/\r?\n/)
+ .filter(Boolean)
+ .filter(line => !line.startsWith('#'))
+ .map(mapGitIgnorePatternTo(base));
+};
- Object.setPrototypeOf(chalk, Chalk.prototype);
- Object.setPrototypeOf(chalk.template, chalk);
+const reduceIgnore = files => {
+ return files.reduce((ignores, file) => {
+ ignores.add(parseGitIgnore(file.content, {
+ cwd: file.cwd,
+ fileName: file.filePath
+ }));
+ return ignores;
+ }, gitIgnore());
+};
- chalk.template.constructor = Chalk;
+const ensureAbsolutePathForCwd = (cwd, p) => {
+ if (path.isAbsolute(p)) {
+ if (p.startsWith(cwd)) {
+ return p;
+ }
- return chalk.template;
+ throw new Error(`Path ${p} is not in cwd ${cwd}`);
}
- applyOptions(this, options);
-}
+ return path.join(cwd, p);
+};
-// Use bright blue on Windows as the normal blue color is illegible
-if (isSimpleWindowsTerm) {
- ansiStyles.blue.open = '\u001B[94m';
-}
+const getIsIgnoredPredecate = (ignores, cwd) => {
+ return p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p))));
+};
-for (const key of Object.keys(ansiStyles)) {
- ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
+const getFile = async (file, cwd) => {
+ const filePath = path.join(cwd, file);
+ const content = await readFileP(filePath, 'utf8');
- styles[key] = {
- get() {
- const codes = ansiStyles[key];
- return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);
- }
+ return {
+ cwd,
+ filePath,
+ content
};
-}
-
-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;
- }
+const getFileSync = (file, cwd) => {
+ const filePath = path.join(cwd, file);
+ const content = fs.readFileSync(filePath, 'utf8');
- 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);
- };
- }
+ return {
+ cwd,
+ filePath,
+ content
};
-}
+};
-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 normalizeOptions = ({
+ ignore = [],
+ cwd = slash(process.cwd())
+} = {}) => {
+ return {ignore, cwd};
+};
- 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);
- };
- }
- };
-}
+module.exports = async options => {
+ options = normalizeOptions(options);
-const proto = Object.defineProperties(() => {}, styles);
+ const paths = await fastGlob('**/.gitignore', {
+ ignore: DEFAULT_IGNORE.concat(options.ignore),
+ cwd: options.cwd
+ });
-function build(_styles, _empty, key) {
- const builder = function () {
- return applyStyle.apply(builder, arguments);
- };
+ const files = await Promise.all(paths.map(file => getFile(file, options.cwd)));
+ const ignores = reduceIgnore(files);
- builder._styles = _styles;
- builder._empty = _empty;
+ return getIsIgnoredPredecate(ignores, options.cwd);
+};
- const self = this;
+module.exports.sync = options => {
+ options = normalizeOptions(options);
- Object.defineProperty(builder, 'level', {
- enumerable: true,
- get() {
- return self.level;
- },
- set(level) {
- self.level = level;
- }
+ const paths = fastGlob.sync('**/.gitignore', {
+ ignore: DEFAULT_IGNORE.concat(options.ignore),
+ cwd: options.cwd
});
- Object.defineProperty(builder, 'enabled', {
- enumerable: true,
- get() {
- return self.enabled;
- },
- set(enabled) {
- self.enabled = enabled;
- }
- });
-
- // See below for fix regarding invisible grey/dim combination on Windows
- builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';
-
- // `__proto__` is used because we must return a function, but there is
- // no way to create a function with a different prototype
- builder.__proto__ = proto; // eslint-disable-line no-proto
+ const files = paths.map(file => getFileSync(file, options.cwd));
+ const ignores = reduceIgnore(files);
- return builder;
-}
+ return getIsIgnoredPredecate(ignores, options.cwd);
+};
-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 '';
- }
+/***/ }),
+/* 450 */
+/***/ (function(module, exports) {
- if (argsLen > 1) {
- // Don't slice `arguments`, it prevents V8 optimizations
- for (let a = 1; a < argsLen; a++) {
- str += ' ' + args[a];
- }
- }
+// A simple implementation of make-array
+function makeArray (subject) {
+ return Array.isArray(subject)
+ ? subject
+ : [subject]
+}
- if (!this.enabled || this.level <= 0 || !str) {
- return this._empty ? '' : str;
- }
+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 = /^\.*\/|^\.+$/
- // 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 = '';
- }
+const SLASH = '/'
+const KEY_IGNORE = typeof Symbol !== 'undefined'
+ ? Symbol.for('node-ignore')
+ /* istanbul ignore next */
+ : 'node-ignore'
- 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 define = (object, key, value) =>
+ Object.defineProperty(object, key, {value})
- // 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}`);
- }
+const REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g
- // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue
- ansiStyles.dim.open = originalDim;
+// 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
+)
- return str;
+// See fixtures #59
+const cleanRangeBackSlash = slashes => {
+ const {length} = slashes
+ return slashes.slice(0, length - length % 2)
}
-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(' ');
- }
+// > 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`
- const args = [].slice.call(arguments, 2);
- const parts = [strings.raw[0]];
+// '`foo/`' should not continue with the '`..`'
+const REPLACERS = [
- for (let i = 1; i < strings.length; i++) {
- parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&'));
- parts.push(String(strings.raw[i]));
- }
+ // > Trailing spaces are ignored unless they are quoted with backslash ("\")
+ [
+ // (a\ ) -> (a )
+ // (a ) -> (a)
+ // (a \ ) -> (a )
+ /\\?\s+$/,
+ match => match.indexOf('\\') === 0
+ ? SPACE
+ : EMPTY
+ ],
- return template(chalk, parts.join(''));
-}
+ // replace (\ ) with ' '
+ [
+ /\\\s/g,
+ () => SPACE
+ ],
-Object.defineProperties(Chalk.prototype, styles);
+ // Escape metacharacters
+ // which is written down by users but means special for regular expressions.
-module.exports = Chalk(); // eslint-disable-line new-cap
-module.exports.supportsColor = stdoutColor;
-module.exports.default = module.exports; // For TypeScript
+ // > 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}`
+ ],
+ [
+ // > a question mark (?) matches a single character
+ /(?!\\)\?/g,
+ () => '[^/]'
+ ],
-/***/ }),
-/* 357 */
-/***/ (function(module, exports, __webpack_require__) {
+ // leading slash
+ [
-"use strict";
+ // > 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
+ /^\//,
+ () => '^'
+ ],
+ // replace special metacharacter slash after the leading slash
+ [
+ /\//g,
+ () => '\\/'
+ ],
-var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
+ [
+ // > 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 '\\*'
+ /^\^*\\\*\\\*\\\//,
-module.exports = function (str) {
- if (typeof str !== 'string') {
- throw new TypeError('Expected a string');
- }
+ // '**/foo' <-> 'foo'
+ () => '^(?:.*\\/)?'
+ ],
- return str.replace(matchOperatorsRe, '\\$&');
-};
+ // 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
+ // 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.
+ ? '(?:^|\\/)'
-/***/ }),
-/* 358 */
-/***/ (function(module, exports, __webpack_require__) {
+ // > Otherwise, Git treats the pattern as a shell glob suitable for
+ // > consumption by fnmatch(3)
+ : '^'
+ }
+ ],
-"use strict";
-/* WEBPACK VAR INJECTION */(function(module) {
-const colorConvert = __webpack_require__(359);
+ // two globstars
+ [
+ // Use lookahead assertions so that we could match more than one `'/**'`
+ /\\\/\\\*\\\*(?=\\\/|$)/g,
-const wrapAnsi16 = (fn, offset) => function () {
- const code = fn.apply(colorConvert, arguments);
- return `\u001B[${code + offset}m`;
-};
+ // Zero, one or several directories
+ // should not use '*', or it will be replaced by the next replacer
-const wrapAnsi256 = (fn, offset) => function () {
- const code = fn.apply(colorConvert, arguments);
- return `\u001B[${38 + offset};5;${code}m`;
-};
+ // Check if it is not the last `'/**'`
+ (_, index, str) => index + 6 < str.length
-const wrapAnsi16m = (fn, offset) => function () {
- const rgb = fn.apply(colorConvert, arguments);
- return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
-};
+ // 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.
+ // '/**/'
+ ? '(?:\\/[^\\/]+)*'
-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],
+ // case: /**
+ // > A trailing `"/**"` matches everything inside.
- // 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],
+ // #21: everything inside but it should not include the current folder
+ : '\\/.+'
+ ],
- // 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]
- }
- };
+ // intermediate wildcards
+ [
+ // Never replace escaped '*'
+ // ignore rule '\*' will match the path '*'
- // Fix humans
- styles.color.grey = styles.color.gray;
+ // 'abc.*/' -> go
+ // 'abc.*' -> skip this rule
+ /(^|[^\\]+)\\\*(?=.+)/g,
- for (const groupName of Object.keys(styles)) {
- const group = styles[groupName];
+ // '*.js' matches '.js'
+ // '*.js' doesn't match 'abc'
+ (_, p1) => `${p1}[^\\/]*`
+ ],
- for (const styleName of Object.keys(group)) {
- const style = group[styleName];
+ [
+ // unescape, revert step 3 except for back slash
+ // For example, if a user escape a '\\*',
+ // after step 3, the result will be '\\\\\\*'
+ /\\\\\\(?=[$.|*+(){^])/g,
+ () => ESCAPE
+ ],
- styles[styleName] = {
- open: `\u001B[${style[0]}m`,
- close: `\u001B[${style[1]}m`
- };
+ [
+ // '\\\\' -> '\\'
+ /\\\\/g,
+ () => ESCAPE
+ ],
- group[styleName] = styles[styleName];
+ [
+ // > The range notation, e.g. [a-zA-Z],
+ // > can be used to match one of the characters in a range.
- codes.set(style[0], style[1]);
- }
+ // `\` 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\\\\]'
+ : '[]'
+ : '[]'
+ ],
- Object.defineProperty(styles, groupName, {
- value: group,
- enumerable: false
- });
+ // ending
+ [
+ // 'js' will not match 'js.'
+ // 'ab' will not match 'abc'
+ /(?:[^*])$/,
- Object.defineProperty(styles, 'codes', {
- value: codes,
- enumerable: false
- });
- }
+ // 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
- const ansi2ansi = n => n;
- const rgb2rgb = (r, g, b) => [r, g, b];
+ // > 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.
- styles.color.close = '\u001B[39m';
- styles.bgColor.close = '\u001B[49m';
+ // '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}(?=$|\\/$)`
+ ],
- styles.color.ansi = {
- ansi: wrapAnsi16(ansi2ansi, 0)
- };
- styles.color.ansi256 = {
- ansi256: wrapAnsi256(ansi2ansi, 0)
- };
- styles.color.ansi16m = {
- rgb: wrapAnsi16m(rgb2rgb, 0)
- };
+ // trailing wildcard
+ [
+ /(\^|\\\/)?\\\*$/,
+ (_, p1) => {
+ const prefix = p1
+ // '\^':
+ // '/*' does not match EMPTY
+ // '/*' does not match everything
- styles.bgColor.ansi = {
- ansi: wrapAnsi16(ansi2ansi, 10)
- };
- styles.bgColor.ansi256 = {
- ansi256: wrapAnsi256(ansi2ansi, 10)
- };
- styles.bgColor.ansi16m = {
- rgb: wrapAnsi16m(rgb2rgb, 10)
- };
+ // '\\\/':
+ // 'abc/*' does not match 'abc/'
+ ? `${p1}[^/]+`
- for (let key of Object.keys(colorConvert)) {
- if (typeof colorConvert[key] !== 'object') {
- continue;
- }
+ // 'a*' matches 'a'
+ // 'a*' matches 'aa'
+ : '[^/]*'
- const suite = colorConvert[key];
+ return `${prefix}(?=$|\\/$)`
+ }
+ ],
+]
- if (key === 'ansi16') {
- key = 'ansi';
- }
+// A simple cache, because an ignore rule only has only one certain meaning
+const regexCache = Object.create(null)
- if ('ansi16' in suite) {
- styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
- styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
- }
+// @param {pattern}
+const makeRegex = (pattern, negative, ignorecase) => {
+ const r = regexCache[pattern]
+ if (r) {
+ return r
+ }
- if ('ansi256' in suite) {
- styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
- styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
- }
+ // const replacers = negative
+ // ? NEGATIVE_REPLACERS
+ // : POSITIVE_REPLACERS
- if ('rgb' in suite) {
- styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
- styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
- }
- }
+ const source = REPLACERS.reduce(
+ (prev, current) => prev.replace(current[0], current[1].bind(pattern)),
+ pattern
+ )
- return styles;
+ return regexCache[pattern] = ignorecase
+ ? new RegExp(source, 'i')
+ : new RegExp(source)
}
-// Make the export immutable
-Object.defineProperty(module, 'exports', {
- enumerable: true,
- get: assembleStyles
-});
+const isString = subject => typeof subject === 'string'
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(116)(module)))
+// > 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)
-/***/ }),
-/* 359 */
-/***/ (function(module, exports, __webpack_require__) {
+ // > A line starting with # serves as a comment.
+ && pattern.indexOf('#') !== 0
-var conversions = __webpack_require__(360);
-var route = __webpack_require__(362);
+const splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF)
-var convert = {};
+class IgnoreRule {
+ constructor (
+ origin,
+ pattern,
+ negative,
+ regex
+ ) {
+ this.origin = origin
+ this.pattern = pattern
+ this.negative = negative
+ this.regex = regex
+ }
+}
-var models = Object.keys(conversions);
+const createRule = (pattern, ignorecase) => {
+ const origin = pattern
+ let negative = false
-function wrapRaw(fn) {
- var wrappedFn = function (args) {
- if (args === undefined || args === null) {
- return args;
- }
+ // > An optional prefix "!" which negates the pattern;
+ if (pattern.indexOf('!') === 0) {
+ negative = true
+ pattern = pattern.substr(1)
+ }
- if (arguments.length > 1) {
- args = Array.prototype.slice.call(arguments);
- }
+ 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, '#')
- return fn(args);
- };
+ const regex = makeRegex(pattern, negative, ignorecase)
- // preserve .conversion property if there is one
- if ('conversion' in fn) {
- wrappedFn.conversion = fn.conversion;
- }
+ return new IgnoreRule(
+ origin,
+ pattern,
+ negative,
+ regex
+ )
+}
- return wrappedFn;
+const throwError = (message, Ctor) => {
+ throw new Ctor(message)
}
-function wrapRounded(fn) {
- var wrappedFn = function (args) {
- if (args === undefined || args === null) {
- return args;
- }
+const checkPath = (path, originalPath, doThrow) => {
+ if (!isString(path)) {
+ return doThrow(
+ `path must be a string, but got \`${originalPath}\``,
+ TypeError
+ )
+ }
- if (arguments.length > 1) {
- args = Array.prototype.slice.call(arguments);
- }
+ // We don't know if we should ignore EMPTY, so throw
+ if (!path) {
+ return doThrow(`path must not be empty`, TypeError)
+ }
- var result = fn(args);
+ // 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
+ )
+ }
- // we're assuming the result is an array here.
- // see notice in conversions.js; don't use box types
- // in conversion functions.
- if (typeof result === 'object') {
- for (var len = result.length, i = 0; i < len; i++) {
- result[i] = Math.round(result[i]);
- }
- }
+ return true
+}
- return result;
- };
+const isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path)
- // preserve .conversion property if there is one
- if ('conversion' in fn) {
- wrappedFn.conversion = fn.conversion;
- }
+checkPath.isNotRelative = isNotRelative
+checkPath.convert = p => p
- return wrappedFn;
-}
+class Ignore {
+ constructor ({
+ ignorecase = true
+ } = {}) {
+ this._rules = []
+ this._ignorecase = ignorecase
+ define(this, KEY_IGNORE, true)
+ this._initCache()
+ }
-models.forEach(function (fromModel) {
- convert[fromModel] = {};
+ _initCache () {
+ this._ignoreCache = Object.create(null)
+ this._testCache = Object.create(null)
+ }
- Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
- Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
+ _addPattern (pattern) {
+ // #32
+ if (pattern && pattern[KEY_IGNORE]) {
+ this._rules = this._rules.concat(pattern._rules)
+ this._added = true
+ return
+ }
- var routes = route(fromModel);
- var routeModels = Object.keys(routes);
+ if (checkPattern(pattern)) {
+ const rule = createRule(pattern, this._ignorecase)
+ this._added = true
+ this._rules.push(rule)
+ }
+ }
- routeModels.forEach(function (toModel) {
- var fn = routes[toModel];
+ // @param {Array | string | Ignore} pattern
+ add (pattern) {
+ this._added = false
- convert[fromModel][toModel] = wrapRounded(fn);
- convert[fromModel][toModel].raw = wrapRaw(fn);
- });
-});
+ makeArray(
+ isString(pattern)
+ ? splitPattern(pattern)
+ : pattern
+ ).forEach(this._addPattern, this)
-module.exports = convert;
+ // Some rules have just added to the ignore,
+ // making the behavior changed.
+ if (this._added) {
+ this._initCache()
+ }
+ return this
+ }
-/***/ }),
-/* 360 */
-/***/ (function(module, exports, __webpack_require__) {
+ // legacy
+ addPattern (pattern) {
+ return this.add(pattern)
+ }
-/* MIT license */
-var cssKeywords = __webpack_require__(361);
+ // | ignored : unignored
+ // negative | 0:0 | 0:1 | 1:0 | 1:1
+ // -------- | ------- | ------- | ------- | --------
+ // 0 | TEST | TEST | SKIP | X
+ // 1 | TESTIF | SKIP | TEST | X
-// NOTE: conversions should only return primitive values (i.e. arrays, or
-// values that give correct `typeof` results).
-// do not use box values types (i.e. Number(), String(), etc.)
+ // - SKIP: always skip
+ // - TEST: always test
+ // - TESTIF: only test if checkUnignored
+ // - X: that never happen
-var reverseKeywords = {};
-for (var key in cssKeywords) {
- if (cssKeywords.hasOwnProperty(key)) {
- reverseKeywords[cssKeywords[key]] = key;
- }
-}
+ // @param {boolean} whether should check if the path is unignored,
+ // setting `checkUnignored` to `false` could reduce additional
+ // path matching.
-var convert = module.exports = {
- rgb: {channels: 3, labels: 'rgb'},
- hsl: {channels: 3, labels: 'hsl'},
- hsv: {channels: 3, labels: 'hsv'},
- hwb: {channels: 3, labels: 'hwb'},
- cmyk: {channels: 4, labels: 'cmyk'},
- xyz: {channels: 3, labels: 'xyz'},
- lab: {channels: 3, labels: 'lab'},
- lch: {channels: 3, labels: 'lch'},
- hex: {channels: 1, labels: ['hex']},
- keyword: {channels: 1, labels: ['keyword']},
- ansi16: {channels: 1, labels: ['ansi16']},
- ansi256: {channels: 1, labels: ['ansi256']},
- hcg: {channels: 3, labels: ['h', 'c', 'g']},
- apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
- gray: {channels: 1, labels: ['gray']}
-};
+ // @returns {TestResult} true if a file is ignored
+ _testOne (path, checkUnignored) {
+ let ignored = false
+ let unignored = false
-// hide .channels and .labels properties
-for (var model in convert) {
- if (convert.hasOwnProperty(model)) {
- if (!('channels' in convert[model])) {
- throw new Error('missing channels property: ' + model);
- }
+ this._rules.forEach(rule => {
+ const {negative} = rule
+ if (
+ unignored === negative && ignored !== unignored
+ || negative && !ignored && !unignored && !checkUnignored
+ ) {
+ return
+ }
- if (!('labels' in convert[model])) {
- throw new Error('missing channel labels property: ' + model);
- }
+ const matched = rule.regex.test(path)
- if (convert[model].labels.length !== convert[model].channels) {
- throw new Error('channel and label counts mismatch: ' + model);
- }
+ if (matched) {
+ ignored = !negative
+ unignored = negative
+ }
+ })
- var channels = convert[model].channels;
- var labels = convert[model].labels;
- delete convert[model].channels;
- delete convert[model].labels;
- Object.defineProperty(convert[model], 'channels', {value: channels});
- Object.defineProperty(convert[model], 'labels', {value: labels});
- }
-}
+ return {
+ ignored,
+ unignored
+ }
+ }
-convert.rgb.hsl = function (rgb) {
- var r = rgb[0] / 255;
- var g = rgb[1] / 255;
- var b = rgb[2] / 255;
- var min = Math.min(r, g, b);
- var max = Math.max(r, g, b);
- var delta = max - min;
- var h;
- var s;
- var l;
+ // @returns {TestResult}
+ _test (originalPath, cache, checkUnignored, slices) {
+ const path = originalPath
+ // Supports nullable path
+ && checkPath.convert(originalPath)
- if (max === min) {
- h = 0;
- } else if (r === max) {
- h = (g - b) / delta;
- } else if (g === max) {
- h = 2 + (b - r) / delta;
- } else if (b === max) {
- h = 4 + (r - g) / delta;
- }
+ checkPath(path, originalPath, throwError)
- h = Math.min(h * 60, 360);
+ return this._t(path, cache, checkUnignored, slices)
+ }
- if (h < 0) {
- h += 360;
- }
+ _t (path, cache, checkUnignored, slices) {
+ if (path in cache) {
+ return cache[path]
+ }
- l = (min + max) / 2;
+ if (!slices) {
+ // path/to/a.js
+ // ['path', 'to', 'a.js']
+ slices = path.split(SLASH)
+ }
- if (max === min) {
- s = 0;
- } else if (l <= 0.5) {
- s = delta / (max + min);
- } else {
- s = delta / (2 - max - min);
- }
+ slices.pop()
- return [h, s * 100, l * 100];
-};
+ // If the path has no parent directory, just test it
+ if (!slices.length) {
+ return cache[path] = this._testOne(path, checkUnignored)
+ }
-convert.rgb.hsv = function (rgb) {
- var rdif;
- var gdif;
- var bdif;
- var h;
- var s;
+ const parent = this._t(
+ slices.join(SLASH) + SLASH,
+ cache,
+ checkUnignored,
+ slices
+ )
- var r = rgb[0] / 255;
- var g = rgb[1] / 255;
- var b = rgb[2] / 255;
- var v = Math.max(r, g, b);
- var diff = v - Math.min(r, g, b);
- var diffc = function (c) {
- return (v - c) / 6 / diff + 1 / 2;
- };
+ // 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 (diff === 0) {
- h = s = 0;
- } else {
- s = diff / v;
- rdif = diffc(r);
- gdif = diffc(g);
- bdif = diffc(b);
+ ignores (path) {
+ return this._test(path, this._ignoreCache, false).ignored
+ }
- if (r === v) {
- h = bdif - gdif;
- } else if (g === v) {
- h = (1 / 3) + rdif - bdif;
- } else if (b === v) {
- h = (2 / 3) + gdif - rdif;
- }
- if (h < 0) {
- h += 1;
- } else if (h > 1) {
- h -= 1;
- }
- }
+ createFilter () {
+ return path => !this.ignores(path)
+ }
- return [
- h * 360,
- s * 100,
- v * 100
- ];
-};
+ filter (paths) {
+ return makeArray(paths).filter(this.createFilter())
+ }
-convert.rgb.hwb = function (rgb) {
- var r = rgb[0];
- var g = rgb[1];
- var b = rgb[2];
- var h = convert.rgb.hsl(rgb)[0];
- var w = 1 / 255 * Math.min(r, Math.min(g, b));
+ // @returns {TestResult}
+ test (path) {
+ return this._test(path, this._testCache, true)
+ }
+}
- b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
+const factory = options => new Ignore(options)
- return [h, w * 100, b * 100];
-};
+const returnFalse = () => false
-convert.rgb.cmyk = function (rgb) {
- var r = rgb[0] / 255;
- var g = rgb[1] / 255;
- var b = rgb[2] / 255;
- var c;
- var m;
- var y;
- var k;
+const isPathValid = path =>
+ checkPath(path && checkPath.convert(path), path, returnFalse)
- k = Math.min(1 - r, 1 - g, 1 - b);
- c = (1 - r - k) / (1 - k) || 0;
- m = (1 - g - k) / (1 - k) || 0;
- y = (1 - b - k) / (1 - k) || 0;
+factory.isPathValid = isPathValid
- return [c * 100, m * 100, y * 100, k * 100];
-};
+// Fixes typescript
+factory.default = factory
-/**
- * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
- * */
-function comparativeDistance(x, y) {
- return (
- Math.pow(x[0] - y[0], 2) +
- Math.pow(x[1] - y[1], 2) +
- Math.pow(x[2] - y[2], 2)
- );
+module.exports = factory
+
+// 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, '/')
+
+ 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)
}
-convert.rgb.keyword = function (rgb) {
- var reversed = reverseKeywords[rgb];
- if (reversed) {
- return reversed;
- }
- var currentClosestDistance = Infinity;
- var currentClosestKeyword;
+/***/ }),
+/* 451 */
+/***/ (function(module, exports, __webpack_require__) {
- for (var keyword in cssKeywords) {
- if (cssKeywords.hasOwnProperty(keyword)) {
- var value = cssKeywords[keyword];
+"use strict";
- // Compute comparative distance
- var distance = comparativeDistance(rgb, value);
+module.exports = path => {
+ const isExtendedLengthPath = /^\\\\\?\\/.test(path);
+ const hasNonAscii = /[^\u0000-\u0080]+/.test(path); // eslint-disable-line no-control-regex
- // Check if its less, if so set as closest
- if (distance < currentClosestDistance) {
- currentClosestDistance = distance;
- currentClosestKeyword = keyword;
- }
- }
+ if (isExtendedLengthPath || hasNonAscii) {
+ return path;
}
- return currentClosestKeyword;
+ return path.replace(/\\/g, '/');
};
-convert.keyword.rgb = function (keyword) {
- return cssKeywords[keyword];
-};
-convert.rgb.xyz = function (rgb) {
- var r = rgb[0] / 255;
- var g = rgb[1] / 255;
- var b = rgb[2] / 255;
+/***/ }),
+/* 452 */
+/***/ (function(module, exports, __webpack_require__) {
- // assume sRGB
- r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);
- g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);
- b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);
+"use strict";
- var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
- var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
- var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
+const {Transform} = __webpack_require__(294);
- return [x * 100, y * 100, z * 100];
-};
+class ObjectTransform extends Transform {
+ constructor() {
+ super({
+ objectMode: true
+ });
+ }
+}
-convert.rgb.lab = function (rgb) {
- var xyz = convert.rgb.xyz(rgb);
- var x = xyz[0];
- var y = xyz[1];
- var z = xyz[2];
- var l;
- var a;
- var b;
+class FilterStream extends ObjectTransform {
+ constructor(filter) {
+ super();
+ this._filter = filter;
+ }
- x /= 95.047;
- y /= 100;
- z /= 108.883;
+ _transform(data, encoding, callback) {
+ if (this._filter(data)) {
+ this.push(data);
+ }
- x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
- y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
- z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
+ callback();
+ }
+}
- l = (116 * y) - 16;
- a = 500 * (x - y);
- b = 200 * (y - z);
+class UniqueStream extends ObjectTransform {
+ constructor() {
+ super();
+ this._pushed = new Set();
+ }
- return [l, a, b];
-};
-
-convert.hsl.rgb = function (hsl) {
- var h = hsl[0] / 360;
- var s = hsl[1] / 100;
- var l = hsl[2] / 100;
- var t1;
- var t2;
- var t3;
- var rgb;
- var val;
-
- if (s === 0) {
- val = l * 255;
- return [val, val, val];
- }
-
- if (l < 0.5) {
- t2 = l * (1 + s);
- } else {
- t2 = l + s - l * s;
- }
-
- t1 = 2 * l - t2;
-
- rgb = [0, 0, 0];
- for (var i = 0; i < 3; i++) {
- t3 = h + 1 / 3 * -(i - 1);
- if (t3 < 0) {
- t3++;
- }
- if (t3 > 1) {
- t3--;
- }
-
- if (6 * t3 < 1) {
- val = t1 + (t2 - t1) * 6 * t3;
- } else if (2 * t3 < 1) {
- val = t2;
- } else if (3 * t3 < 2) {
- val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
- } else {
- val = t1;
+ _transform(data, encoding, callback) {
+ if (!this._pushed.has(data)) {
+ this.push(data);
+ this._pushed.add(data);
}
- rgb[i] = val * 255;
+ callback();
}
+}
- return rgb;
+module.exports = {
+ FilterStream,
+ UniqueStream
};
-convert.hsl.hsv = function (hsl) {
- var h = hsl[0];
- var s = hsl[1] / 100;
- var l = hsl[2] / 100;
- var smin = s;
- var lmin = Math.max(l, 0.01);
- var sv;
- var v;
-
- l *= 2;
- s *= (l <= 1) ? l : 2 - l;
- smin *= lmin <= 1 ? lmin : 2 - lmin;
- v = (l + s) / 2;
- sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
- return [h, sv * 100, v * 100];
-};
+/***/ }),
+/* 453 */
+/***/ (function(module, exports, __webpack_require__) {
-convert.hsv.rgb = function (hsv) {
- var h = hsv[0] / 60;
- var s = hsv[1] / 100;
- var v = hsv[2] / 100;
- var hi = Math.floor(h) % 6;
+"use strict";
- var f = h - Math.floor(h);
- var p = 255 * v * (1 - s);
- var q = 255 * v * (1 - (s * f));
- var t = 255 * v * (1 - (s * (1 - f)));
- v *= 255;
+const path = __webpack_require__(4);
- switch (hi) {
- case 0:
- return [v, t, p];
- case 1:
- return [q, v, p];
- case 2:
- return [p, v, t];
- case 3:
- return [p, q, v];
- case 4:
- return [t, p, v];
- case 5:
- return [v, p, q];
- }
-};
+module.exports = path_ => {
+ let cwd = process.cwd();
-convert.hsv.hsl = function (hsv) {
- var h = hsv[0];
- var s = hsv[1] / 100;
- var v = hsv[2] / 100;
- var vmin = Math.max(v, 0.01);
- var lmin;
- var sl;
- var l;
+ path_ = path.resolve(path_);
- l = (2 - s) * v;
- lmin = (2 - s) * vmin;
- sl = s * vmin;
- sl /= (lmin <= 1) ? lmin : 2 - lmin;
- sl = sl || 0;
- l /= 2;
+ if (process.platform === 'win32') {
+ cwd = cwd.toLowerCase();
+ path_ = path_.toLowerCase();
+ }
- return [h, sl * 100, l * 100];
+ return path_ === cwd;
};
-// http://dev.w3.org/csswg/css-color/#hwb-to-rgb
-convert.hwb.rgb = function (hwb) {
- var h = hwb[0] / 360;
- var wh = hwb[1] / 100;
- var bl = hwb[2] / 100;
- var ratio = wh + bl;
- var i;
- var v;
- var f;
- var n;
- // wh + bl cant be > 1
- if (ratio > 1) {
- wh /= ratio;
- bl /= ratio;
- }
+/***/ }),
+/* 454 */
+/***/ (function(module, exports, __webpack_require__) {
- i = Math.floor(6 * h);
- v = 1 - bl;
- f = 6 * h - i;
+"use strict";
- if ((i & 0x01) !== 0) {
- f = 1 - f;
- }
+const path = __webpack_require__(4);
- n = wh + f * (v - wh); // linear interpolation
+module.exports = (childPath, parentPath) => {
+ childPath = path.resolve(childPath);
+ parentPath = path.resolve(parentPath);
- var r;
- var g;
- var b;
- switch (i) {
- default:
- case 6:
- case 0: r = v; g = n; b = wh; break;
- case 1: r = n; g = v; b = wh; break;
- case 2: r = wh; g = v; b = n; break;
- case 3: r = wh; g = n; b = v; break;
- case 4: r = n; g = wh; b = v; break;
- case 5: r = v; g = wh; b = n; break;
+ if (process.platform === 'win32') {
+ childPath = childPath.toLowerCase();
+ parentPath = parentPath.toLowerCase();
}
- return [r * 255, g * 255, b * 255];
-};
-
-convert.cmyk.rgb = function (cmyk) {
- var c = cmyk[0] / 100;
- var m = cmyk[1] / 100;
- var y = cmyk[2] / 100;
- var k = cmyk[3] / 100;
- var r;
- var g;
- var b;
+ if (childPath === parentPath) {
+ return false;
+ }
- r = 1 - Math.min(1, c * (1 - k) + k);
- g = 1 - Math.min(1, m * (1 - k) + k);
- b = 1 - Math.min(1, y * (1 - k) + k);
+ childPath += path.sep;
+ parentPath += path.sep;
- return [r * 255, g * 255, b * 255];
+ return childPath.startsWith(parentPath);
};
-convert.xyz.rgb = function (xyz) {
- var x = xyz[0] / 100;
- var y = xyz[1] / 100;
- var z = xyz[2] / 100;
- var r;
- var g;
- var b;
- r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
- g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
- b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
+/***/ }),
+/* 455 */
+/***/ (function(module, exports, __webpack_require__) {
- // assume sRGB
- r = r > 0.0031308
- ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)
- : r * 12.92;
+const assert = __webpack_require__(283)
+const path = __webpack_require__(4)
+const fs = __webpack_require__(253)
+let glob = undefined
+try {
+ glob = __webpack_require__(365)
+} catch (_err) {
+ // treat glob as optional.
+}
- g = g > 0.0031308
- ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)
- : g * 12.92;
+const defaultGlobOpts = {
+ nosort: true,
+ silent: true
+}
- b = b > 0.0031308
- ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)
- : b * 12.92;
+// for EMFILE handling
+let timeout = 0
- r = Math.min(Math.max(0, r), 1);
- g = Math.min(Math.max(0, g), 1);
- b = Math.min(Math.max(0, b), 1);
+const isWindows = (process.platform === "win32")
- return [r * 255, g * 255, b * 255];
-};
+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]
+ })
-convert.xyz.lab = function (xyz) {
- var x = xyz[0];
- var y = xyz[1];
- var z = xyz[2];
- var l;
- var a;
- var b;
+ 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
+}
- x /= 95.047;
- y /= 100;
- z /= 108.883;
+const rimraf = (p, options, cb) => {
+ if (typeof options === 'function') {
+ cb = options
+ options = {}
+ }
- x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
- y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
- z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
+ 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')
- l = (116 * y) - 16;
- a = 500 * (x - y);
- b = 200 * (y - z);
+ defaults(options)
- return [l, a, b];
-};
+ let busyTries = 0
+ let errState = null
+ let n = 0
-convert.lab.xyz = function (lab) {
- var l = lab[0];
- var a = lab[1];
- var b = lab[2];
- var x;
- var y;
- var z;
+ const next = (er) => {
+ errState = errState || er
+ if (--n === 0)
+ cb(errState)
+ }
- y = (l + 16) / 116;
- x = a / 500 + y;
- z = y - b / 200;
+ const afterGlob = (er, results) => {
+ if (er)
+ return cb(er)
- var y2 = Math.pow(y, 3);
- var x2 = Math.pow(x, 3);
- var z2 = Math.pow(z, 3);
- y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
- x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
- z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
+ n = results.length
+ if (n === 0)
+ return cb()
- x *= 95.047;
- y *= 100;
- z *= 108.883;
+ 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)
+ }
- return [x, y, z];
-};
+ // this one won't happen if graceful-fs is used.
+ if (er.code === "EMFILE" && timeout < options.emfileWait) {
+ return setTimeout(() => rimraf_(p, options, CB), timeout ++)
+ }
-convert.lab.lch = function (lab) {
- var l = lab[0];
- var a = lab[1];
- var b = lab[2];
- var hr;
- var h;
- var c;
+ // already gone
+ if (er.code === "ENOENT") er = null
+ }
- hr = Math.atan2(b, a);
- h = hr * 360 / 2 / Math.PI;
+ timeout = 0
+ next(er)
+ }
+ rimraf_(p, options, CB)
+ })
+ }
- if (h < 0) {
- h += 360;
- }
+ if (options.disableGlob || !glob.hasMagic(p))
+ return afterGlob(null, [p])
- c = Math.sqrt(a * a + b * b);
+ options.lstat(p, (er, stat) => {
+ if (!er)
+ return afterGlob(null, [p])
- return [l, c, h];
-};
+ glob(p, options.glob, afterGlob)
+ })
-convert.lch.lab = function (lch) {
- var l = lch[0];
- var c = lch[1];
- var h = lch[2];
- var a;
- var b;
- var hr;
+}
- hr = h / 360 * 2 * Math.PI;
- a = c * Math.cos(hr);
- b = c * Math.sin(hr);
+// 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')
- return [l, a, b];
-};
+ // 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)
-convert.rgb.ansi16 = function (args) {
- var r = args[0];
- var g = args[1];
- var b = args[2];
- var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization
+ // Windows can EPERM on stat. Life is suffering.
+ if (er && er.code === "EPERM" && isWindows)
+ fixWinEPERM(p, options, er, cb)
- value = Math.round(value / 50);
+ if (st && st.isDirectory())
+ return rmdir(p, options, er, cb)
- if (value === 0) {
- return 30;
- }
+ 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)
+ })
+ })
+}
- var ansi = 30
- + ((Math.round(b / 255) << 2)
- | (Math.round(g / 255) << 1)
- | Math.round(r / 255));
+const fixWinEPERM = (p, options, er, cb) => {
+ assert(p)
+ assert(options)
+ assert(typeof cb === 'function')
- if (value === 2) {
- ansi += 60;
- }
+ 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)
+ })
+ })
+}
- return ansi;
-};
+const fixWinEPERMSync = (p, options, er) => {
+ assert(p)
+ assert(options)
-convert.hsv.ansi16 = function (args) {
- // optimization here; we already know the value and don't need to get
- // it converted for us.
- return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
-};
+ try {
+ options.chmodSync(p, 0o666)
+ } catch (er2) {
+ if (er2.code === "ENOENT")
+ return
+ else
+ throw er
+ }
-convert.rgb.ansi256 = function (args) {
- var r = args[0];
- var g = args[1];
- var b = args[2];
+ let stats
+ try {
+ stats = options.statSync(p)
+ } catch (er3) {
+ if (er3.code === "ENOENT")
+ return
+ else
+ throw er
+ }
- // we use the extended greyscale palette here, with the exception of
- // black and white. normal palette only has 4 greyscale shades.
- if (r === g && g === b) {
- if (r < 8) {
- return 16;
- }
+ if (stats.isDirectory())
+ rmdirSync(p, options, er)
+ else
+ options.unlinkSync(p)
+}
- if (r > 248) {
- return 231;
- }
+const rmdir = (p, options, originalEr, cb) => {
+ assert(p)
+ assert(options)
+ assert(typeof cb === 'function')
- return Math.round(((r - 8) / 247) * 24) + 232;
- }
+ // 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 ansi = 16
- + (36 * Math.round(r / 255 * 5))
- + (6 * Math.round(g / 255 * 5))
- + Math.round(b / 255 * 5);
+const rmkids = (p, options, cb) => {
+ assert(p)
+ assert(options)
+ assert(typeof cb === 'function')
- return ansi;
-};
+ 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)
+ })
+ })
+ })
+}
-convert.ansi16.rgb = function (args) {
- var color = args % 10;
+// 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)
- // handle greyscale
- if (color === 0 || color === 7) {
- if (args > 50) {
- color += 3.5;
- }
+ 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')
- color = color / 10.5 * 255;
+ let results
- return [color, color, color];
- }
+ if (options.disableGlob || !glob.hasMagic(p)) {
+ results = [p]
+ } else {
+ try {
+ options.lstatSync(p)
+ results = [p]
+ } catch (er) {
+ results = glob.sync(p, options.glob)
+ }
+ }
- var mult = (~~(args > 50) + 1) * 0.5;
- var r = ((color & 1) * mult) * 255;
- var g = (((color >> 1) & 1) * mult) * 255;
- var b = (((color >> 2) & 1) * mult) * 255;
+ if (!results.length)
+ return
- return [r, g, b];
-};
+ for (let i = 0; i < results.length; i++) {
+ const p = results[i]
-convert.ansi256.rgb = function (args) {
- // handle greyscale
- if (args >= 232) {
- var c = (args - 232) * 10 + 8;
- return [c, c, c];
- }
+ let st
+ try {
+ st = options.lstatSync(p)
+ } catch (er) {
+ if (er.code === "ENOENT")
+ return
- args -= 16;
+ // Windows can EPERM on stat. Life is suffering.
+ if (er.code === "EPERM" && isWindows)
+ fixWinEPERMSync(p, options, er)
+ }
- var rem;
- var r = Math.floor(args / 36) / 5 * 255;
- var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
- var b = (rem % 6) / 5 * 255;
+ 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
- return [r, g, b];
-};
+ rmdirSync(p, options, er)
+ }
+ }
+}
-convert.rgb.hex = function (args) {
- var integer = ((Math.round(args[0]) & 0xFF) << 16)
- + ((Math.round(args[1]) & 0xFF) << 8)
- + (Math.round(args[2]) & 0xFF);
+const rmdirSync = (p, options, originalEr) => {
+ assert(p)
+ assert(options)
- var string = integer.toString(16).toUpperCase();
- return '000000'.substring(string.length) + string;
-};
+ 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)
+ }
+}
-convert.hex.rgb = function (args) {
- var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
- if (!match) {
- return [0, 0, 0];
- }
+const rmkidsSync = (p, options) => {
+ assert(p)
+ assert(options)
+ options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))
- var colorString = match[0];
+ // 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 (match[0].length === 3) {
- colorString = colorString.split('').map(function (char) {
- return char + char;
- }).join('');
- }
+module.exports = rimraf
+rimraf.sync = rimrafSync
- var integer = parseInt(colorString, 16);
- var r = (integer >> 16) & 0xFF;
- var g = (integer >> 8) & 0xFF;
- var b = integer & 0xFF;
- return [r, g, b];
-};
+/***/ }),
+/* 456 */
+/***/ (function(module, exports, __webpack_require__) {
-convert.rgb.hcg = function (rgb) {
- var r = rgb[0] / 255;
- var g = rgb[1] / 255;
- var b = rgb[2] / 255;
- var max = Math.max(Math.max(r, g), b);
- var min = Math.min(Math.min(r, g), b);
- var chroma = (max - min);
- var grayscale;
- var hue;
+"use strict";
- if (chroma < 1) {
- grayscale = min / (1 - chroma);
- } else {
- grayscale = 0;
- }
+const AggregateError = __webpack_require__(457);
- if (chroma <= 0) {
- hue = 0;
- } else
- if (max === r) {
- hue = ((g - b) / chroma) % 6;
- } else
- if (max === g) {
- hue = 2 + (b - r) / chroma;
- } else {
- hue = 4 + (r - g) / chroma + 4;
- }
+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');
+ }
- hue /= 6;
- hue %= 1;
+ if (!(typeof concurrency === 'number' && concurrency >= 1)) {
+ throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${concurrency}\` (${typeof concurrency})`);
+ }
- return [hue * 360, chroma * 100, grayscale * 100];
-};
+ const ret = [];
+ const errors = [];
+ const iterator = iterable[Symbol.iterator]();
+ let isRejected = false;
+ let isIterableDone = false;
+ let resolvingCount = 0;
+ let currentIndex = 0;
-convert.hsl.hcg = function (hsl) {
- var s = hsl[1] / 100;
- var l = hsl[2] / 100;
- var c = 1;
- var f = 0;
+ const next = () => {
+ if (isRejected) {
+ return;
+ }
- if (l < 0.5) {
- c = 2.0 * s * l;
- } else {
- c = 2.0 * s * (1.0 - l);
- }
+ const nextItem = iterator.next();
+ const i = currentIndex;
+ currentIndex++;
- if (c < 1.0) {
- f = (l - 0.5 * c) / (1.0 - c);
- }
+ if (nextItem.done) {
+ isIterableDone = true;
- return [hsl[0], c * 100, f * 100];
-};
+ if (resolvingCount === 0) {
+ if (!stopOnError && errors.length !== 0) {
+ reject(new AggregateError(errors));
+ } else {
+ resolve(ret);
+ }
+ }
-convert.hsv.hcg = function (hsv) {
- var s = hsv[1] / 100;
- var v = hsv[2] / 100;
+ return;
+ }
- var c = s * v;
- var f = 0;
+ resolvingCount++;
- if (c < 1.0) {
- f = (v - c) / (1 - c);
- }
+ (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();
+ }
+ }
+ })();
+ };
- return [hsv[0], c * 100, f * 100];
+ for (let i = 0; i < concurrency; i++) {
+ next();
+
+ if (isIterableDone) {
+ break;
+ }
+ }
+ });
};
-convert.hcg.rgb = function (hcg) {
- var h = hcg[0] / 360;
- var c = hcg[1] / 100;
- var g = hcg[2] / 100;
- if (c === 0.0) {
- return [g * 255, g * 255, g * 255];
- }
+/***/ }),
+/* 457 */
+/***/ (function(module, exports, __webpack_require__) {
- var pure = [0, 0, 0];
- var hi = (h % 1) * 6;
- var v = hi % 1;
- var w = 1 - v;
- var mg = 0;
+"use strict";
- switch (Math.floor(hi)) {
- case 0:
- pure[0] = 1; pure[1] = v; pure[2] = 0; break;
- case 1:
- pure[0] = w; pure[1] = 1; pure[2] = 0; break;
- case 2:
- pure[0] = 0; pure[1] = 1; pure[2] = v; break;
- case 3:
- pure[0] = 0; pure[1] = w; pure[2] = 1; break;
- case 4:
- pure[0] = v; pure[1] = 0; pure[2] = 1; break;
- default:
- pure[0] = 1; pure[1] = 0; pure[2] = w;
- }
+const indentString = __webpack_require__(458);
+const cleanStack = __webpack_require__(459);
- mg = (1.0 - c) * g;
+const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, '');
- return [
- (c * pure[0] + mg) * 255,
- (c * pure[1] + mg) * 255,
- (c * pure[2] + mg) * 255
- ];
-};
+class AggregateError extends Error {
+ constructor(errors) {
+ if (!Array.isArray(errors)) {
+ throw new TypeError(`Expected input to be an Array, got ${typeof errors}`);
+ }
-convert.hcg.hsv = function (hcg) {
- var c = hcg[1] / 100;
- var g = hcg[2] / 100;
+ errors = [...errors].map(error => {
+ if (error instanceof Error) {
+ return error;
+ }
- var v = c + g * (1.0 - c);
- var f = 0;
+ 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);
+ }
- if (v > 0.0) {
- f = c / v;
- }
+ return new Error(error);
+ });
- return [hcg[0], f * 100, v * 100];
-};
+ 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);
-convert.hcg.hsl = function (hcg) {
- var c = hcg[1] / 100;
- var g = hcg[2] / 100;
+ this.name = 'AggregateError';
- var l = g * (1.0 - c) + 0.5 * c;
- var s = 0;
+ Object.defineProperty(this, '_errors', {value: errors});
+ }
- if (l > 0.0 && l < 0.5) {
- s = c / (2 * l);
- } else
- if (l >= 0.5 && l < 1.0) {
- s = c / (2 * (1 - l));
+ * [Symbol.iterator]() {
+ for (const error of this._errors) {
+ yield error;
+ }
}
+}
- return [hcg[0], s * 100, l * 100];
-};
+module.exports = AggregateError;
-convert.hcg.hwb = function (hcg) {
- var c = hcg[1] / 100;
- var g = hcg[2] / 100;
- var v = c + g * (1.0 - c);
- return [hcg[0], (v - c) * 100, (1 - v) * 100];
-};
-convert.hwb.hcg = function (hwb) {
- var w = hwb[1] / 100;
- var b = hwb[2] / 100;
- var v = 1 - b;
- var c = v - w;
- var g = 0;
+/***/ }),
+/* 458 */
+/***/ (function(module, exports, __webpack_require__) {
- if (c < 1) {
- g = (v - c) / (1 - c);
+"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}\``
+ );
}
- return [hwb[0], c * 100, g * 100];
-};
+ if (typeof count !== 'number') {
+ throw new TypeError(
+ `Expected \`count\` to be a \`number\`, got \`${typeof count}\``
+ );
+ }
-convert.apple.rgb = function (apple) {
- return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
-};
+ if (typeof options.indent !== 'string') {
+ throw new TypeError(
+ `Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\``
+ );
+ }
-convert.rgb.apple = function (rgb) {
- return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
-};
+ if (count === 0) {
+ return string;
+ }
-convert.gray.rgb = function (args) {
- return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
-};
+ const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm;
-convert.gray.hsl = convert.gray.hsv = function (args) {
- return [0, 0, args[0]];
+ return string.replace(regex, options.indent.repeat(count));
};
-convert.gray.hwb = function (gray) {
- return [0, 100, gray[0]];
-};
-convert.gray.cmyk = function (gray) {
- return [0, 0, 0, gray[0]];
-};
+/***/ }),
+/* 459 */
+/***/ (function(module, exports, __webpack_require__) {
-convert.gray.lab = function (gray) {
- return [gray[0], 0, 0];
-};
+"use strict";
-convert.gray.hex = function (gray) {
- var val = Math.round(gray[0] / 100 * 255) & 0xFF;
- var integer = (val << 16) + (val << 8) + val;
+const os = __webpack_require__(243);
- var string = integer.toString(16).toUpperCase();
- return '000000'.substring(string.length) + string;
-};
+const extractPathRegex = /\s+at.*(?:\(|\s)(.*)\)?/;
+const pathRegex = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/;
+const homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir();
-convert.rgb.gray = function (rgb) {
- var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
- return [val / 255 * 100];
+module.exports = (stack, options) => {
+ options = Object.assign({pretty: false}, options);
+
+ return stack.replace(/\\/g, '/')
+ .split('\n')
+ .filter(line => {
+ const pathMatches = line.match(extractPathRegex);
+ if (pathMatches === null || !pathMatches[1]) {
+ return true;
+ }
+
+ const match = pathMatches[1];
+
+ // Electron
+ if (
+ match.includes('.app/Contents/Resources/electron.asar') ||
+ match.includes('.app/Contents/Resources/default_app.asar')
+ ) {
+ return false;
+ }
+
+ return !pathRegex.test(match);
+ })
+ .filter(line => line.trim() !== '')
+ .map(line => {
+ if (options.pretty) {
+ return line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));
+ }
+
+ return line;
+ })
+ .join('\n');
};
/***/ }),
-/* 361 */
+/* 460 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-
-
-module.exports = {
- "aliceblue": [240, 248, 255],
- "antiquewhite": [250, 235, 215],
- "aqua": [0, 255, 255],
- "aquamarine": [127, 255, 212],
- "azure": [240, 255, 255],
- "beige": [245, 245, 220],
- "bisque": [255, 228, 196],
- "black": [0, 0, 0],
- "blanchedalmond": [255, 235, 205],
- "blue": [0, 0, 255],
- "blueviolet": [138, 43, 226],
- "brown": [165, 42, 42],
- "burlywood": [222, 184, 135],
- "cadetblue": [95, 158, 160],
- "chartreuse": [127, 255, 0],
- "chocolate": [210, 105, 30],
- "coral": [255, 127, 80],
- "cornflowerblue": [100, 149, 237],
- "cornsilk": [255, 248, 220],
- "crimson": [220, 20, 60],
- "cyan": [0, 255, 255],
- "darkblue": [0, 0, 139],
- "darkcyan": [0, 139, 139],
- "darkgoldenrod": [184, 134, 11],
- "darkgray": [169, 169, 169],
- "darkgreen": [0, 100, 0],
- "darkgrey": [169, 169, 169],
- "darkkhaki": [189, 183, 107],
- "darkmagenta": [139, 0, 139],
- "darkolivegreen": [85, 107, 47],
- "darkorange": [255, 140, 0],
- "darkorchid": [153, 50, 204],
- "darkred": [139, 0, 0],
- "darksalmon": [233, 150, 122],
- "darkseagreen": [143, 188, 143],
- "darkslateblue": [72, 61, 139],
- "darkslategray": [47, 79, 79],
- "darkslategrey": [47, 79, 79],
- "darkturquoise": [0, 206, 209],
- "darkviolet": [148, 0, 211],
- "deeppink": [255, 20, 147],
- "deepskyblue": [0, 191, 255],
- "dimgray": [105, 105, 105],
- "dimgrey": [105, 105, 105],
- "dodgerblue": [30, 144, 255],
- "firebrick": [178, 34, 34],
- "floralwhite": [255, 250, 240],
- "forestgreen": [34, 139, 34],
- "fuchsia": [255, 0, 255],
- "gainsboro": [220, 220, 220],
- "ghostwhite": [248, 248, 255],
- "gold": [255, 215, 0],
- "goldenrod": [218, 165, 32],
- "gray": [128, 128, 128],
- "green": [0, 128, 0],
- "greenyellow": [173, 255, 47],
- "grey": [128, 128, 128],
- "honeydew": [240, 255, 240],
- "hotpink": [255, 105, 180],
- "indianred": [205, 92, 92],
- "indigo": [75, 0, 130],
- "ivory": [255, 255, 240],
- "khaki": [240, 230, 140],
- "lavender": [230, 230, 250],
- "lavenderblush": [255, 240, 245],
- "lawngreen": [124, 252, 0],
- "lemonchiffon": [255, 250, 205],
- "lightblue": [173, 216, 230],
- "lightcoral": [240, 128, 128],
- "lightcyan": [224, 255, 255],
- "lightgoldenrodyellow": [250, 250, 210],
- "lightgray": [211, 211, 211],
- "lightgreen": [144, 238, 144],
- "lightgrey": [211, 211, 211],
- "lightpink": [255, 182, 193],
- "lightsalmon": [255, 160, 122],
- "lightseagreen": [32, 178, 170],
- "lightskyblue": [135, 206, 250],
- "lightslategray": [119, 136, 153],
- "lightslategrey": [119, 136, 153],
- "lightsteelblue": [176, 196, 222],
- "lightyellow": [255, 255, 224],
- "lime": [0, 255, 0],
- "limegreen": [50, 205, 50],
- "linen": [250, 240, 230],
- "magenta": [255, 0, 255],
- "maroon": [128, 0, 0],
- "mediumaquamarine": [102, 205, 170],
- "mediumblue": [0, 0, 205],
- "mediumorchid": [186, 85, 211],
- "mediumpurple": [147, 112, 219],
- "mediumseagreen": [60, 179, 113],
- "mediumslateblue": [123, 104, 238],
- "mediumspringgreen": [0, 250, 154],
- "mediumturquoise": [72, 209, 204],
- "mediumvioletred": [199, 21, 133],
- "midnightblue": [25, 25, 112],
- "mintcream": [245, 255, 250],
- "mistyrose": [255, 228, 225],
- "moccasin": [255, 228, 181],
- "navajowhite": [255, 222, 173],
- "navy": [0, 0, 128],
- "oldlace": [253, 245, 230],
- "olive": [128, 128, 0],
- "olivedrab": [107, 142, 35],
- "orange": [255, 165, 0],
- "orangered": [255, 69, 0],
- "orchid": [218, 112, 214],
- "palegoldenrod": [238, 232, 170],
- "palegreen": [152, 251, 152],
- "paleturquoise": [175, 238, 238],
- "palevioletred": [219, 112, 147],
- "papayawhip": [255, 239, 213],
- "peachpuff": [255, 218, 185],
- "peru": [205, 133, 63],
- "pink": [255, 192, 203],
- "plum": [221, 160, 221],
- "powderblue": [176, 224, 230],
- "purple": [128, 0, 128],
- "rebeccapurple": [102, 51, 153],
- "red": [255, 0, 0],
- "rosybrown": [188, 143, 143],
- "royalblue": [65, 105, 225],
- "saddlebrown": [139, 69, 19],
- "salmon": [250, 128, 114],
- "sandybrown": [244, 164, 96],
- "seagreen": [46, 139, 87],
- "seashell": [255, 245, 238],
- "sienna": [160, 82, 45],
- "silver": [192, 192, 192],
- "skyblue": [135, 206, 235],
- "slateblue": [106, 90, 205],
- "slategray": [112, 128, 144],
- "slategrey": [112, 128, 144],
- "snow": [255, 250, 250],
- "springgreen": [0, 255, 127],
- "steelblue": [70, 130, 180],
- "tan": [210, 180, 140],
- "teal": [0, 128, 128],
- "thistle": [216, 191, 216],
- "tomato": [255, 99, 71],
- "turquoise": [64, 224, 208],
- "violet": [238, 130, 238],
- "wheat": [245, 222, 179],
- "white": [255, 255, 255],
- "whitesmoke": [245, 245, 245],
- "yellow": [255, 255, 0],
- "yellowgreen": [154, 205, 50]
-};
-
-
-/***/ }),
-/* 362 */
-/***/ (function(module, exports, __webpack_require__) {
+var fs = __webpack_require__(253),
+ path = __webpack_require__(4);
-var conversions = __webpack_require__(360);
+module.exports = ncp;
+ncp.ncp = ncp;
-/*
- this function routes a model to all other models.
+function ncp (source, dest, options, callback) {
+ var cback = callback;
- all functions that are routed have a property `.conversion` attached
- to the returned synthetic function. This property is an array
- of strings, each with the steps in between the 'from' and 'to'
- color models (inclusive).
+ if (!callback) {
+ cback = options;
+ options = {};
+ }
- conversions that are not possible simply are not included.
-*/
+ 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;
-function buildGraph() {
- var graph = {};
- // https://jsperf.com/object-keys-vs-for-in-with-closure/3
- var models = Object.keys(conversions);
+ limit = (limit < 1) ? 1 : (limit > 512) ? 512 : limit;
- for (var len = models.length, i = 0; i < len; i++) {
- graph[models[i]] = {
- // http://jsperf.com/1-vs-infinity
- // micro-opt, but this is simple.
- distance: -1,
- parent: null
- };
- }
+ 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);
+ }
- return graph;
-}
+ 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);
+ }
-// https://en.wikipedia.org/wiki/Breadth-first_search
-function deriveBFS(fromModel) {
- var graph = buildGraph();
- var queue = [fromModel]; // unshift -> queue -> pop
+ // 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
- graph[fromModel].distance = 0;
+ 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);
+ }
+ });
+ }
- while (queue.length) {
- var current = queue.pop();
- var adjacents = Object.keys(conversions[current]);
+ 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();
+ }
+ });
+ }
- for (var len = adjacents.length, i = 0; i < len; i++) {
- var adjacent = adjacents[i];
- var node = graph[adjacent];
+ 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();
+ });
+ }
- if (node.distance === -1) {
- node.distance = graph[current].distance + 1;
- node.parent = current;
- queue.unshift(adjacent);
- }
- }
- }
+ function rmFile(file, done) {
+ fs.unlink(file, function (err) {
+ if (err) {
+ return onError(err);
+ }
+ return done();
+ });
+ }
- return graph;
-}
+ function onDir(dir) {
+ var target = dir.name.replace(currentPath, targetPath);
+ isWritable(target, function (writable) {
+ if (writable) {
+ return mkDir(dir, target);
+ }
+ copyDir(dir.name);
+ });
+ }
-function link(from, to) {
- return function (args) {
- return to(from(args));
- };
-}
+ function mkDir(dir, target) {
+ fs.mkdir(target, dir.mode, function (err) {
+ if (err) {
+ return onError(err);
+ }
+ copyDir(dir.name);
+ });
+ }
-function wrapConversion(toModel, graph) {
- var path = [graph[toModel].parent, toModel];
- var fn = conversions[graph[toModel].parent][toModel];
+ 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();
+ });
+ }
- var cur = graph[toModel].parent;
- while (graph[cur].parent) {
- path.unshift(graph[cur].parent);
- fn = link(conversions[graph[cur].parent][cur], fn);
- cur = graph[cur].parent;
- }
+ function onLink(link) {
+ var target = link.replace(currentPath, targetPath);
+ fs.readlink(link, function (err, resolvedPath) {
+ if (err) {
+ return onError(err);
+ }
+ checkLink(resolvedPath, target);
+ });
+ }
- fn.conversion = path;
- return fn;
-}
+ function checkLink(resolvedPath, target) {
+ if (dereference) {
+ resolvedPath = path.resolve(basePath, resolvedPath);
+ }
+ 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);
+ }
+ if (targetDest === resolvedPath) {
+ return cb();
+ }
+ return rmFile(target, function () {
+ makeLink(resolvedPath, target);
+ });
+ });
+ });
+ }
-module.exports = function (fromModel) {
- var graph = deriveBFS(fromModel);
- var conversion = {};
+ function makeLink(linkPath, target) {
+ fs.symlink(linkPath, target, function (err) {
+ if (err) {
+ return onError(err);
+ }
+ return cb();
+ });
+ }
- var models = Object.keys(graph);
- for (var len = models.length, i = 0; i < len; i++) {
- var toModel = models[i];
- var node = graph[toModel];
+ function isWritable(path, done) {
+ fs.lstat(path, function (err) {
+ if (err) {
+ if (err.code === 'ENOENT') return done(true);
+ return done(false);
+ }
+ return done(false);
+ });
+ }
- if (node.parent === null) {
- // no possible conversion, or this node is the source model.
- continue;
- }
+ 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();
+ }
- conversion[toModel] = wrapConversion(toModel, graph);
- }
+ function cb(skipped) {
+ if (!skipped) running--;
+ finished++;
+ if ((started === finished) && (running === 0)) {
+ if (cback !== undefined ) {
+ return errs ? cback(errs) : cback(null);
+ }
+ }
+ }
+}
- return conversion;
-};
/***/ }),
-/* 363 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 461 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProjects", function() { return getProjects; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNonBazelProjectsOnly", function() { return getNonBazelProjectsOnly; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBazelProjectsOnly", function() { return getBazelProjectsOnly; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildProjectGraph", function() { return buildProjectGraph; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "topologicallyBatchProjects", function() { return topologicallyBatchProjects; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "includeTransitiveProjects", function() { return includeTransitiveProjects; });
+/* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(365);
+/* 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__(4);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(234);
+/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(462);
+/* harmony import */ var _project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(463);
+/*
+ * 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.
+ */
-const os = __webpack_require__(122);
-const hasFlag = __webpack_require__(364);
-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
- };
-}
+const glob = Object(util__WEBPACK_IMPORTED_MODULE_2__["promisify"])(glob__WEBPACK_IMPORTED_MODULE_0___default.a);
+/** a Map of project names to Project instances */
-function supportsColor(stream) {
- if (forceColor === false) {
- return 0;
- }
+async function getProjects(rootPath, projectsPathsPatterns, {
+ include = [],
+ exclude = []
+} = {}, bazelOnly = false) {
+ const projects = new Map();
- if (hasFlag('color=16m') ||
- hasFlag('color=full') ||
- hasFlag('color=truecolor')) {
- return 3;
- }
+ for (const pattern of projectsPathsPatterns) {
+ const pathsToProcess = await packagesFromGlobPattern({
+ pattern,
+ rootPath
+ });
- if (hasFlag('color=256')) {
- return 2;
- }
+ for (const filePath of pathsToProcess) {
+ const projectConfigPath = normalize(filePath);
+ const projectDir = path__WEBPACK_IMPORTED_MODULE_1___default.a.dirname(projectConfigPath);
+ const project = await _project__WEBPACK_IMPORTED_MODULE_4__["Project"].fromPath(projectDir);
+ const excludeProject = exclude.includes(project.name) || include.length > 0 && !include.includes(project.name) || bazelOnly && !project.isBazelPackage();
- if (stream && !stream.isTTY && forceColor !== true) {
- return 0;
- }
+ if (excludeProject) {
+ continue;
+ }
- const min = forceColor ? 1 : 0;
+ if (projects.has(project.name)) {
+ throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`There are multiple projects with the same name [${project.name}]`, {
+ name: project.name,
+ paths: [project.path, projects.get(project.name).path]
+ });
+ }
- 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;
- }
+ projects.set(project.name, project);
+ }
+ }
- return 1;
- }
+ return projects;
+}
+async function getNonBazelProjectsOnly(projects) {
+ const bazelProjectsOnly = new Map();
- if ('CI' in env) {
- if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {
- return 1;
- }
+ for (const project of projects.values()) {
+ if (!project.isBazelPackage()) {
+ bazelProjectsOnly.set(project.name, project);
+ }
+ }
- return min;
- }
+ return bazelProjectsOnly;
+}
+async function getBazelProjectsOnly(projects) {
+ const bazelProjectsOnly = new Map();
- if ('TEAMCITY_VERSION' in env) {
- return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
- }
+ for (const project of projects.values()) {
+ if (project.isBazelPackage()) {
+ bazelProjectsOnly.set(project.name, project);
+ }
+ }
- if (env.COLORTERM === 'truecolor') {
- return 3;
- }
+ return bazelProjectsOnly;
+}
- if ('TERM_PROGRAM' in env) {
- const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
+function packagesFromGlobPattern({
+ pattern,
+ rootPath
+}) {
+ const globOptions = {
+ cwd: rootPath,
+ // Should throw in case of unusual errors when reading the file system
+ strict: true,
+ // Always returns absolute paths for matched files
+ absolute: true,
+ // Do not match ** against multiple filenames
+ // (This is only specified because we currently don't have a need for it.)
+ noglobstar: true
+ };
+ return glob(path__WEBPACK_IMPORTED_MODULE_1___default.a.join(pattern, 'package.json'), globOptions);
+} // https://github.com/isaacs/node-glob/blob/master/common.js#L104
+// glob always returns "\\" as "/" in windows, so everyone
+// gets normalized because we can't have nice things.
- 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 normalize(dir) {
+ return path__WEBPACK_IMPORTED_MODULE_1___default.a.normalize(dir);
+}
- if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
- return 1;
- }
+function buildProjectGraph(projects) {
+ const projectGraph = new Map();
- if ('COLORTERM' in env) {
- return 1;
- }
+ for (const project of projects.values()) {
+ const projectDeps = [];
+ const dependencies = project.allDependencies;
- if (env.TERM === 'dumb') {
- return min;
- }
+ for (const depName of Object.keys(dependencies)) {
+ if (projects.has(depName)) {
+ const dep = projects.get(depName);
+ project.ensureValidProjectDependency(dep);
+ projectDeps.push(dep);
+ }
+ }
- return min;
-}
+ projectGraph.set(project.name, projectDeps);
+ }
-function getSupportLevel(stream) {
- const level = supportsColor(stream);
- return translateLevel(level);
+ return projectGraph;
}
+function topologicallyBatchProjects(projectsToBatch, projectGraph) {
+ // We're going to be chopping stuff out of this list, so copy it.
+ const projectsLeftToBatch = new Set(projectsToBatch.keys());
+ const batches = [];
-module.exports = {
- supportsColor: getSupportLevel,
- stdout: getSupportLevel(process.stdout),
- stderr: getSupportLevel(process.stderr)
-};
-
+ while (projectsLeftToBatch.size > 0) {
+ // Get all projects that have no remaining dependencies within the repo
+ // that haven't yet been picked.
+ const batch = [];
-/***/ }),
-/* 364 */
-/***/ (function(module, exports, __webpack_require__) {
+ for (const projectName of projectsLeftToBatch) {
+ const projectDeps = projectGraph.get(projectName);
+ const needsDependenciesBatched = projectDeps.some(dep => projectsLeftToBatch.has(dep.name));
-"use strict";
+ if (!needsDependenciesBatched) {
+ batch.push(projectsToBatch.get(projectName));
+ }
+ } // If we weren't able to find a project with no remaining dependencies,
+ // then we've encountered a cycle in the dependency graph.
-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);
-};
+ const hasCycles = batch.length === 0;
-/***/ }),
-/* 365 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (hasCycles) {
+ const cycleProjectNames = [...projectsLeftToBatch];
+ const message = 'Encountered a cycle in the dependency graph. Projects in cycle are:\n' + cycleProjectNames.join(', ');
+ throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](message);
+ }
-"use strict";
+ batches.push(batch);
+ batch.forEach(project => projectsLeftToBatch.delete(project.name));
+ }
-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;
+ return batches;
+}
+function includeTransitiveProjects(subsetOfProjects, allProjects, {
+ onlyProductionDependencies = false
+} = {}) {
+ const projectsWithDependents = new Map(); // the current list of packages we are expanding using breadth-first-search
-const ESCAPES = new Map([
- ['n', '\n'],
- ['r', '\r'],
- ['t', '\t'],
- ['b', '\b'],
- ['f', '\f'],
- ['v', '\v'],
- ['0', '\0'],
- ['\\', '\\'],
- ['e', '\u001B'],
- ['a', '\u0007']
-]);
+ const toProcess = [...subsetOfProjects];
-function unescape(c) {
- if ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {
- return String.fromCharCode(parseInt(c.slice(1), 16));
- }
+ while (toProcess.length > 0) {
+ const project = toProcess.shift();
+ const dependencies = onlyProductionDependencies ? project.productionDependencies : project.allDependencies;
+ Object.keys(dependencies).forEach(dep => {
+ if (allProjects.has(dep)) {
+ toProcess.push(allProjects.get(dep));
+ }
+ });
+ projectsWithDependents.set(project.name, project);
+ }
- return ESCAPES.get(c) || c;
+ return projectsWithDependents;
}
-function parseArguments(name, args) {
- const results = [];
- const chunks = args.trim().split(/\s*,\s*/g);
- let matches;
+/***/ }),
+/* 462 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- 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}')`);
- }
- }
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CliError", function() { return CliError; });
+/*
+ * 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.
+ */
+class CliError extends Error {
+ constructor(message, meta = {}) {
+ super(message);
+ this.meta = meta;
+ }
- return results;
}
-function parseStyle(style) {
- STYLE_REGEX.lastIndex = 0;
+/***/ }),
+/* 463 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- const results = [];
- let matches;
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Project", function() { return Project; });
+/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(253);
+/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(234);
+/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(462);
+/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(341);
+/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(464);
+/* harmony import */ var _scripts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(529);
+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; }
- while ((matches = STYLE_REGEX.exec(style)) !== null) {
- const name = matches[1];
+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; }
- if (matches[2]) {
- const args = parseArguments(name, matches[2]);
- results.push([name].concat(args));
- } else {
- results.push([name]);
- }
- }
+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; }
- return results;
-}
+/*
+ * 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 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}`);
- }
- if (enabled[styleName].length > 0) {
- current = current[styleName].apply(current, enabled[styleName]);
- } else {
- current = current[styleName];
- }
- }
- }
- return current;
-}
-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');
- }
+class Project {
+ static async fromPath(path) {
+ const pkgJson = await Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["readPackageJson"])(path);
+ return new Project(pkgJson, path);
+ }
+ /** parsed package.json */
- chunks.push(buildStyle(chalk, styles)(chunk.join('')));
- chunk = [];
- styles.pop();
- } else {
- chunk.push(chr);
- }
- });
- chunks.push(chunk.join(''));
+ constructor(packageJson, projectPath) {
+ _defineProperty(this, "json", void 0);
- if (styles.length > 0) {
- const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`;
- throw new Error(errMsg);
- }
+ _defineProperty(this, "packageJsonLocation", void 0);
- return chunks.join('');
-};
+ _defineProperty(this, "nodeModulesLocation", void 0);
+ _defineProperty(this, "targetLocation", void 0);
-/***/ }),
-/* 366 */
-/***/ (function(module, exports, __webpack_require__) {
+ _defineProperty(this, "path", void 0);
-module.exports = normalize
+ _defineProperty(this, "version", void 0);
-var fixer = __webpack_require__(367)
-normalize.fixer = fixer
+ _defineProperty(this, "allDependencies", void 0);
-var makeWarning = __webpack_require__(395)
+ _defineProperty(this, "productionDependencies", void 0);
-var fieldsToFix = ['name','version','description','repository','modules','scripts'
- ,'files','bin','man','bugs','keywords','readme','homepage','license']
-var otherThingsToFix = ['dependencies','people', 'typos']
+ _defineProperty(this, "devDependencies", void 0);
-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)
+ _defineProperty(this, "scripts", void 0);
-function normalize (data, warn, strict) {
- if(warn === true) warn = null, strict = true
- if(!strict) strict = false
- if(!warn || data.private) warn = function(msg) { /* noop */ }
+ _defineProperty(this, "bazelPackage", void 0);
- 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
-}
+ _defineProperty(this, "isSinglePackageJsonProject", false);
-function ucFirst (string) {
- return string.charAt(0).toUpperCase() + string.slice(1);
-}
+ this.json = Object.freeze(packageJson);
+ this.path = projectPath;
+ this.packageJsonLocation = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, 'package.json');
+ this.nodeModulesLocation = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, 'node_modules');
+ this.targetLocation = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, 'target');
+ this.version = this.json.version;
+ this.productionDependencies = this.json.dependencies || {};
+ this.devDependencies = this.json.devDependencies || {};
+ this.allDependencies = _objectSpread(_objectSpread({}, this.devDependencies), this.productionDependencies);
+ this.isSinglePackageJsonProject = this.json.name === 'kibana';
+ this.scripts = this.json.scripts || {};
+ this.bazelPackage = !this.isSinglePackageJsonProject && fs__WEBPACK_IMPORTED_MODULE_0___default.a.existsSync(path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, 'BUILD.bazel'));
+ }
+ get name() {
+ return this.json.name;
+ }
-/***/ }),
-/* 367 */
-/***/ (function(module, exports, __webpack_require__) {
+ ensureValidProjectDependency(project) {
+ const relativePathToProject = normalizePath(path__WEBPACK_IMPORTED_MODULE_1___default.a.relative(this.path, project.path));
+ const relativePathToProjectIfBazelPkg = normalizePath(path__WEBPACK_IMPORTED_MODULE_1___default.a.relative(this.path, `${__dirname}/../../../bazel-bin/packages/${path__WEBPACK_IMPORTED_MODULE_1___default.a.basename(project.path)}`));
+ const versionInPackageJson = this.allDependencies[project.name];
+ const expectedVersionInPackageJson = `link:${relativePathToProject}`;
+ const expectedVersionInPackageJsonIfBazelPkg = `link:${relativePathToProjectIfBazelPkg}`; // TODO: after introduce bazel to build all the packages and completely remove the support for kbn packages
+ // do not allow child projects to hold dependencies, unless they are meant to be published externally
-var semver = __webpack_require__(368)
-var validateLicense = __webpack_require__(369);
-var hostedGitInfo = __webpack_require__(374)
-var isBuiltinModule = __webpack_require__(377).isCore
-var depTypes = ["dependencies","devDependencies","optionalDependencies"]
-var extractDescription = __webpack_require__(393)
-var url = __webpack_require__(203)
-var typos = __webpack_require__(394)
+ if (versionInPackageJson === expectedVersionInPackageJson || versionInPackageJson === expectedVersionInPackageJsonIfBazelPkg) {
+ return;
+ }
-var fixer = module.exports = {
- // default warning function
- warn: function() {},
+ const updateMsg = 'Update its package.json to the expected value below.';
+ const meta = {
+ actual: `"${project.name}": "${versionInPackageJson}"`,
+ expected: `"${project.name}": "${expectedVersionInPackageJson}" or "${project.name}": "${expectedVersionInPackageJsonIfBazelPkg}"`,
+ package: `${this.name} (${this.packageJsonLocation})`
+ };
- 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 (Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["isLinkDependency"])(versionInPackageJson)) {
+ throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`[${this.name}] depends on [${project.name}] using 'link:', but the path is wrong. ${updateMsg}`, meta);
}
- if (r.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)) {
- this.warn("brokenGitUrl", r)
- }
+ throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`[${this.name}] depends on [${project.name}] but it's not using the local package. ${updateMsg}`, meta);
}
-, fixTypos: function(data) {
- Object.keys(typos.topLevel).forEach(function (d) {
- if (data.hasOwnProperty(d)) {
- this.warn("typo", d, typos.topLevel[d])
- }
- }, this)
+ 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.
+ */
-, 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)
+
+ getIntermediateBuildDirectory() {
+ return path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, this.getBuildConfig().intermediateBuildDirectory || '.');
}
-, 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)
- }
+ getCleanConfig() {
+ return this.json.kibana && this.json.kibana.clean || {};
}
-, 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
- }
+ isBazelPackage() {
+ return this.bazelPackage;
}
-, 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)
- }
+ isFlaggedAsDevOnly() {
+ return !!(this.json.kibana && this.json.kibana.devOnly);
}
-, fixDependencies: function(data, strict) {
- var loose = !strict
- objectifyDeps(data, this.warn)
- addOptionalDepsToDeps(data, this.warn)
- this.fixBundleDependenciesField(data)
-
- ;['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)
+ hasScript(name) {
+ return name in this.scripts;
}
-, fixModulesField: function (data) {
- if (data.modules) {
- this.warn("deprecatedModules")
- delete data.modules
- }
- }
+ getExecutables() {
+ const raw = this.json.bin;
-, 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)
+ if (!raw) {
+ return {};
}
- }
-, 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 + '"')
+ if (typeof raw === 'string') {
+ return {
+ [this.name]: path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, raw)
+ };
}
- 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)
- }
+ if (typeof raw === 'object') {
+ const binsConfig = {};
+ for (const binName of Object.keys(raw)) {
+ binsConfig[binName] = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, raw[binName]);
+ }
-, fixDescriptionField: function (data) {
- if (data.description && typeof data.description !== 'string') {
- this.warn("nonStringDescription")
- delete data.description
+ return binsConfig;
}
- if (data.readme && !data.description)
- data.description = extractDescription(data.readme)
- if(data.description === undefined) delete data.description;
- if (!data.description) this.warn("missingDescription")
- }
-, fixReadmeField: function (data) {
- if (!data.readme) {
- this.warn("missingReadme")
- data.readme = "ERROR: No README data found!"
- }
+ throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`[${this.name}] has an invalid "bin" field in its package.json, ` + `expected an object or a string`, {
+ binConfig: Object(util__WEBPACK_IMPORTED_MODULE_2__["inspect"])(raw),
+ package: `${this.name} (${this.packageJsonLocation})`
+ });
}
-, 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")
- }
- }
+ async runScript(scriptName, args = []) {
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"].info(`Running script [${scriptName}] in [${this.name}]:`);
+ return Object(_scripts__WEBPACK_IMPORTED_MODULE_6__["runScriptInPackage"])(scriptName, args, this);
}
-, 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
+ runScriptStreaming(scriptName, options = {}) {
+ return Object(_scripts__WEBPACK_IMPORTED_MODULE_6__["runScriptInPackageStreaming"])({
+ script: scriptName,
+ args: options.args || [],
+ pkg: this,
+ debug: options.debug
+ });
+ }
- if(typeof data.homepage !== "string") {
- this.warn("nonUrlHomepage")
- return delete data.homepage
- }
- if(!url.parse(data.homepage).protocol) {
- data.homepage = "http://" + data.homepage
- }
+ hasDependencies() {
+ return Object.keys(this.allDependencies).length > 0;
}
-, 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")
- }
- }
+ isEveryDependencyLocal() {
+ return Object.values(this.allDependencies).every(dep => Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["isLinkDependency"])(dep));
}
-}
-function isValidScopedPackageName(spec) {
- if (spec.charAt(0) !== '@') return false
+ async installDependencies(options = {}) {
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"].info(`[${this.name}] running yarn`);
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"].write('');
+ await Object(_scripts__WEBPACK_IMPORTED_MODULE_6__["installInDir"])(this.path, options === null || options === void 0 ? void 0 : options.extraArgs);
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"].write('');
+ }
- var rest = spec.slice(1).split('/')
- if (rest.length !== 2) return false
+} // We normalize all path separators to `/` in generated files
- return rest[0] && rest[1] &&
- rest[0] === encodeURIComponent(rest[0]) &&
- rest[1] === encodeURIComponent(rest[1])
+function normalizePath(path) {
+ return path.replace(/[\\\/]+/g, '/');
}
-function isCorrectlyEncodedName(spec) {
- return !spec.match(/[\/@\s\+%:]/) &&
- spec === encodeURIComponent(spec)
-}
+/***/ }),
+/* 464 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-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))
- }
-}
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readPackageJson", function() { return readPackageJson; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "writePackageJson", function() { return writePackageJson; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createProductionPackageJson", function() { return createProductionPackageJson; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLinkDependency", function() { return isLinkDependency; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBazelPackageDependency", function() { return isBazelPackageDependency; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transformDependencies", function() { return transformDependencies; });
+/* harmony import */ var read_pkg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(465);
+/* 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__(518);
+/* 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 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 _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 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
-}
+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; }
-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
-}
+/*
+ * 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 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 readPackageJson(cwd) {
+ return read_pkg__WEBPACK_IMPORTED_MODULE_0___default()({
+ cwd,
+ normalize: false
+ });
}
-
-function objectifyDeps (data, warn) {
- depTypes.forEach(function (type) {
- if (!data[type]) return;
- data[type] = depObjectify(data[type], type, warn)
- })
+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 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 transformDependencies(dependencies = {}) {
+ const newDeps = {};
+ for (const name of Object.keys(dependencies)) {
+ const depVersion = dependencies[name];
-/***/ }),
-/* 368 */
-/***/ (function(module, exports) {
+ if (!isLinkDependency(depVersion)) {
+ newDeps[name] = depVersion;
+ continue;
+ }
-exports = module.exports = SemVer
+ if (isBazelPackageDependency(depVersion)) {
+ newDeps[name] = depVersion.replace('link:bazel-bin/', 'file:');
+ continue;
+ }
-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)
+ newDeps[name] = depVersion.replace('link:', 'file:');
}
-} else {
- debug = function () {}
+
+ return newDeps;
}
-// 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'
+/***/ }),
+/* 465 */
+/***/ (function(module, exports, __webpack_require__) {
-var MAX_LENGTH = 256
-var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
- /* istanbul ignore next */ 9007199254740991
+"use strict";
-// Max safe segment length for coercion.
-var MAX_SAFE_COMPONENT_LENGTH = 16
+const {promisify} = __webpack_require__(234);
+const fs = __webpack_require__(253);
+const path = __webpack_require__(4);
+const parseJson = __webpack_require__(466);
-// The actual regexps go on exports.re
-var re = exports.re = []
-var src = exports.src = []
-var R = 0
+const readFileAsync = promisify(fs.readFile);
-// The following Regular Expressions can be used for tokenizing,
-// validating, and parsing SemVer version strings.
+module.exports = async options => {
+ options = {
+ cwd: process.cwd(),
+ normalize: true,
+ ...options
+ };
-// ## Numeric Identifier
-// A single `0`, or a non-zero digit followed by zero or more digits.
+ const filePath = path.resolve(options.cwd, 'package.json');
+ const json = parseJson(await readFileAsync(filePath, 'utf8'));
-var NUMERICIDENTIFIER = R++
-src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'
-var NUMERICIDENTIFIERLOOSE = R++
-src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'
+ if (options.normalize) {
+ __webpack_require__(487)(json);
+ }
-// ## Non-numeric Identifier
-// Zero or more digits, followed by a letter or hyphen, and then zero or
-// more letters, digits, or hyphens.
+ return json;
+};
-var NONNUMERICIDENTIFIER = R++
-src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
+module.exports.sync = options => {
+ options = {
+ cwd: process.cwd(),
+ normalize: true,
+ ...options
+ };
-// ## Main Version
-// Three dot-separated numeric identifiers.
+ const filePath = path.resolve(options.cwd, 'package.json');
+ const json = parseJson(fs.readFileSync(filePath, 'utf8'));
-var MAINVERSION = R++
-src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')'
+ if (options.normalize) {
+ __webpack_require__(487)(json);
+ }
-var MAINVERSIONLOOSE = R++
-src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')'
+ return json;
+};
-// ## Pre-release Version Identifier
-// A numeric identifier, or a non-numeric identifier.
-var PRERELEASEIDENTIFIER = R++
-src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
- '|' + src[NONNUMERICIDENTIFIER] + ')'
+/***/ }),
+/* 466 */
+/***/ (function(module, exports, __webpack_require__) {
-var PRERELEASEIDENTIFIERLOOSE = R++
-src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
- '|' + src[NONNUMERICIDENTIFIER] + ')'
+"use strict";
-// ## Pre-release Version
-// Hyphen, followed by one or more dot-separated pre-release version
-// identifiers.
+const errorEx = __webpack_require__(467);
+const fallback = __webpack_require__(469);
+const {default: LinesAndColumns} = __webpack_require__(470);
+const {codeFrameColumns} = __webpack_require__(471);
-var PRERELEASE = R++
-src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
- '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'
+const JSONError = errorEx('JSONError', {
+ fileName: errorEx.append('in %s'),
+ codeFrame: errorEx.append('\n\n%s\n')
+});
-var PRERELEASELOOSE = R++
-src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
- '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'
+module.exports = (string, reviver, filename) => {
+ if (typeof reviver === 'string') {
+ filename = reviver;
+ reviver = null;
+ }
-// ## Build Metadata Identifier
-// Any combination of digits, letters, or hyphens.
+ 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/);
-var BUILDIDENTIFIER = R++
-src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
+ const jsonError = new JSONError(error);
+ if (filename) {
+ jsonError.fileName = filename;
+ }
-// ## Build Metadata
-// Plus sign, followed by one or more period-separated build metadata
-// identifiers.
+ if (indexMatch && indexMatch.length > 0) {
+ const lines = new LinesAndColumns(string);
+ const index = Number(indexMatch[1]);
+ const location = lines.locationForIndex(index);
-var BUILD = R++
-src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
- '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'
+ const codeFrame = codeFrameColumns(
+ string,
+ {start: {line: location.line + 1, column: location.column + 1}},
+ {highlightCode: true}
+ );
-// ## Full Version String
-// A main version, followed optionally by a pre-release version and
-// build metadata.
+ jsonError.codeFrame = codeFrame;
+ }
-// 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.
+ throw jsonError;
+ }
+};
-var FULL = R++
-var FULLPLAIN = 'v?' + src[MAINVERSION] +
- src[PRERELEASE] + '?' +
- src[BUILD] + '?'
-src[FULL] = '^' + FULLPLAIN + '$'
+/***/ }),
+/* 467 */
+/***/ (function(module, exports, __webpack_require__) {
-// 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] + '?'
+"use strict";
-var LOOSE = R++
-src[LOOSE] = '^' + LOOSEPLAIN + '$'
-var GTLT = R++
-src[GTLT] = '((?:<|>)?=?)'
+var util = __webpack_require__(234);
+var isArrayish = __webpack_require__(468);
-// Something like "2.*" or "1.2.x".
-// Note that "x.x" is a valid xRange identifer, meaning "any version"
-// Only the first item is strictly required.
-var XRANGEIDENTIFIERLOOSE = R++
-src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
-var XRANGEIDENTIFIER = R++
-src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'
+var errorEx = function errorEx(name, properties) {
+ if (!name || name.constructor !== String) {
+ properties = name || {};
+ name = Error.name;
+ }
-var XRANGEPLAIN = R++
-src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:' + src[PRERELEASE] + ')?' +
- src[BUILD] + '?' +
- ')?)?'
+ var errorExError = function ErrorEXError(message) {
+ if (!this) {
+ return new ErrorEXError(message);
+ }
-var XRANGEPLAINLOOSE = R++
-src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:' + src[PRERELEASELOOSE] + ')?' +
- src[BUILD] + '?' +
- ')?)?'
+ message = message instanceof Error
+ ? message.message
+ : (message || this.message);
-var XRANGE = R++
-src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'
-var XRANGELOOSE = R++
-src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'
+ Error.call(this, message);
+ Error.captureStackTrace(this, errorExError);
-// 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])'
+ this.name = name;
-// Tilde ranges.
-// Meaning is "reasonably at or greater than"
-var LONETILDE = R++
-src[LONETILDE] = '(?:~>?)'
+ Object.defineProperty(this, 'message', {
+ configurable: true,
+ enumerable: false,
+ get: function () {
+ var newMessage = message.split(/\r?\n/g);
-var TILDETRIM = R++
-src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'
-re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')
-var tildeTrimReplace = '$1~'
+ for (var key in properties) {
+ if (!properties.hasOwnProperty(key)) {
+ continue;
+ }
-var TILDE = R++
-src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'
-var TILDELOOSE = R++
-src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'
+ var modifier = properties[key];
-// Caret ranges.
-// Meaning is "at least and backwards compatible with"
-var LONECARET = R++
-src[LONECARET] = '(?:\\^)'
+ if ('message' in modifier) {
+ newMessage = modifier.message(this[key], newMessage) || newMessage;
+ if (!isArrayish(newMessage)) {
+ newMessage = [newMessage];
+ }
+ }
+ }
-var CARETTRIM = R++
-src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'
-re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')
-var caretTrimReplace = '$1^'
+ return newMessage.join('\n');
+ },
+ set: function (v) {
+ message = v;
+ }
+ });
-var CARET = R++
-src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'
-var CARETLOOSE = R++
-src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'
+ var stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack');
+ var stackGetter = stackDescriptor.get;
+ var stackValue = stackDescriptor.value;
+ delete stackDescriptor.value;
+ delete stackDescriptor.writable;
-// 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 + ')$|^$'
+ stackDescriptor.get = function () {
+ var stack = (stackGetter)
+ ? stackGetter.call(this).split(/\r?\n+/g)
+ : stackValue.split(/\r?\n+/g);
-// 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] + ')'
+ // starting in Node 7, the stack builder caches the message.
+ // just replace it.
+ stack[0] = this.name + ': ' + this.message;
-// this one has to use the /g flag
-re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')
-var comparatorTrimReplace = '$1$2$3'
+ var lineCount = 1;
+ for (var key in properties) {
+ if (!properties.hasOwnProperty(key)) {
+ continue;
+ }
-// Something like `1.2.3 - 1.2.4`
-// Note that these all use the loose form, because they'll be
-// checked against either the strict or loose comparator form
-// later.
-var HYPHENRANGE = R++
-src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAIN] + ')' +
- '\\s*$'
+ var modifier = properties[key];
-var HYPHENRANGELOOSE = R++
-src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s*$'
+ if ('line' in modifier) {
+ var line = modifier.line(this[key]);
+ if (line) {
+ stack.splice(lineCount++, 0, ' ' + line);
+ }
+ }
-// Star ranges basically just allow anything at all.
-var STAR = R++
-src[STAR] = '(<|>)?=?\\s*\\*'
+ if ('stack' in modifier) {
+ modifier.stack(this[key], stack);
+ }
+ }
-// 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])
- }
-}
+ return stack.join('\n');
+ };
-exports.parse = parse
-function parse (version, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
+ Object.defineProperty(this, 'stack', stackDescriptor);
+ };
- if (version instanceof SemVer) {
- return version
- }
+ if (Object.setPrototypeOf) {
+ Object.setPrototypeOf(errorExError.prototype, Error.prototype);
+ Object.setPrototypeOf(errorExError, Error);
+ } else {
+ util.inherits(errorExError, Error);
+ }
- if (typeof version !== 'string') {
- return null
- }
+ return errorExError;
+};
- if (version.length > MAX_LENGTH) {
- return null
- }
+errorEx.append = function (str, def) {
+ return {
+ message: function (v, message) {
+ v = v || def;
- var r = options.loose ? re[LOOSE] : re[FULL]
- if (!r.test(version)) {
- return null
- }
+ if (v) {
+ message[0] += ' ' + str.replace('%s', v.toString());
+ }
- try {
- return new SemVer(version, options)
- } catch (er) {
- return null
- }
-}
+ return message;
+ }
+ };
+};
-exports.valid = valid
-function valid (version, options) {
- var v = parse(version, options)
- return v ? v.version : null
-}
+errorEx.line = function (str, def) {
+ return {
+ line: function (v) {
+ v = v || def;
-exports.clean = clean
-function clean (version, options) {
- var s = parse(version.trim().replace(/^[=v]+/, ''), options)
- return s ? s.version : null
-}
+ if (v) {
+ return str.replace('%s', v.toString());
+ }
-exports.SemVer = SemVer
+ return null;
+ }
+ };
+};
-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)
- }
+module.exports = errorEx;
- if (version.length > MAX_LENGTH) {
- throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
- }
- if (!(this instanceof SemVer)) {
- return new SemVer(version, options)
- }
+/***/ }),
+/* 468 */
+/***/ (function(module, exports, __webpack_require__) {
- debug('SemVer', version, options)
- this.options = options
- this.loose = !!options.loose
+"use strict";
- var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])
- if (!m) {
- throw new TypeError('Invalid Version: ' + version)
- }
+module.exports = function isArrayish(obj) {
+ if (!obj) {
+ return false;
+ }
- this.raw = version
+ return obj instanceof Array || Array.isArray(obj) ||
+ (obj.length >= 0 && obj.splice instanceof Function);
+};
- // 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')
- }
+/***/ }),
+/* 469 */
+/***/ (function(module, exports, __webpack_require__) {
- if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
- throw new TypeError('Invalid minor version')
- }
+"use strict";
- 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
- })
+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
}
-
- 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
-}
+/***/ }),
+/* 470 */
+/***/ (function(__webpack_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";
+__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);
- return this.compareMain(other) || this.comparePre(other)
-}
-SemVer.prototype.compareMain = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
+/***/ }),
+/* 471 */
+/***/ (function(module, exports, __webpack_require__) {
- return compareIdentifiers(this.major, other.major) ||
- compareIdentifiers(this.minor, other.minor) ||
- compareIdentifiers(this.patch, other.patch)
-}
+"use strict";
-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
- }
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.codeFrameColumns = codeFrameColumns;
+exports.default = _default;
- 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)
+var _highlight = __webpack_require__(472);
+
+let deprecationWarningShown = false;
+
+function getDefs(chalk) {
+ return {
+ gutter: chalk.grey,
+ marker: chalk.red.bold,
+ message: chalk.red.bold
+ };
}
-// 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
+const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
- 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
+function getMarkerLines(loc, source, opts) {
+ const startLoc = Object.assign({
+ column: 0,
+ line: -1
+ }, loc.start);
+ const endLoc = Object.assign({}, startLoc, loc.end);
+ const {
+ linesAbove = 2,
+ linesBelow = 3
+ } = opts || {};
+ const startLine = startLoc.line;
+ const startColumn = startLoc.column;
+ const endLine = endLoc.line;
+ const endColumn = endLoc.column;
+ let start = Math.max(startLine - (linesAbove + 1), 0);
+ let end = Math.min(source.length, endLine + linesBelow);
- default:
- throw new Error('invalid increment argument: ' + release)
+ if (startLine === -1) {
+ start = 0;
}
- 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
+ if (endLine === -1) {
+ end = source.length;
}
- try {
- return new SemVer(version, loose).inc(release, identifier).version
- } catch (er) {
- return null
- }
-}
+ const lineDiff = endLine - startLine;
+ const markerLines = {};
-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'
+ if (lineDiff) {
+ for (let i = 0; i <= lineDiff; i++) {
+ const lineNumber = i + startLine;
+
+ if (!startColumn) {
+ markerLines[lineNumber] = true;
+ } else if (i === 0) {
+ const sourceLength = source[lineNumber - 1].length;
+ markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
+ } else if (i === lineDiff) {
+ markerLines[lineNumber] = [0, endColumn];
+ } else {
+ const sourceLength = source[lineNumber - i].length;
+ markerLines[lineNumber] = [0, sourceLength];
+ }
}
- for (var key in v1) {
- if (key === 'major' || key === 'minor' || key === 'patch') {
- if (v1[key] !== v2[key]) {
- return prefix + key
- }
+ } else {
+ if (startColumn === endColumn) {
+ if (startColumn) {
+ markerLines[startLine] = [startColumn, 0];
+ } else {
+ markerLines[startLine] = true;
}
+ } else {
+ markerLines[startLine] = [startColumn, endColumn - startColumn];
}
- return defaultResult // may be undefined
}
+
+ return {
+ start,
+ end,
+ markerLines
+ };
}
-exports.compareIdentifiers = compareIdentifiers
+function codeFrameColumns(rawLines, loc, opts = {}) {
+ const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);
+ const chalk = (0, _highlight.getChalk)(opts);
+ const defs = getDefs(chalk);
-var numeric = /^[0-9]+$/
-function compareIdentifiers (a, b) {
- var anum = numeric.test(a)
- var bnum = numeric.test(b)
+ const maybeHighlight = (chalkFn, string) => {
+ return highlighted ? chalkFn(string) : string;
+ };
- if (anum && bnum) {
- a = +a
- b = +b
- }
+ const lines = rawLines.split(NEWLINE);
+ const {
+ start,
+ end,
+ markerLines
+ } = getMarkerLines(loc, lines, opts);
+ const hasColumns = loc.start && typeof loc.start.column === "number";
+ const numberMaxWidth = String(end).length;
+ const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;
+ let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
+ const number = start + 1 + index;
+ const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
+ const gutter = ` ${paddedNumber} |`;
+ const hasMarker = markerLines[number];
+ const lastMarkerLine = !markerLines[number + 1];
- return a === b ? 0
- : (anum && !bnum) ? -1
- : (bnum && !anum) ? 1
- : a < b ? -1
- : 1
-}
+ if (hasMarker) {
+ let markerLine = "";
-exports.rcompareIdentifiers = rcompareIdentifiers
-function rcompareIdentifiers (a, b) {
- return compareIdentifiers(b, a)
-}
+ if (Array.isArray(hasMarker)) {
+ const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
+ const numberOfMarkers = hasMarker[1] || 1;
+ markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
-exports.major = major
-function major (a, loose) {
- return new SemVer(a, loose).major
-}
+ if (lastMarkerLine && opts.message) {
+ markerLine += " " + maybeHighlight(defs.message, opts.message);
+ }
+ }
-exports.minor = minor
-function minor (a, loose) {
- return new SemVer(a, loose).minor
-}
+ return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
+ } else {
+ return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`;
+ }
+ }).join("\n");
-exports.patch = patch
-function patch (a, loose) {
- return new SemVer(a, loose).patch
-}
+ if (opts.message && !hasColumns) {
+ frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
+ }
-exports.compare = compare
-function compare (a, b, loose) {
- return new SemVer(a, loose).compare(new SemVer(b, loose))
+ if (highlighted) {
+ return chalk.reset(frame);
+ } else {
+ return frame;
+ }
}
-exports.compareLoose = compareLoose
-function compareLoose (a, b) {
- return compare(a, b, true)
-}
+function _default(rawLines, lineNumber, colNumber, opts = {}) {
+ if (!deprecationWarningShown) {
+ deprecationWarningShown = true;
+ const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
-exports.rcompare = rcompare
-function rcompare (a, b, loose) {
- return compare(b, a, loose)
-}
+ if (process.emitWarning) {
+ process.emitWarning(message, "DeprecationWarning");
+ } else {
+ const deprecationError = new Error(message);
+ deprecationError.name = "DeprecationWarning";
+ console.warn(new Error(message));
+ }
+ }
-exports.sort = sort
-function sort (list, loose) {
- return list.sort(function (a, b) {
- return exports.compare(a, b, loose)
- })
+ colNumber = Math.max(colNumber, 0);
+ const location = {
+ start: {
+ column: colNumber,
+ line: lineNumber
+ }
+ };
+ return codeFrameColumns(rawLines, location, opts);
}
-exports.rsort = rsort
-function rsort (list, loose) {
- return list.sort(function (a, b) {
- return exports.rcompare(a, b, loose)
- })
-}
+/***/ }),
+/* 472 */
+/***/ (function(module, exports, __webpack_require__) {
-exports.gt = gt
-function gt (a, b, loose) {
- return compare(a, b, loose) > 0
-}
+"use strict";
-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
-}
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = highlight;
+exports.getChalk = getChalk;
+exports.shouldHighlight = shouldHighlight;
-exports.neq = neq
-function neq (a, b, loose) {
- return compare(a, b, loose) !== 0
-}
+var _jsTokens = __webpack_require__(473);
-exports.gte = gte
-function gte (a, b, loose) {
- return compare(a, b, loose) >= 0
-}
+var _helperValidatorIdentifier = __webpack_require__(474);
-exports.lte = lte
-function lte (a, b, loose) {
- return compare(a, b, loose) <= 0
+var _chalk = __webpack_require__(477);
+
+const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
+
+function getDefs(chalk) {
+ return {
+ keyword: chalk.cyan,
+ capitalized: chalk.yellow,
+ jsxIdentifier: chalk.yellow,
+ punctuator: chalk.yellow,
+ number: chalk.magenta,
+ string: chalk.green,
+ regex: chalk.magenta,
+ comment: chalk.grey,
+ invalid: chalk.white.bgRed.bold
+ };
}
-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
+const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+const BRACKET = /^[()[\]{}]$/;
+let tokenize;
+{
+ const JSX_TAG = /^[a-z][\w-]*$/i;
- case '!==':
- if (typeof a === 'object')
- a = a.version
- if (typeof b === 'object')
- b = b.version
- return a !== b
+ const getTokenType = function (token, offset, text) {
+ if (token.type === "name") {
+ if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) {
+ return "keyword";
+ }
- case '':
- case '=':
- case '==':
- return eq(a, b, loose)
+ if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "")) {
+ return "jsxIdentifier";
+ }
- case '!=':
- return neq(a, b, loose)
+ if (token.value[0] !== token.value[0].toLowerCase()) {
+ return "capitalized";
+ }
+ }
- case '>':
- return gt(a, b, loose)
+ if (token.type === "punctuator" && BRACKET.test(token.value)) {
+ return "bracket";
+ }
- case '>=':
- return gte(a, b, loose)
+ if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
+ return "punctuator";
+ }
- case '<':
- return lt(a, b, loose)
+ return token.type;
+ };
- case '<=':
- return lte(a, b, loose)
+ tokenize = function* (text) {
+ let match;
- default:
- throw new TypeError('Invalid operator: ' + op)
- }
-}
+ while (match = _jsTokens.default.exec(text)) {
+ const token = _jsTokens.matchToToken(match);
-exports.Comparator = Comparator
-function Comparator (comp, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
+ yield {
+ type: getTokenType(token, match.index, text),
+ value: token.value
+ };
}
- }
+ };
+}
- if (comp instanceof Comparator) {
- if (comp.loose === !!options.loose) {
- return comp
+function highlightTokens(defs, text) {
+ let highlighted = "";
+
+ for (const {
+ type,
+ value
+ } of tokenize(text)) {
+ const colorize = defs[type];
+
+ if (colorize) {
+ highlighted += value.split(NEWLINE).map(str => colorize(str)).join("\n");
} else {
- comp = comp.value
+ highlighted += value;
}
}
- if (!(this instanceof Comparator)) {
- return new Comparator(comp, options)
- }
-
- debug('comparator', comp, options)
- this.options = options
- this.loose = !!options.loose
- this.parse(comp)
-
- if (this.semver === ANY) {
- this.value = ''
- } else {
- this.value = this.operator + this.semver.version
- }
+ return highlighted;
+}
- debug('comp', this)
+function shouldHighlight(options) {
+ return !!_chalk.supportsColor || options.forceColor;
}
-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 = ''
- }
+function getChalk(options) {
+ return options.forceColor ? new _chalk.constructor({
+ enabled: true,
+ level: 1
+ }) : _chalk;
+}
- // if it literally is just '>' or '' then allow anything.
- if (!m[2]) {
- this.semver = ANY
+function highlight(code, options = {}) {
+ if (code !== "" && shouldHighlight(options)) {
+ const chalk = getChalk(options);
+ const defs = getDefs(chalk);
+ return highlightTokens(defs, code);
} else {
- this.semver = new SemVer(m[2], this.options.loose)
+ return code;
}
}
-Comparator.prototype.toString = function () {
- return this.value
-}
+/***/ }),
+/* 473 */
+/***/ (function(module, exports) {
-Comparator.prototype.test = function (version) {
- debug('Comparator.test', version, this.options.loose)
+// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell
+// License: MIT. (See LICENSE.)
- if (this.semver === ANY) {
- return true
- }
+Object.defineProperty(exports, "__esModule", {
+ value: true
+})
- if (typeof version === 'string') {
- version = new SemVer(version, this.options)
- }
+// This regex comes from regex.coffee, and is inserted here by generate-index.js
+// (run `npm run build`).
+exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g
- return cmp(version, this.operator, this.semver, this.options)
+exports.matchToToken = function(match) {
+ var token = {type: "invalid", value: match[0], closed: undefined}
+ if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4])
+ else if (match[ 5]) token.type = "comment"
+ else if (match[ 6]) token.type = "comment", token.closed = !!match[7]
+ else if (match[ 8]) token.type = "regex"
+ else if (match[ 9]) token.type = "number"
+ else if (match[10]) token.type = "name"
+ else if (match[11]) token.type = "punctuator"
+ else if (match[12]) token.type = "whitespace"
+ return token
}
-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
- }
- }
+/***/ }),
+/* 474 */
+/***/ (function(module, exports, __webpack_require__) {
- var rangeTmp
+"use strict";
- 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)
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "isIdentifierChar", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierChar;
+ }
+});
+Object.defineProperty(exports, "isIdentifierName", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierName;
+ }
+});
+Object.defineProperty(exports, "isIdentifierStart", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierStart;
+ }
+});
+Object.defineProperty(exports, "isKeyword", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isKeyword;
+ }
+});
+Object.defineProperty(exports, "isReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindOnlyReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindReservedWord;
}
+});
+Object.defineProperty(exports, "isStrictReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictReservedWord;
+ }
+});
- 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 === '>'))
+var _identifier = __webpack_require__(475);
- return sameDirectionIncreasing || sameDirectionDecreasing ||
- (sameSemVer && differentDirectionsInclusive) ||
- oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
-}
+var _keyword = __webpack_require__(476);
-exports.Range = Range
-function Range (range, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
+/***/ }),
+/* 475 */
+/***/ (function(module, exports, __webpack_require__) {
- if (range instanceof Range) {
- if (range.loose === !!options.loose &&
- range.includePrerelease === !!options.includePrerelease) {
- return range
- } else {
- return new Range(range.raw, options)
- }
- }
+"use strict";
- if (range instanceof Comparator) {
- return new Range(range.value, options)
- }
- if (!(this instanceof Range)) {
- return new Range(range, options)
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isIdentifierChar = isIdentifierChar;
+exports.isIdentifierName = isIdentifierName;
+exports.isIdentifierStart = isIdentifierStart;
+let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
+let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
+const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
+const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
+nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
+const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];
+const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
+
+function isInAstralSet(code, set) {
+ let pos = 0x10000;
+
+ for (let i = 0, length = set.length; i < length; i += 2) {
+ pos += set[i];
+ if (pos > code) return false;
+ pos += set[i + 1];
+ if (pos >= code) return true;
}
- this.options = options
- this.loose = !!options.loose
- this.includePrerelease = !!options.includePrerelease
+ return false;
+}
- // 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
- })
+function isIdentifierStart(code) {
+ if (code < 65) return code === 36;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
- if (!this.set.length) {
- throw new TypeError('Invalid SemVer Range: ' + range)
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
}
- this.format()
+ return isInAstralSet(code, astralIdentifierStartCodes);
}
-Range.prototype.format = function () {
- this.range = this.set.map(function (comps) {
- return comps.join(' ').trim()
- }).join('||').trim()
- return this.range
-}
+function isIdentifierChar(code) {
+ if (code < 48) return code === 36;
+ if (code < 58) return true;
+ if (code < 65) return false;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
-Range.prototype.toString = function () {
- return this.range
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
+ }
+
+ return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
}
-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])
+function isIdentifierName(name) {
+ let isFirst = true;
- // `~ 1.2.3` => `~1.2.3`
- range = range.replace(re[TILDETRIM], tildeTrimReplace)
+ for (let i = 0; i < name.length; i++) {
+ let cp = name.charCodeAt(i);
- // `^ 1.2.3` => `^1.2.3`
- range = range.replace(re[CARETTRIM], caretTrimReplace)
+ if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
+ const trail = name.charCodeAt(++i);
- // normalize spaces
- range = range.split(/\s+/).join(' ')
+ if ((trail & 0xfc00) === 0xdc00) {
+ cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
+ }
+ }
- // At this point, the range is completely trimmed and
- // ready to be split into comparators.
+ if (isFirst) {
+ isFirst = false;
- 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)
- })
+ if (!isIdentifierStart(cp)) {
+ return false;
+ }
+ } else if (!isIdentifierChar(cp)) {
+ return false;
+ }
}
- set = set.map(function (comp) {
- return new Comparator(comp, this.options)
- }, this)
- return set
+ return !isFirst;
}
-Range.prototype.intersects = function (range, options) {
- if (!(range instanceof Range)) {
- throw new TypeError('a Range is required')
- }
+/***/ }),
+/* 476 */
+/***/ (function(module, exports, __webpack_require__) {
- 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)
- })
- })
- })
- })
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isKeyword = isKeyword;
+exports.isReservedWord = isReservedWord;
+exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
+exports.isStrictBindReservedWord = isStrictBindReservedWord;
+exports.isStrictReservedWord = isStrictReservedWord;
+const reservedWords = {
+ keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
+ strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
+ strictBind: ["eval", "arguments"]
+};
+const keywords = new Set(reservedWords.keyword);
+const reservedWordsStrictSet = new Set(reservedWords.strict);
+const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
+
+function isReservedWord(word, inModule) {
+ return inModule && word === "await" || word === "enum";
}
-// 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(' ')
- })
+function isStrictReservedWord(word, inModule) {
+ return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
}
-// 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 isStrictBindOnlyReservedWord(word) {
+ return reservedWordsStrictBindSet.has(word);
}
-function isX (id) {
- return !id || id.toLowerCase() === 'x' || id === '*'
+function isStrictBindReservedWord(word, inModule) {
+ return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
}
-// ~, ~> --> * (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 isKeyword(word) {
+ return keywords.has(word);
}
-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
+/***/ }),
+/* 477 */
+/***/ (function(module, exports, __webpack_require__) {
- 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'
- }
+"use strict";
- debug('tilde return', ret)
- return ret
- })
-}
+const escapeStringRegexp = __webpack_require__(478);
+const ansiStyles = __webpack_require__(479);
+const stdoutColor = __webpack_require__(484).stdout;
-// ^ --> * (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 template = __webpack_require__(486);
-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 isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');
- 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'
- }
- }
+// `supportsColor.level` → `ansiStyles.color[name]` mapping
+const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];
- debug('caret return', ret)
- return ret
- })
-}
+// `color-convert` models to exclude from the Chalk API due to conflicts and such
+const skipModels = new Set(['gray']);
-function replaceXRanges (comp, options) {
- debug('replaceXRanges', comp, options)
- return comp.split(/\s+/).map(function (comp) {
- return replaceXRange(comp, options)
- }).join(' ')
+const styles = Object.create(null);
+
+function applyOptions(obj, options) {
+ options = options || {};
+
+ // Detect level if not set manually
+ const scLevel = stdoutColor ? stdoutColor.level : 0;
+ obj.level = options.level === undefined ? scLevel : options.level;
+ obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;
}
-function 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
+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);
- if (gtlt === '=' && anyX) {
- gtlt = ''
- }
+ chalk.template = function () {
+ const args = [].slice.call(arguments);
+ return chalkTag.apply(null, [chalk.template].concat(args));
+ };
- 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
-
- 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
- }
- }
+ Object.setPrototypeOf(chalk, Chalk.prototype);
+ Object.setPrototypeOf(chalk.template, chalk);
- 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'
- }
+ chalk.template.constructor = Chalk;
- debug('xRange return', ret)
+ return chalk.template;
+ }
- return ret
- })
+ applyOptions(this, options);
}
-// 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 bright blue on Windows as the normal blue color is illegible
+if (isSimpleWindowsTerm) {
+ ansiStyles.blue.open = '\u001B[94m';
}
-// 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
- }
+for (const key of Object.keys(ansiStyles)) {
+ ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
- return (from + ' ' + to).trim()
+ styles[key] = {
+ get() {
+ const codes = ansiStyles[key];
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);
+ }
+ };
}
-// if ANY of the sets match ALL of its comparators, then pass
-Range.prototype.test = function (version) {
- if (!version) {
- return false
- }
+styles.visible = {
+ get() {
+ return build.call(this, this._styles || [], true, 'visible');
+ }
+};
- if (typeof version === 'string') {
- version = new SemVer(version, this.options)
- }
+ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');
+for (const model of Object.keys(ansiStyles.color.ansi)) {
+ if (skipModels.has(model)) {
+ continue;
+ }
- for (var i = 0; i < this.set.length; i++) {
- if (testSet(this.set[i], version, this.options)) {
- return true
- }
- }
- return false
+ 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);
+ };
+ }
+ };
}
-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
- }
-
- if (set[i].semver.prerelease.length > 0) {
- var allowed = set[i].semver
- if (allowed.major === version.major &&
- allowed.minor === version.minor &&
- allowed.patch === version.patch) {
- return true
- }
- }
- }
-
- // Version has a -pre, but it's not one of the ones we like.
- return false
- }
-
- return true
-}
+ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');
+for (const model of Object.keys(ansiStyles.bgColor.ansi)) {
+ if (skipModels.has(model)) {
+ continue;
+ }
-exports.satisfies = satisfies
-function satisfies (version, range, options) {
- try {
- range = new Range(range, options)
- } catch (er) {
- return false
- }
- return range.test(version)
+ 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);
+ };
+ }
+ };
}
-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
-}
+const proto = Object.defineProperties(() => {}, styles);
-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
-}
+function build(_styles, _empty, key) {
+ const builder = function () {
+ return applyStyle.apply(builder, arguments);
+ };
-exports.minVersion = minVersion
-function minVersion (range, loose) {
- range = new Range(range, loose)
+ builder._styles = _styles;
+ builder._empty = _empty;
- var minver = new SemVer('0.0.0')
- if (range.test(minver)) {
- return minver
- }
+ const self = this;
- minver = new SemVer('0.0.0-0')
- if (range.test(minver)) {
- return minver
- }
+ Object.defineProperty(builder, 'level', {
+ enumerable: true,
+ get() {
+ return self.level;
+ },
+ set(level) {
+ self.level = level;
+ }
+ });
- minver = null
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i]
+ Object.defineProperty(builder, 'enabled', {
+ enumerable: true,
+ get() {
+ return self.enabled;
+ },
+ set(enabled) {
+ self.enabled = enabled;
+ }
+ });
- 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)
- }
- })
- }
+ // See below for fix regarding invisible grey/dim combination on Windows
+ builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';
- if (minver && range.test(minver)) {
- return minver
- }
+ // `__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 null
+ return builder;
}
-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
- }
-}
+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]);
-// 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 (argsLen === 0) {
+ return '';
+ }
-// 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 (argsLen > 1) {
+ // Don't slice `arguments`, it prevents V8 optimizations
+ for (let a = 1; a < argsLen; a++) {
+ str += ' ' + args[a];
+ }
+ }
-exports.outside = outside
-function outside (version, range, hilo, options) {
- version = new SemVer(version, options)
- range = new Range(range, options)
+ if (!this.enabled || this.level <= 0 || !str) {
+ return this._empty ? '' : str;
+ }
- 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 ">"')
- }
+ // 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 = '';
+ }
- // If it satisifes the range it is not outside
- if (satisfies(version, range, options)) {
- return false
- }
+ 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;
- // From now on, variable terms are as if we're in "gtr" mode.
- // but note that everything is flipped for the "ltr" function.
+ // 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}`);
+ }
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i]
+ // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue
+ ansiStyles.dim.open = originalDim;
- var high = null
- var low = null
+ return str;
+}
- 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
- }
- })
+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(' ');
+ }
- // If the edge version comparator has a operator then our version
- // isn't outside it
- if (high.operator === comp || high.operator === ecomp) {
- return false
- }
+ const args = [].slice.call(arguments, 2);
+ const parts = [strings.raw[0]];
- // 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
-}
+ for (let i = 1; i < strings.length; i++) {
+ parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&'));
+ parts.push(String(strings.raw[i]));
+ }
-exports.prerelease = prerelease
-function prerelease (version, options) {
- var parsed = parse(version, options)
- return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+ return template(chalk, parts.join(''));
}
-exports.intersects = intersects
-function intersects (r1, r2, options) {
- r1 = new Range(r1, options)
- r2 = new Range(r2, options)
- return r1.intersects(r2)
-}
+Object.defineProperties(Chalk.prototype, styles);
-exports.coerce = coerce
-function coerce (version) {
- if (version instanceof SemVer) {
- return version
- }
+module.exports = Chalk(); // eslint-disable-line new-cap
+module.exports.supportsColor = stdoutColor;
+module.exports.default = module.exports; // For TypeScript
- if (typeof version !== 'string') {
- return null
- }
- var match = version.match(re[COERCE])
+/***/ }),
+/* 478 */
+/***/ (function(module, exports, __webpack_require__) {
- if (match == null) {
- return null
- }
+"use strict";
- return parse(match[1] +
- '.' + (match[2] || '0') +
- '.' + (match[3] || '0'))
-}
+var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
-/***/ }),
-/* 369 */
-/***/ (function(module, exports, __webpack_require__) {
+module.exports = function (str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
-var parse = __webpack_require__(370);
-var correct = __webpack_require__(372);
+ return str.replace(matchOperatorsRe, '\\$&');
+};
-var genericWarning = (
- 'license should be ' +
- 'a valid SPDX license expression (without "LicenseRef"), ' +
- '"UNLICENSED", or ' +
- '"SEE LICENSE IN "'
-);
-var fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;
+/***/ }),
+/* 479 */
+/***/ (function(module, exports, __webpack_require__) {
-function startsWith(prefix, string) {
- return string.slice(0, prefix.length) === prefix;
-}
+"use strict";
+/* WEBPACK VAR INJECTION */(function(module) {
+const colorConvert = __webpack_require__(480);
-function usesLicenseRef(ast) {
- if (ast.hasOwnProperty('license')) {
- var license = ast.license;
- return (
- startsWith('LicenseRef', license) ||
- startsWith('DocumentRef', license)
- );
- } else {
- return (
- usesLicenseRef(ast.left) ||
- usesLicenseRef(ast.right)
- );
- }
-}
-
-module.exports = function(argument) {
- var ast;
-
- try {
- ast = parse(argument);
- } catch (e) {
- var match
- if (
- argument === 'UNLICENSED' ||
- argument === 'UNLICENCED'
- ) {
- return {
- validForOldPackages: true,
- validForNewPackages: true,
- unlicensed: true
- };
- } else if (match = fileReferenceRE.exec(argument)) {
- return {
- validForOldPackages: true,
- validForNewPackages: true,
- inFile: match[1]
- };
- } else {
- var result = {
- validForOldPackages: false,
- validForNewPackages: false,
- warnings: [genericWarning]
- };
- var corrected = correct(argument);
- if (corrected) {
- result.warnings.push(
- 'license is similar to the valid expression "' + corrected + '"'
- );
- }
- return result;
- }
- }
+const wrapAnsi16 = (fn, offset) => function () {
+ const code = fn.apply(colorConvert, arguments);
+ return `\u001B[${code + offset}m`;
+};
- if (usesLicenseRef(ast)) {
- return {
- validForNewPackages: false,
- validForOldPackages: false,
- spdx: true,
- warnings: [genericWarning]
- };
- } else {
- return {
- validForNewPackages: true,
- validForOldPackages: true,
- spdx: true
- };
- }
+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`;
+};
-/***/ }),
-/* 370 */
-/***/ (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],
-var parser = __webpack_require__(371).parser
+ // 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],
-module.exports = function (argument) {
- return parser.parse(argument)
-}
+ // 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;
-/***/ }),
-/* 371 */
-/***/ (function(module, exports, __webpack_require__) {
+ for (const groupName of Object.keys(styles)) {
+ const group = styles[groupName];
-/* WEBPACK VAR INJECTION */(function(module) {/* parser generated by jison 0.4.17 */
-/*
- Returns a Parser object of the following structure:
+ for (const styleName of Object.keys(group)) {
+ const style = group[styleName];
- Parser: {
- yy: {}
- }
+ styles[styleName] = {
+ open: `\u001B[${style[0]}m`,
+ close: `\u001B[${style[1]}m`
+ };
- 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),
+ group[styleName] = styles[styleName];
- 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),
+ codes.set(style[0], style[1]);
+ }
- 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)
- },
+ Object.defineProperty(styles, groupName, {
+ value: group,
+ enumerable: false
+ });
- performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
- rules: [...],
- conditions: {associative list: name ==> set},
- }
- }
+ Object.defineProperty(styles, 'codes', {
+ value: codes,
+ enumerable: false
+ });
+ }
+ const ansi2ansi = n => n;
+ const rgb2rgb = (r, g, b) => [r, g, b];
- 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)
- }
+ styles.color.close = '\u001B[39m';
+ styles.bgColor.close = '\u001B[49m';
+ styles.color.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 0)
+ };
+ styles.color.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 0)
+ };
+ styles.color.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 0)
+ };
- 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 */
+ styles.bgColor.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 10)
+ };
-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;
+ for (let key of Object.keys(colorConvert)) {
+ if (typeof colorConvert[key] !== 'object') {
+ continue;
+ }
- 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 = ({
+ const suite = colorConvert[key];
-EOF:1,
+ if (key === 'ansi16') {
+ key = 'ansi';
+ }
-parseError:function parseError(str, hash) {
- if (this.yy.parser) {
- this.yy.parser.parseError(str, hash);
- } else {
- throw new Error(str);
- }
- },
+ if ('ansi16' in suite) {
+ styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
+ styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
+ }
-// 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;
- },
+ if ('ansi256' in suite) {
+ styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
+ styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
+ }
-// 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]++;
- }
+ if ('rgb' in suite) {
+ styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
+ styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
+ }
+ }
- this._input = this._input.slice(1);
- return ch;
- },
+ return styles;
+}
-// unshifts one char (or a string) into the input
-unput:function (ch) {
- var len = ch.length;
- var lines = ch.split(/(?:\r\n?|\n)/g);
+// Make the export immutable
+Object.defineProperty(module, 'exports', {
+ enumerable: true,
+ get: assembleStyles
+});
- 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);
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(237)(module)))
- if (lines.length - 1) {
- this.yylineno -= lines.length - 1;
- }
- var r = this.yylloc.range;
+/***/ }),
+/* 480 */
+/***/ (function(module, exports, __webpack_require__) {
- 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
- };
+var conversions = __webpack_require__(481);
+var route = __webpack_require__(483);
- if (this.options.ranges) {
- this.yylloc.range = [r[0], r[0] + this.yyleng - len];
- }
- this.yyleng = this.yytext.length;
- return this;
- },
+var convert = {};
-// When called from action, caches matched text and appends it on next action
-more:function () {
- this._more = true;
- return this;
- },
+var models = Object.keys(conversions);
-// 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
- });
+function wrapRaw(fn) {
+ var wrappedFn = function (args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
- }
- return this;
- },
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
-// retain first n characters of the match
-less:function (n) {
- this.unput(this.match.slice(n));
- },
+ return fn(args);
+ };
-// 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, "");
- },
+ // preserve .conversion property if there is one
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
-// 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, "");
- },
+ return wrappedFn;
+}
-// 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 + "^";
- },
+function wrapRounded(fn) {
+ var wrappedFn = function (args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
-// test the lexed token: return FALSE when not a match, otherwise return token
-test_match:function (match, indexed_rule) {
- var token,
- lines,
- backup;
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
- 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);
- }
- }
+ var result = fn(args);
- 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;
- },
+ // we're assuming the result is an array here.
+ // see notice in conversions.js; don't use box types
+ // in conversion functions.
+ if (typeof result === 'object') {
+ for (var len = result.length, i = 0; i < len; i++) {
+ result[i] = Math.round(result[i]);
+ }
+ }
-// return next match in input
-next:function () {
- if (this.done) {
- return this.EOF;
- }
- if (!this._input) {
- this.done = true;
- }
+ return result;
+ };
- 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
- });
- }
- },
+ // preserve .conversion property if there is one
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
-// return next match that has a token
-lex:function lex() {
- var r = this.next();
- if (r) {
- return r;
- } else {
- return this.lex();
- }
- },
+ return wrappedFn;
+}
-// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
-begin:function begin(condition) {
- this.conditionStack.push(condition);
- },
+models.forEach(function (fromModel) {
+ convert[fromModel] = {};
-// 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];
- }
- },
+ Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
+ Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
-// 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 routes = route(fromModel);
+ var routeModels = Object.keys(routes);
-// 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";
- }
- },
+ routeModels.forEach(function (toModel) {
+ var fn = routes[toModel];
-// alias for begin(condition)
-pushState:function pushState(condition) {
- this.begin(condition);
- },
+ convert[fromModel][toModel] = wrapRounded(fn);
+ convert[fromModel][toModel].raw = wrapRaw(fn);
+ });
+});
-// 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;
+module.exports = convert;
+
+
+/***/ }),
+/* 481 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* MIT license */
+var cssKeywords = __webpack_require__(482);
+
+// NOTE: conversions should only return primitive values (i.e. arrays, or
+// values that give correct `typeof` results).
+// do not use box values types (i.e. Number(), String(), etc.)
+
+var reverseKeywords = {};
+for (var key in cssKeywords) {
+ if (cssKeywords.hasOwnProperty(key)) {
+ reverseKeywords[cssKeywords[key]] = key;
+ }
}
-},
-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 = {};
+
+var convert = module.exports = {
+ rgb: {channels: 3, labels: 'rgb'},
+ hsl: {channels: 3, labels: 'hsl'},
+ hsv: {channels: 3, labels: 'hsv'},
+ hwb: {channels: 3, labels: 'hwb'},
+ cmyk: {channels: 4, labels: 'cmyk'},
+ xyz: {channels: 3, labels: 'xyz'},
+ lab: {channels: 3, labels: 'lab'},
+ lch: {channels: 3, labels: 'lch'},
+ hex: {channels: 1, labels: ['hex']},
+ keyword: {channels: 1, labels: ['keyword']},
+ ansi16: {channels: 1, labels: ['ansi16']},
+ ansi256: {channels: 1, labels: ['ansi256']},
+ hcg: {channels: 3, labels: ['h', 'c', 'g']},
+ apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
+ gray: {channels: 1, labels: ['gray']}
+};
+
+// hide .channels and .labels properties
+for (var model in convert) {
+ if (convert.hasOwnProperty(model)) {
+ if (!('channels' in convert[model])) {
+ throw new Error('missing channels property: ' + model);
+ }
+
+ if (!('labels' in convert[model])) {
+ throw new Error('missing channel labels property: ' + model);
+ }
+
+ if (convert[model].labels.length !== convert[model].channels) {
+ throw new Error('channel and label counts mismatch: ' + model);
+ }
+
+ var channels = convert[model].channels;
+ var labels = convert[model].labels;
+ delete convert[model].channels;
+ delete convert[model].labels;
+ Object.defineProperty(convert[model], 'channels', {value: channels});
+ Object.defineProperty(convert[model], 'labels', {value: labels});
+ }
}
-Parser.prototype = parser;parser.Parser = Parser;
-return new Parser;
-})();
+convert.rgb.hsl = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var min = Math.min(r, g, b);
+ var max = Math.max(r, g, b);
+ var delta = max - min;
+ var h;
+ var s;
+ var l;
-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__(132).readFileSync(__webpack_require__(4).normalize(args[1]), "utf8");
- return exports.parser.parse(source);
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
+
+ h = Math.min(h * 60, 360);
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ l = (min + max) / 2;
+
+ if (max === min) {
+ s = 0;
+ } else if (l <= 0.5) {
+ s = delta / (max + min);
+ } else {
+ s = delta / (2 - max - min);
+ }
+
+ return [h, s * 100, l * 100];
};
-if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
- exports.main(process.argv.slice(1));
-}
-}
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(116)(module)))
+convert.rgb.hsv = function (rgb) {
+ var rdif;
+ var gdif;
+ var bdif;
+ var h;
+ var s;
-/***/ }),
-/* 372 */
-/***/ (function(module, exports, __webpack_require__) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var v = Math.max(r, g, b);
+ var diff = v - Math.min(r, g, b);
+ var diffc = function (c) {
+ return (v - c) / 6 / diff + 1 / 2;
+ };
-var licenseIDs = __webpack_require__(373);
+ if (diff === 0) {
+ h = s = 0;
+ } else {
+ s = diff / v;
+ rdif = diffc(r);
+ gdif = diffc(g);
+ bdif = diffc(b);
-function valid(string) {
- return licenseIDs.indexOf(string) > -1;
+ if (r === v) {
+ h = bdif - gdif;
+ } else if (g === v) {
+ h = (1 / 3) + rdif - bdif;
+ } else if (b === v) {
+ h = (2 / 3) + gdif - rdif;
+ }
+ if (h < 0) {
+ h += 1;
+ } else if (h > 1) {
+ h -= 1;
+ }
+ }
+
+ return [
+ h * 360,
+ s * 100,
+ v * 100
+ ];
+};
+
+convert.rgb.hwb = function (rgb) {
+ var r = rgb[0];
+ var g = rgb[1];
+ var b = rgb[2];
+ var h = convert.rgb.hsl(rgb)[0];
+ var w = 1 / 255 * Math.min(r, Math.min(g, b));
+
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
+
+ return [h, w * 100, b * 100];
+};
+
+convert.rgb.cmyk = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var c;
+ var m;
+ var y;
+ var k;
+
+ k = Math.min(1 - r, 1 - g, 1 - b);
+ c = (1 - r - k) / (1 - k) || 0;
+ m = (1 - g - k) / (1 - k) || 0;
+ y = (1 - b - k) / (1 - k) || 0;
+
+ return [c * 100, m * 100, y * 100, k * 100];
+};
+
+/**
+ * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
+ * */
+function comparativeDistance(x, y) {
+ return (
+ Math.pow(x[0] - y[0], 2) +
+ Math.pow(x[1] - y[1], 2) +
+ Math.pow(x[2] - y[2], 2)
+ );
}
-// Common transpositions of license identifier acronyms
-var transpositions = [
- ['APGL', 'AGPL'],
- ['Gpl', 'GPL'],
- ['GLP', 'GPL'],
- ['APL', 'Apache'],
- ['ISD', 'ISC'],
- ['GLP', 'GPL'],
- ['IST', 'ISC'],
- ['Claude', 'Clause'],
- [' or later', '+'],
- [' International', ''],
- ['GNU', 'GPL'],
- ['GUN', 'GPL'],
- ['+', ''],
- ['GNU GPL', 'GPL'],
- ['GNU/GPL', 'GPL'],
- ['GNU GLP', 'GPL'],
- ['GNU General Public License', 'GPL'],
- ['Gnu public license', 'GPL'],
- ['GNU Public License', 'GPL'],
- ['GNU GENERAL PUBLIC LICENSE', 'GPL'],
- ['MTI', 'MIT'],
- ['Mozilla Public License', 'MPL'],
- ['WTH', 'WTF'],
- ['-License', '']
-];
+convert.rgb.keyword = function (rgb) {
+ var reversed = reverseKeywords[rgb];
+ if (reversed) {
+ return reversed;
+ }
-var TRANSPOSED = 0;
-var CORRECT = 1;
+ var currentClosestDistance = Infinity;
+ var currentClosestKeyword;
-// Simple corrections to nearly valid identifiers.
-var transforms = [
- // e.g. 'mit'
- function(argument) {
- return argument.toUpperCase();
- },
- // e.g. 'MIT '
- function(argument) {
- return argument.trim();
- },
- // e.g. 'M.I.T.'
- function(argument) {
- return argument.replace(/\./g, '');
- },
- // e.g. 'Apache- 2.0'
- function(argument) {
- return argument.replace(/\s+/g, '');
- },
- // e.g. 'CC BY 4.0''
- function(argument) {
- return argument.replace(/\s+/g, '-');
- },
- // e.g. 'LGPLv2.1'
- function(argument) {
- return argument.replace('v', '-');
- },
- // e.g. 'Apache 2.0'
- function(argument) {
- return argument.replace(/,?\s*(\d)/, '-$1');
- },
- // e.g. 'GPL 2'
- function(argument) {
- return argument.replace(/,?\s*(\d)/, '-$1.0');
- },
- // e.g. 'Apache Version 2.0'
- function(argument) {
- return argument.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2');
- },
- // e.g. 'Apache Version 2'
- function(argument) {
- return argument.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2.0');
- },
- // e.g. 'ZLIB'
- function(argument) {
- return argument[0].toUpperCase() + argument.slice(1);
- },
- // e.g. 'MPL/2.0'
- function(argument) {
- return argument.replace('/', '-');
- },
- // e.g. 'Apache 2'
- function(argument) {
- return argument
- .replace(/\s*V\s*(\d)/, '-$1')
- .replace(/(\d)$/, '$1.0');
- },
- // e.g. 'GPL-2.0-'
- function(argument) {
- return argument.slice(0, argument.length - 1);
- },
- // e.g. 'GPL2'
- function(argument) {
- return argument.replace(/(\d)$/, '-$1.0');
- },
- // e.g. 'BSD 3'
- function(argument) {
- return argument.replace(/(-| )?(\d)$/, '-$2-Clause');
- },
- // e.g. 'BSD clause 3'
- function(argument) {
- return argument.replace(/(-| )clause(-| )(\d)/, '-$3-Clause');
- },
- // e.g. 'BY-NC-4.0'
- function(argument) {
- return 'CC-' + argument;
- },
- // e.g. 'BY-NC'
- function(argument) {
- return 'CC-' + argument + '-4.0';
- },
- // e.g. 'Attribution-NonCommercial'
- function(argument) {
- return argument
- .replace('Attribution', 'BY')
- .replace('NonCommercial', 'NC')
- .replace('NoDerivatives', 'ND')
- .replace(/ (\d)/, '-$1')
- .replace(/ ?International/, '');
- },
- // e.g. 'Attribution-NonCommercial'
- function(argument) {
- return 'CC-' +
- argument
- .replace('Attribution', 'BY')
- .replace('NonCommercial', 'NC')
- .replace('NoDerivatives', 'ND')
- .replace(/ (\d)/, '-$1')
- .replace(/ ?International/, '') +
- '-4.0';
- }
-];
+ for (var keyword in cssKeywords) {
+ if (cssKeywords.hasOwnProperty(keyword)) {
+ var value = cssKeywords[keyword];
-// If all else fails, guess that strings containing certain substrings
-// meant to identify certain licenses.
-var lastResorts = [
- ['UNLI', 'Unlicense'],
- ['WTF', 'WTFPL'],
- ['2 CLAUSE', 'BSD-2-Clause'],
- ['2-CLAUSE', 'BSD-2-Clause'],
- ['3 CLAUSE', 'BSD-3-Clause'],
- ['3-CLAUSE', 'BSD-3-Clause'],
- ['AFFERO', 'AGPL-3.0'],
- ['AGPL', 'AGPL-3.0'],
- ['APACHE', 'Apache-2.0'],
- ['ARTISTIC', 'Artistic-2.0'],
- ['Affero', 'AGPL-3.0'],
- ['BEER', 'Beerware'],
- ['BOOST', 'BSL-1.0'],
- ['BSD', 'BSD-2-Clause'],
- ['ECLIPSE', 'EPL-1.0'],
- ['FUCK', 'WTFPL'],
- ['GNU', 'GPL-3.0'],
- ['LGPL', 'LGPL-3.0'],
- ['GPL', 'GPL-3.0'],
- ['MIT', 'MIT'],
- ['MPL', 'MPL-2.0'],
- ['X11', 'X11'],
- ['ZLIB', 'Zlib']
-];
+ // Compute comparative distance
+ var distance = comparativeDistance(rgb, value);
-var SUBSTRING = 0;
-var IDENTIFIER = 1;
+ // Check if its less, if so set as closest
+ if (distance < currentClosestDistance) {
+ currentClosestDistance = distance;
+ currentClosestKeyword = keyword;
+ }
+ }
+ }
-var validTransformation = function(identifier) {
- for (var i = 0; i < transforms.length; i++) {
- var transformed = transforms[i](identifier);
- if (transformed !== identifier && valid(transformed)) {
- return transformed;
- }
- }
- return null;
+ return currentClosestKeyword;
};
-var validLastResort = function(identifier) {
- var upperCased = identifier.toUpperCase();
- for (var i = 0; i < lastResorts.length; i++) {
- var lastResort = lastResorts[i];
- if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {
- return lastResort[IDENTIFIER];
- }
- }
- return null;
+convert.keyword.rgb = function (keyword) {
+ return cssKeywords[keyword];
};
-var anyCorrection = function(identifier, check) {
- for (var i = 0; i < transpositions.length; i++) {
- var transposition = transpositions[i];
- var transposed = transposition[TRANSPOSED];
- if (identifier.indexOf(transposed) > -1) {
- var corrected = identifier.replace(
- transposed,
- transposition[CORRECT]
- );
- var checked = check(corrected);
- if (checked !== null) {
- return checked;
- }
- }
- }
- return null;
+convert.rgb.xyz = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+
+ // assume sRGB
+ r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);
+ g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);
+ b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);
+
+ var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
+ var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
+ var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
+
+ return [x * 100, y * 100, z * 100];
};
-module.exports = function(identifier) {
- identifier = identifier.replace(/\+$/, '');
- if (valid(identifier)) {
- return identifier;
- }
- var transformed = validTransformation(identifier);
- if (transformed !== null) {
- return transformed;
- }
- transformed = anyCorrection(identifier, function(argument) {
- if (valid(argument)) {
- return argument;
- }
- return validTransformation(argument);
- });
- if (transformed !== null) {
- return transformed;
- }
- transformed = validLastResort(identifier);
- if (transformed !== null) {
- return transformed;
- }
- transformed = anyCorrection(identifier, validLastResort);
- if (transformed !== null) {
- return transformed;
- }
- return null;
+convert.rgb.lab = function (rgb) {
+ var xyz = convert.rgb.xyz(rgb);
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
+
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
+
+ l = (116 * y) - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
+
+ return [l, a, b];
};
+convert.hsl.rgb = function (hsl) {
+ var h = hsl[0] / 360;
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var t1;
+ var t2;
+ var t3;
+ var rgb;
+ var val;
-/***/ }),
-/* 373 */
-/***/ (function(module) {
+ if (s === 0) {
+ val = l * 255;
+ return [val, val, val];
+ }
-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\"]");
+ if (l < 0.5) {
+ t2 = l * (1 + s);
+ } else {
+ t2 = l + s - l * s;
+ }
-/***/ }),
-/* 374 */
-/***/ (function(module, exports, __webpack_require__) {
+ t1 = 2 * l - t2;
-"use strict";
+ rgb = [0, 0, 0];
+ for (var i = 0; i < 3; i++) {
+ t3 = h + 1 / 3 * -(i - 1);
+ if (t3 < 0) {
+ t3++;
+ }
+ if (t3 > 1) {
+ t3--;
+ }
-var url = __webpack_require__(203)
-var gitHosts = __webpack_require__(375)
-var GitHost = module.exports = __webpack_require__(376)
+ if (6 * t3 < 1) {
+ val = t1 + (t2 - t1) * 6 * t3;
+ } else if (2 * t3 < 1) {
+ val = t2;
+ } else if (3 * t3 < 2) {
+ val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
+ } else {
+ val = t1;
+ }
-var protocolToRepresentationMap = {
- 'git+ssh:': 'sshurl',
- 'git+https:': 'https',
- 'ssh:': 'sshurl',
- 'git:': 'git'
-}
+ rgb[i] = val * 255;
+ }
-function protocolToRepresentation (protocol) {
- return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)
-}
+ return rgb;
+};
-var authProtocols = {
- 'git:': true,
- 'https:': true,
- 'git+https:': true,
- 'http:': true,
- 'git+http:': true
-}
+convert.hsl.hsv = function (hsl) {
+ var h = hsl[0];
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var smin = s;
+ var lmin = Math.max(l, 0.01);
+ var sv;
+ var v;
-var cache = {}
+ l *= 2;
+ s *= (l <= 1) ? l : 2 - l;
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
+ v = (l + s) / 2;
+ sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
-module.exports.fromUrl = function (giturl, opts) {
- if (typeof giturl !== 'string') return
- var key = giturl + JSON.stringify(opts || {})
+ return [h, sv * 100, v * 100];
+};
- if (!(key in cache)) {
- cache[key] = fromUrl(giturl, opts)
- }
+convert.hsv.rgb = function (hsv) {
+ var h = hsv[0] / 60;
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var hi = Math.floor(h) % 6;
- return cache[key]
-}
+ var f = h - Math.floor(h);
+ var p = 255 * v * (1 - s);
+ var q = 255 * v * (1 - (s * f));
+ var t = 255 * v * (1 - (s * (1 - f)));
+ v *= 255;
-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]
-}
+ switch (hi) {
+ case 0:
+ return [v, t, p];
+ case 1:
+ return [q, v, p];
+ case 2:
+ return [p, v, t];
+ case 3:
+ return [p, q, v];
+ case 4:
+ return [t, p, v];
+ case 5:
+ return [v, p, q];
+ }
+};
-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)
-}
+convert.hsv.hsl = function (hsv) {
+ var h = hsv[0];
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var vmin = Math.max(v, 0.01);
+ var lmin;
+ var sl;
+ var l;
-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
- }
-}
+ l = (2 - s) * v;
+ lmin = (2 - s) * vmin;
+ sl = s * vmin;
+ sl /= (lmin <= 1) ? lmin : 2 - lmin;
+ sl = sl || 0;
+ l /= 2;
-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] || '')
- }
-}
+ return [h, sl * 100, l * 100];
+};
+// http://dev.w3.org/csswg/css-color/#hwb-to-rgb
+convert.hwb.rgb = function (hwb) {
+ var h = hwb[0] / 360;
+ var wh = hwb[1] / 100;
+ var bl = hwb[2] / 100;
+ var ratio = wh + bl;
+ var i;
+ var v;
+ var f;
+ var n;
-/***/ }),
-/* 375 */
-/***/ (function(module, exports, __webpack_require__) {
+ // wh + bl cant be > 1
+ if (ratio > 1) {
+ wh /= ratio;
+ bl /= ratio;
+ }
-"use strict";
+ i = Math.floor(6 * h);
+ v = 1 - bl;
+ f = 6 * h - i;
+ if ((i & 0x01) !== 0) {
+ f = 1 - f;
+ }
-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)
- }
- }
-}
+ n = wh + f * (v - wh); // linear interpolation
-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
-}
+ var r;
+ var g;
+ var b;
+ switch (i) {
+ default:
+ case 6:
+ case 0: r = v; g = n; b = wh; break;
+ case 1: r = n; g = v; b = wh; break;
+ case 2: r = wh; g = v; b = n; break;
+ case 3: r = wh; g = n; b = v; break;
+ case 4: r = n; g = wh; b = v; break;
+ case 5: r = v; g = wh; b = n; break;
+ }
-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 [r * 255, g * 255, b * 255];
+};
-function formatHashFragment (fragment) {
- return fragment.toLowerCase().replace(/^\W+|\/|\W+$/g, '').replace(/\W+/g, '-')
-}
+convert.cmyk.rgb = function (cmyk) {
+ var c = cmyk[0] / 100;
+ var m = cmyk[1] / 100;
+ var y = cmyk[2] / 100;
+ var k = cmyk[3] / 100;
+ var r;
+ var g;
+ var b;
+ r = 1 - Math.min(1, c * (1 - k) + k);
+ g = 1 - Math.min(1, m * (1 - k) + k);
+ b = 1 - Math.min(1, y * (1 - k) + k);
-/***/ }),
-/* 376 */
-/***/ (function(module, exports, __webpack_require__) {
+ return [r * 255, g * 255, b * 255];
+};
-"use strict";
+convert.xyz.rgb = function (xyz) {
+ var x = xyz[0] / 100;
+ var y = xyz[1] / 100;
+ var z = xyz[2] / 100;
+ var r;
+ var g;
+ var b;
-var gitHosts = __webpack_require__(375)
-/* eslint-disable node/no-deprecated-api */
+ r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
+ g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
+ b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
-// 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
+ // assume sRGB
+ r = r > 0.0031308
+ ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)
+ : r * 12.92;
- var keys = Object.keys(source)
- var i = keys.length
- while (i--) {
- target[keys[i]] = source[keys[i]]
- }
- return target
-}
+ g = g > 0.0031308
+ ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)
+ : g * 12.92;
-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 || {}
-}
+ b = b > 0.0031308
+ ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)
+ : b * 12.92;
-GitHost.prototype.hash = function () {
- return this.committish ? '#' + this.committish : ''
-}
+ r = Math.min(Math.max(0, r), 1);
+ g = Math.min(Math.max(0, g), 1);
+ b = Math.min(Math.max(0, b), 1);
-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
- }
-}
+ return [r * 255, g * 255, b * 255];
+};
-GitHost.prototype.ssh = function (opts) {
- return this._fill(this.sshtemplate, opts)
-}
+convert.xyz.lab = function (xyz) {
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
-GitHost.prototype.sshurl = function (opts) {
- return this._fill(this.sshurltemplate, opts)
-}
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
-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)
- }
-}
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
-GitHost.prototype.docs = function (opts) {
- return this._fill(this.docstemplate, opts)
-}
+ l = (116 * y) - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
-GitHost.prototype.bugs = function (opts) {
- return this._fill(this.bugstemplate, opts)
-}
+ return [l, a, b];
+};
-GitHost.prototype.https = function (opts) {
- return this._fill(this.httpstemplate, opts)
-}
+convert.lab.xyz = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var x;
+ var y;
+ var z;
-GitHost.prototype.git = function (opts) {
- return this._fill(this.gittemplate, opts)
-}
+ y = (l + 16) / 116;
+ x = a / 500 + y;
+ z = y - b / 200;
-GitHost.prototype.shortcut = function (opts) {
- return this._fill(this.shortcuttemplate, opts)
-}
+ var y2 = Math.pow(y, 3);
+ var x2 = Math.pow(x, 3);
+ var z2 = Math.pow(z, 3);
+ y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
+ x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
+ z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
-GitHost.prototype.path = function (opts) {
- return this._fill(this.pathtemplate, opts)
-}
+ x *= 95.047;
+ y *= 100;
+ z *= 108.883;
-GitHost.prototype.tarball = function (opts_) {
- var opts = extend({}, opts_, { noCommittish: false })
- return this._fill(this.tarballtemplate, opts)
-}
+ return [x, y, z];
+};
-GitHost.prototype.file = function (P, opts) {
- return this._fill(this.filetemplate, extend({ path: P }, opts))
-}
+convert.lab.lch = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var hr;
+ var h;
+ var c;
-GitHost.prototype.getDefaultRepresentation = function () {
- return this.default
-}
+ hr = Math.atan2(b, a);
+ h = hr * 360 / 2 / Math.PI;
-GitHost.prototype.toString = function (opts) {
- if (this.default && typeof this[this.default] === 'function') return this[this.default](opts)
- return this.sshurl(opts)
-}
+ if (h < 0) {
+ h += 360;
+ }
+ c = Math.sqrt(a * a + b * b);
-/***/ }),
-/* 377 */
-/***/ (function(module, exports, __webpack_require__) {
+ return [l, c, h];
+};
-var async = __webpack_require__(378);
-async.core = __webpack_require__(389);
-async.isCore = __webpack_require__(391);
-async.sync = __webpack_require__(392);
+convert.lch.lab = function (lch) {
+ var l = lch[0];
+ var c = lch[1];
+ var h = lch[2];
+ var a;
+ var b;
+ var hr;
-module.exports = async;
+ hr = h / 360 * 2 * Math.PI;
+ a = c * Math.cos(hr);
+ b = c * Math.sin(hr);
+ return [l, a, b];
+};
-/***/ }),
-/* 378 */
-/***/ (function(module, exports, __webpack_require__) {
+convert.rgb.ansi16 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2];
+ var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization
-var fs = __webpack_require__(132);
-var getHomedir = __webpack_require__(379);
-var path = __webpack_require__(4);
-var caller = __webpack_require__(380);
-var nodeModulesPaths = __webpack_require__(381);
-var normalizeOptions = __webpack_require__(383);
-var isCore = __webpack_require__(384);
+ value = Math.round(value / 50);
-var realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath;
+ if (value === 0) {
+ return 30;
+ }
-var homedir = getHomedir();
-var defaultPaths = function () {
- return [
- path.join(homedir, '.node_modules'),
- path.join(homedir, '.node_libraries')
- ];
-};
+ var ansi = 30
+ + ((Math.round(b / 255) << 2)
+ | (Math.round(g / 255) << 1)
+ | Math.round(r / 255));
-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);
- });
-};
+ if (value === 2) {
+ ansi += 60;
+ }
-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);
- });
+ return ansi;
};
-var defaultRealpath = function realpath(x, cb) {
- realpathFS(x, function (realpathErr, realPath) {
- if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr);
- else cb(null, realpathErr ? x : realPath);
- });
+convert.hsv.ansi16 = function (args) {
+ // optimization here; we already know the value and don't need to get
+ // it converted for us.
+ return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
};
-var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) {
- if (opts && opts.preserveSymlinks === false) {
- realpath(x, cb);
- } else {
- cb(null, x);
- }
-};
+convert.rgb.ansi256 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2];
-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);
- }
- }
- });
-};
+ // we use the extended greyscale palette here, with the exception of
+ // black and white. normal palette only has 4 greyscale shades.
+ if (r === g && g === b) {
+ if (r < 8) {
+ return 16;
+ }
-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 (r > 248) {
+ return 231;
+ }
-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);
- });
- }
+ return Math.round(((r - 8) / 247) * 24) + 232;
+ }
- opts = normalizeOptions(x, opts);
+ var ansi = 16
+ + (36 * Math.round(r / 255 * 5))
+ + (6 * Math.round(g / 255 * 5))
+ + Math.round(b / 255 * 5);
- 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 ansi;
+};
- var extensions = opts.extensions || ['.js'];
- var includeCoreModules = opts.includeCoreModules !== false;
- var basedir = opts.basedir || path.dirname(caller());
- var parent = opts.filename || basedir;
+convert.ansi16.rgb = function (args) {
+ var color = args % 10;
- opts.paths = opts.paths || defaultPaths();
+ // handle greyscale
+ if (color === 0 || color === 7) {
+ if (args > 50) {
+ color += 3.5;
+ }
- // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
- var absoluteStart = path.resolve(basedir);
+ color = color / 10.5 * 255;
- maybeRealpath(
- realpath,
- absoluteStart,
- opts,
- function (err, realStart) {
- if (err) cb(err);
- else init(realStart);
- }
- );
+ return [color, color, color];
+ }
- 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);
- }
- });
- }
+ var mult = (~~(args > 50) + 1) * 0.5;
+ var r = ((color & 1) * mult) * 255;
+ var g = (((color >> 1) & 1) * mult) * 255;
+ var b = (((color >> 2) & 1) * mult) * 255;
- 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);
- }
- });
- }
+ return [r, g, b];
+};
- function loadAsFile(x, thePackage, callback) {
- var loadAsFilePackage = thePackage;
- var cb = callback;
- if (typeof loadAsFilePackage === 'function') {
- cb = loadAsFilePackage;
- loadAsFilePackage = undefined;
- }
+convert.ansi256.rgb = function (args) {
+ // handle greyscale
+ if (args >= 232) {
+ var c = (args - 232) * 10 + 8;
+ return [c, c, c];
+ }
- var exts = [''].concat(extensions);
- load(exts, x, loadAsFilePackage);
+ args -= 16;
- function load(exts, x, loadPackage) {
- if (exts.length === 0) return cb(null, undefined, loadPackage);
- var file = x + exts[0];
+ var rem;
+ var r = Math.floor(args / 36) / 5 * 255;
+ var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
+ var b = (rem % 6) / 5 * 255;
- var pkg = loadPackage;
- if (pkg) onpkg(null, pkg);
- else loadpkg(path.dirname(file), onpkg);
+ return [r, g, b];
+};
- 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);
- }
- }
- }
+convert.rgb.hex = function (args) {
+ var integer = ((Math.round(args[0]) & 0xFF) << 16)
+ + ((Math.round(args[1]) & 0xFF) << 8)
+ + (Math.round(args[2]) & 0xFF);
- 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);
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+};
- 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);
+convert.hex.rgb = function (args) {
+ var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
+ if (!match) {
+ return [0, 0, 0];
+ }
- readPackage(readFile, pkgfile, function (err, pkgParam) {
- if (err) cb(err);
+ var colorString = match[0];
- var pkg = pkgParam;
+ if (match[0].length === 3) {
+ colorString = colorString.split('').map(function (char) {
+ return char + char;
+ }).join('');
+ }
- if (pkg && opts.packageFilter) {
- pkg = opts.packageFilter(pkg, pkgfile);
- }
- cb(null, pkg, dir);
- });
- });
- });
- }
+ var integer = parseInt(colorString, 16);
+ var r = (integer >> 16) & 0xFF;
+ var g = (integer >> 8) & 0xFF;
+ var b = integer & 0xFF;
- function loadAsDirectory(x, loadAsDirectoryPackage, callback) {
- var cb = callback;
- var fpkg = loadAsDirectoryPackage;
- if (typeof fpkg === 'function') {
- cb = fpkg;
- fpkg = opts.package;
- }
+ return [r, g, b];
+};
- 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);
+convert.rgb.hcg = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var max = Math.max(Math.max(r, g), b);
+ var min = Math.min(Math.min(r, g), b);
+ var chroma = (max - min);
+ var grayscale;
+ var hue;
- readPackage(readFile, pkgfile, function (err, pkgParam) {
- if (err) return cb(err);
+ if (chroma < 1) {
+ grayscale = min / (1 - chroma);
+ } else {
+ grayscale = 0;
+ }
- var pkg = pkgParam;
+ if (chroma <= 0) {
+ hue = 0;
+ } else
+ if (max === r) {
+ hue = ((g - b) / chroma) % 6;
+ } else
+ if (max === g) {
+ hue = 2 + (b - r) / chroma;
+ } else {
+ hue = 4 + (r - g) / chroma + 4;
+ }
- if (pkg && opts.packageFilter) {
- pkg = opts.packageFilter(pkg, pkgfile);
- }
+ hue /= 6;
+ hue %= 1;
- 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);
+ return [hue * 360, chroma * 100, grayscale * 100];
+};
- 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;
- }
+convert.hsl.hcg = function (hsl) {
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var c = 1;
+ var f = 0;
- loadAsFile(path.join(x, '/index'), pkg, cb);
- });
- });
- });
- }
+ if (l < 0.5) {
+ c = 2.0 * s * l;
+ } else {
+ c = 2.0 * s * (1.0 - l);
+ }
- function processDirs(cb, dirs) {
- if (dirs.length === 0) return cb(null, undefined);
- var dir = dirs[0];
+ if (c < 1.0) {
+ f = (l - 0.5 * c) / (1.0 - c);
+ }
- isDirectory(path.dirname(dir), isdir);
+ return [hsl[0], c * 100, f * 100];
+};
- function isdir(err, isdir) {
- if (err) return cb(err);
- if (!isdir) return processDirs(cb, dirs.slice(1));
- loadAsFile(dir, opts.package, onfile);
- }
+convert.hsv.hcg = function (hsv) {
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
- function onfile(err, m, pkg) {
- if (err) return cb(err);
- if (m) return cb(null, m, pkg);
- loadAsDirectory(dir, opts.package, ondir);
- }
+ var c = s * v;
+ var f = 0;
- function ondir(err, n, pkg) {
- if (err) return cb(err);
- if (n) return cb(null, n, pkg);
- processDirs(cb, dirs.slice(1));
- }
- }
- function loadNodeModules(x, start, cb) {
- var thunk = function () { return getPackageCandidates(x, start, opts); };
- processDirs(
- cb,
- packageIterator ? packageIterator(x, start, thunk, opts) : thunk()
- );
- }
+ if (c < 1.0) {
+ f = (v - c) / (1 - c);
+ }
+
+ return [hsv[0], c * 100, f * 100];
};
+convert.hcg.rgb = function (hcg) {
+ var h = hcg[0] / 360;
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
-/***/ }),
-/* 379 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (c === 0.0) {
+ return [g * 255, g * 255, g * 255];
+ }
-"use strict";
+ var pure = [0, 0, 0];
+ var hi = (h % 1) * 6;
+ var v = hi % 1;
+ var w = 1 - v;
+ var mg = 0;
+
+ switch (Math.floor(hi)) {
+ case 0:
+ pure[0] = 1; pure[1] = v; pure[2] = 0; break;
+ case 1:
+ pure[0] = w; pure[1] = 1; pure[2] = 0; break;
+ case 2:
+ pure[0] = 0; pure[1] = 1; pure[2] = v; break;
+ case 3:
+ pure[0] = 0; pure[1] = w; pure[2] = 1; break;
+ case 4:
+ pure[0] = v; pure[1] = 0; pure[2] = 1; break;
+ default:
+ pure[0] = 1; pure[1] = 0; pure[2] = w;
+ }
+ mg = (1.0 - c) * g;
-var os = __webpack_require__(122);
+ return [
+ (c * pure[0] + mg) * 255,
+ (c * pure[1] + mg) * 255,
+ (c * pure[2] + mg) * 255
+ ];
+};
-// adapted from https://github.com/sindresorhus/os-homedir/blob/11e089f4754db38bb535e5a8416320c4446e8cfd/index.js
+convert.hcg.hsv = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
-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;
+ var v = c + g * (1.0 - c);
+ var f = 0;
- if (process.platform === 'win32') {
- return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null;
- }
+ if (v > 0.0) {
+ f = c / v;
+ }
- if (process.platform === 'darwin') {
- return home || (user ? '/Users/' + user : null);
- }
+ return [hcg[0], f * 100, v * 100];
+};
- if (process.platform === 'linux') {
- return home || (process.getuid() === 0 ? '/root' : (user ? '/home/' + user : null)); // eslint-disable-line no-extra-parens
- }
+convert.hcg.hsl = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
- return home || null;
+ var l = g * (1.0 - c) + 0.5 * c;
+ var s = 0;
+
+ if (l > 0.0 && l < 0.5) {
+ s = c / (2 * l);
+ } else
+ if (l >= 0.5 && l < 1.0) {
+ s = c / (2 * (1 - l));
+ }
+
+ return [hcg[0], s * 100, l * 100];
};
+convert.hcg.hwb = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var v = c + g * (1.0 - c);
+ return [hcg[0], (v - c) * 100, (1 - v) * 100];
+};
-/***/ }),
-/* 380 */
-/***/ (function(module, exports) {
+convert.hwb.hcg = function (hwb) {
+ var w = hwb[1] / 100;
+ var b = hwb[2] / 100;
+ var v = 1 - b;
+ var c = v - w;
+ var g = 0;
-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();
+ if (c < 1) {
+ g = (v - c) / (1 - c);
+ }
+
+ return [hwb[0], c * 100, g * 100];
};
+convert.apple.rgb = function (apple) {
+ return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
+};
-/***/ }),
-/* 381 */
-/***/ (function(module, exports, __webpack_require__) {
+convert.rgb.apple = function (rgb) {
+ return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
+};
-var path = __webpack_require__(4);
-var parse = path.parse || __webpack_require__(382); // eslint-disable-line global-require
+convert.gray.rgb = function (args) {
+ return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
+};
-var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {
- var prefix = '/';
- if ((/^([A-Za-z]:)/).test(absoluteStart)) {
- prefix = '';
- } else if ((/^\\\\/).test(absoluteStart)) {
- prefix = '\\\\';
- }
+convert.gray.hsl = convert.gray.hsv = function (args) {
+ return [0, 0, args[0]];
+};
- var paths = [absoluteStart];
- var parsed = parse(absoluteStart);
- while (parsed.dir !== paths[paths.length - 1]) {
- paths.push(parsed.dir);
- parsed = parse(parsed.dir);
- }
+convert.gray.hwb = function (gray) {
+ return [0, 100, gray[0]];
+};
- return paths.reduce(function (dirs, aPath) {
- return dirs.concat(modules.map(function (moduleDir) {
- return path.resolve(prefix, aPath, moduleDir);
- }));
- }, []);
+convert.gray.cmyk = function (gray) {
+ return [0, 0, 0, gray[0]];
};
-module.exports = function nodeModulesPaths(start, opts, request) {
- var modules = opts && opts.moduleDirectory
- ? [].concat(opts.moduleDirectory)
- : ['node_modules'];
+convert.gray.lab = function (gray) {
+ return [gray[0], 0, 0];
+};
- if (opts && typeof opts.paths === 'function') {
- return opts.paths(
- request,
- start,
- function () { return getNodeModulesDirs(start, modules); },
- opts
- );
- }
+convert.gray.hex = function (gray) {
+ var val = Math.round(gray[0] / 100 * 255) & 0xFF;
+ var integer = (val << 16) + (val << 8) + val;
- var dirs = getNodeModulesDirs(start, modules);
- return opts && opts.paths ? dirs.concat(opts.paths) : dirs;
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+};
+
+convert.rgb.gray = function (rgb) {
+ var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
+ return [val / 255 * 100];
};
/***/ }),
-/* 382 */
+/* 482 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+
+
+module.exports = {
+ "aliceblue": [240, 248, 255],
+ "antiquewhite": [250, 235, 215],
+ "aqua": [0, 255, 255],
+ "aquamarine": [127, 255, 212],
+ "azure": [240, 255, 255],
+ "beige": [245, 245, 220],
+ "bisque": [255, 228, 196],
+ "black": [0, 0, 0],
+ "blanchedalmond": [255, 235, 205],
+ "blue": [0, 0, 255],
+ "blueviolet": [138, 43, 226],
+ "brown": [165, 42, 42],
+ "burlywood": [222, 184, 135],
+ "cadetblue": [95, 158, 160],
+ "chartreuse": [127, 255, 0],
+ "chocolate": [210, 105, 30],
+ "coral": [255, 127, 80],
+ "cornflowerblue": [100, 149, 237],
+ "cornsilk": [255, 248, 220],
+ "crimson": [220, 20, 60],
+ "cyan": [0, 255, 255],
+ "darkblue": [0, 0, 139],
+ "darkcyan": [0, 139, 139],
+ "darkgoldenrod": [184, 134, 11],
+ "darkgray": [169, 169, 169],
+ "darkgreen": [0, 100, 0],
+ "darkgrey": [169, 169, 169],
+ "darkkhaki": [189, 183, 107],
+ "darkmagenta": [139, 0, 139],
+ "darkolivegreen": [85, 107, 47],
+ "darkorange": [255, 140, 0],
+ "darkorchid": [153, 50, 204],
+ "darkred": [139, 0, 0],
+ "darksalmon": [233, 150, 122],
+ "darkseagreen": [143, 188, 143],
+ "darkslateblue": [72, 61, 139],
+ "darkslategray": [47, 79, 79],
+ "darkslategrey": [47, 79, 79],
+ "darkturquoise": [0, 206, 209],
+ "darkviolet": [148, 0, 211],
+ "deeppink": [255, 20, 147],
+ "deepskyblue": [0, 191, 255],
+ "dimgray": [105, 105, 105],
+ "dimgrey": [105, 105, 105],
+ "dodgerblue": [30, 144, 255],
+ "firebrick": [178, 34, 34],
+ "floralwhite": [255, 250, 240],
+ "forestgreen": [34, 139, 34],
+ "fuchsia": [255, 0, 255],
+ "gainsboro": [220, 220, 220],
+ "ghostwhite": [248, 248, 255],
+ "gold": [255, 215, 0],
+ "goldenrod": [218, 165, 32],
+ "gray": [128, 128, 128],
+ "green": [0, 128, 0],
+ "greenyellow": [173, 255, 47],
+ "grey": [128, 128, 128],
+ "honeydew": [240, 255, 240],
+ "hotpink": [255, 105, 180],
+ "indianred": [205, 92, 92],
+ "indigo": [75, 0, 130],
+ "ivory": [255, 255, 240],
+ "khaki": [240, 230, 140],
+ "lavender": [230, 230, 250],
+ "lavenderblush": [255, 240, 245],
+ "lawngreen": [124, 252, 0],
+ "lemonchiffon": [255, 250, 205],
+ "lightblue": [173, 216, 230],
+ "lightcoral": [240, 128, 128],
+ "lightcyan": [224, 255, 255],
+ "lightgoldenrodyellow": [250, 250, 210],
+ "lightgray": [211, 211, 211],
+ "lightgreen": [144, 238, 144],
+ "lightgrey": [211, 211, 211],
+ "lightpink": [255, 182, 193],
+ "lightsalmon": [255, 160, 122],
+ "lightseagreen": [32, 178, 170],
+ "lightskyblue": [135, 206, 250],
+ "lightslategray": [119, 136, 153],
+ "lightslategrey": [119, 136, 153],
+ "lightsteelblue": [176, 196, 222],
+ "lightyellow": [255, 255, 224],
+ "lime": [0, 255, 0],
+ "limegreen": [50, 205, 50],
+ "linen": [250, 240, 230],
+ "magenta": [255, 0, 255],
+ "maroon": [128, 0, 0],
+ "mediumaquamarine": [102, 205, 170],
+ "mediumblue": [0, 0, 205],
+ "mediumorchid": [186, 85, 211],
+ "mediumpurple": [147, 112, 219],
+ "mediumseagreen": [60, 179, 113],
+ "mediumslateblue": [123, 104, 238],
+ "mediumspringgreen": [0, 250, 154],
+ "mediumturquoise": [72, 209, 204],
+ "mediumvioletred": [199, 21, 133],
+ "midnightblue": [25, 25, 112],
+ "mintcream": [245, 255, 250],
+ "mistyrose": [255, 228, 225],
+ "moccasin": [255, 228, 181],
+ "navajowhite": [255, 222, 173],
+ "navy": [0, 0, 128],
+ "oldlace": [253, 245, 230],
+ "olive": [128, 128, 0],
+ "olivedrab": [107, 142, 35],
+ "orange": [255, 165, 0],
+ "orangered": [255, 69, 0],
+ "orchid": [218, 112, 214],
+ "palegoldenrod": [238, 232, 170],
+ "palegreen": [152, 251, 152],
+ "paleturquoise": [175, 238, 238],
+ "palevioletred": [219, 112, 147],
+ "papayawhip": [255, 239, 213],
+ "peachpuff": [255, 218, 185],
+ "peru": [205, 133, 63],
+ "pink": [255, 192, 203],
+ "plum": [221, 160, 221],
+ "powderblue": [176, 224, 230],
+ "purple": [128, 0, 128],
+ "rebeccapurple": [102, 51, 153],
+ "red": [255, 0, 0],
+ "rosybrown": [188, 143, 143],
+ "royalblue": [65, 105, 225],
+ "saddlebrown": [139, 69, 19],
+ "salmon": [250, 128, 114],
+ "sandybrown": [244, 164, 96],
+ "seagreen": [46, 139, 87],
+ "seashell": [255, 245, 238],
+ "sienna": [160, 82, 45],
+ "silver": [192, 192, 192],
+ "skyblue": [135, 206, 235],
+ "slateblue": [106, 90, 205],
+ "slategray": [112, 128, 144],
+ "slategrey": [112, 128, 144],
+ "snow": [255, 250, 250],
+ "springgreen": [0, 255, 127],
+ "steelblue": [70, 130, 180],
+ "tan": [210, 180, 140],
+ "teal": [0, 128, 128],
+ "thistle": [216, 191, 216],
+ "tomato": [255, 99, 71],
+ "turquoise": [64, 224, 208],
+ "violet": [238, 130, 238],
+ "wheat": [245, 222, 179],
+ "white": [255, 255, 255],
+ "whitesmoke": [245, 245, 245],
+ "yellow": [255, 255, 0],
+ "yellowgreen": [154, 205, 50]
+};
-var isWindows = process.platform === 'win32';
+/***/ }),
+/* 483 */
+/***/ (function(module, exports, __webpack_require__) {
-// Regex to split a windows path into into [dir, root, basename, name, ext]
-var splitWindowsRe =
- /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/;
+var conversions = __webpack_require__(481);
-var win32 = {};
+/*
+ this function routes a model to all other models.
-function win32SplitPath(filename) {
- return splitWindowsRe.exec(filename).slice(1);
+ all functions that are routed have a property `.conversion` attached
+ to the returned synthetic function. This property is an array
+ of strings, each with the steps in between the 'from' and 'to'
+ color models (inclusive).
+
+ conversions that are not possible simply are not included.
+*/
+
+function buildGraph() {
+ var graph = {};
+ // https://jsperf.com/object-keys-vs-for-in-with-closure/3
+ var models = Object.keys(conversions);
+
+ for (var len = models.length, i = 0; i < len; i++) {
+ graph[models[i]] = {
+ // http://jsperf.com/1-vs-infinity
+ // micro-opt, but this is simple.
+ distance: -1,
+ parent: null
+ };
+ }
+
+ return graph;
}
-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]
- };
-};
+// https://en.wikipedia.org/wiki/Breadth-first_search
+function deriveBFS(fromModel) {
+ var graph = buildGraph();
+ var queue = [fromModel]; // unshift -> queue -> pop
+ graph[fromModel].distance = 0;
+ while (queue.length) {
+ var current = queue.pop();
+ var adjacents = Object.keys(conversions[current]);
-// Split a filename into [dir, root, basename, name, ext], unix version
-// 'root' is just a slash, or nothing.
-var splitPathRe =
- /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/;
-var posix = {};
+ for (var len = adjacents.length, i = 0; i < len; i++) {
+ var adjacent = adjacents[i];
+ var node = graph[adjacent];
+ if (node.distance === -1) {
+ node.distance = graph[current].distance + 1;
+ node.parent = current;
+ queue.unshift(adjacent);
+ }
+ }
+ }
-function posixSplitPath(filename) {
- return splitPathRe.exec(filename).slice(1);
+ return graph;
}
+function link(from, to) {
+ return function (args) {
+ return to(from(args));
+ };
+}
-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],
- };
-};
+function wrapConversion(toModel, graph) {
+ var path = [graph[toModel].parent, toModel];
+ var fn = conversions[graph[toModel].parent][toModel];
+ var cur = graph[toModel].parent;
+ while (graph[cur].parent) {
+ path.unshift(graph[cur].parent);
+ fn = link(conversions[graph[cur].parent][cur], fn);
+ cur = graph[cur].parent;
+ }
-if (isWindows)
- module.exports = win32.parse;
-else /* posix */
- module.exports = posix.parse;
+ fn.conversion = path;
+ return fn;
+}
-module.exports.posix = posix.parse;
-module.exports.win32 = win32.parse;
+module.exports = function (fromModel) {
+ var graph = deriveBFS(fromModel);
+ var conversion = {};
+ var models = Object.keys(graph);
+ for (var len = models.length, i = 0; i < len; i++) {
+ var toModel = models[i];
+ var node = graph[toModel];
-/***/ }),
-/* 383 */
-/***/ (function(module, exports) {
+ if (node.parent === null) {
+ // no possible conversion, or this node is the source model.
+ continue;
+ }
-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.
- */
+ conversion[toModel] = wrapConversion(toModel, graph);
+ }
- return opts || {};
+ return conversion;
};
+
/***/ }),
-/* 384 */
+/* 484 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+const os = __webpack_require__(243);
+const hasFlag = __webpack_require__(485);
-var has = __webpack_require__(385);
+const env = process.env;
-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('.');
+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;
+}
- 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;
- }
+function translateLevel(level) {
+ if (level === 0) {
return false;
}
- return op === '>=';
+
+ return {
+ level,
+ hasBasic: true,
+ has256: level >= 2,
+ has16m: level >= 3
+ };
}
-function matchesRange(current, range) {
- var specifiers = range.split(/ ?&& ?/);
- if (specifiers.length === 0) {
- return false;
+function supportsColor(stream) {
+ if (forceColor === false) {
+ return 0;
}
- for (var i = 0; i < specifiers.length; ++i) {
- if (!specifierIncluded(current, specifiers[i])) {
- return false;
+
+ 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;
+ }
+
+ const min = forceColor ? 1 : 0;
+
+ 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;
}
- return true;
-}
-function versionIncluded(nodeVersion, specifierValue) {
- if (typeof specifierValue === 'boolean') {
- return specifierValue;
+ if ('CI' in env) {
+ if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {
+ return 1;
+ }
+
+ return min;
}
- var current = typeof nodeVersion === 'undefined'
- ? process.versions && process.versions.node
- : nodeVersion;
+ if ('TEAMCITY_VERSION' in env) {
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 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 (env.COLORTERM === 'truecolor') {
+ return 3;
}
- if (specifierValue && typeof specifierValue === 'object') {
- for (var i = 0; i < specifierValue.length; ++i) {
- if (matchesRange(current, specifierValue[i])) {
- return true;
- }
+ 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
}
- return false;
}
- return matchesRange(current, specifierValue);
+
+ 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;
+ }
+
+ if (env.TERM === 'dumb') {
+ return min;
+ }
+
+ return min;
}
-var data = __webpack_require__(388);
+function getSupportLevel(stream) {
+ const level = supportsColor(stream);
+ return translateLevel(level);
+}
-module.exports = function isCore(x, nodeVersion) {
- return has(data, x) && versionIncluded(nodeVersion, data[x]);
+module.exports = {
+ supportsColor: getSupportLevel,
+ stdout: getSupportLevel(process.stdout),
+ stderr: getSupportLevel(process.stderr)
};
/***/ }),
-/* 385 */
+/* 485 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-
-var bind = __webpack_require__(386);
-
-module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);
+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);
+};
/***/ }),
-/* 386 */
+/* 486 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+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 implementation = __webpack_require__(387);
+const ESCAPES = new Map([
+ ['n', '\n'],
+ ['r', '\r'],
+ ['t', '\t'],
+ ['b', '\b'],
+ ['f', '\f'],
+ ['v', '\v'],
+ ['0', '\0'],
+ ['\\', '\\'],
+ ['e', '\u001B'],
+ ['a', '\u0007']
+]);
-module.exports = Function.prototype.bind || implementation;
+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;
+}
-/***/ }),
-/* 387 */
-/***/ (function(module, exports, __webpack_require__) {
+function parseArguments(name, args) {
+ const results = [];
+ const chunks = args.trim().split(/\s*,\s*/g);
+ let matches;
-"use strict";
+ 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;
+}
-/* eslint no-invalid-this: 1 */
+function parseStyle(style) {
+ STYLE_REGEX.lastIndex = 0;
-var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';
-var slice = Array.prototype.slice;
-var toStr = Object.prototype.toString;
-var funcType = '[object Function]';
+ const results = [];
+ let matches;
-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);
+ while ((matches = STYLE_REGEX.exec(style)) !== null) {
+ const name = matches[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))
- );
- }
- };
+ if (matches[2]) {
+ const args = parseArguments(name, matches[2]);
+ results.push([name].concat(args));
+ } else {
+ results.push([name]);
+ }
+ }
- var boundLength = Math.max(0, target.length - args.length);
- var boundArgs = [];
- for (var i = 0; i < boundLength; i++) {
- boundArgs.push('$' + i);
- }
+ return results;
+}
- bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);
+function buildStyle(chalk, styles) {
+ const enabled = {};
- if (target.prototype) {
- var Empty = function Empty() {};
- Empty.prototype = target.prototype;
- bound.prototype = new Empty();
- Empty.prototype = null;
- }
+ for (const layer of styles) {
+ for (const style of layer.styles) {
+ enabled[style[0]] = layer.inverse ? null : style.slice(1);
+ }
+ }
- return bound;
-};
+ 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}`);
+ }
+ if (enabled[styleName].length > 0) {
+ current = current[styleName].apply(current, enabled[styleName]);
+ } else {
+ current = current[styleName];
+ }
+ }
+ }
-/***/ }),
-/* 388 */
-/***/ (function(module) {
+ return current;
+}
+
+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(''));
+
+ 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('');
+};
-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\"]}");
/***/ }),
-/* 389 */
+/* 487 */
/***/ (function(module, exports, __webpack_require__) {
-var current = (process.versions && process.versions.node && process.versions.node.split('.')) || [];
+module.exports = normalize
-function specifierIncluded(specifier) {
- var parts = specifier.split(' ');
- var op = parts.length > 1 ? parts[0] : '=';
- var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');
+var fixer = __webpack_require__(488)
+normalize.fixer = fixer
- 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 === '>=';
-}
+var makeWarning = __webpack_require__(516)
-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;
-}
+var fieldsToFix = ['name','version','description','repository','modules','scripts'
+ ,'files','bin','man','bugs','keywords','readme','homepage','license']
+var otherThingsToFix = ['dependencies','people', 'typos']
-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);
-}
+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)
-var data = __webpack_require__(390);
+function normalize (data, warn, strict) {
+ if(warn === true) warn = null, strict = true
+ if(!strict) strict = false
+ if(!warn || data.private) warn = function(msg) { /* noop */ }
-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]);
- }
+ 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
}
-module.exports = core;
-
-/***/ }),
-/* 390 */
-/***/ (function(module) {
+function ucFirst (string) {
+ return string.charAt(0).toUpperCase() + string.slice(1);
+}
-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\"]}");
/***/ }),
-/* 391 */
+/* 488 */
/***/ (function(module, exports, __webpack_require__) {
-var isCoreModule = __webpack_require__(384);
-
-module.exports = function isCore(x) {
- return isCoreModule(x);
-};
+var semver = __webpack_require__(489)
+var validateLicense = __webpack_require__(490);
+var hostedGitInfo = __webpack_require__(495)
+var isBuiltinModule = __webpack_require__(498).isCore
+var depTypes = ["dependencies","devDependencies","optionalDependencies"]
+var extractDescription = __webpack_require__(514)
+var url = __webpack_require__(324)
+var typos = __webpack_require__(515)
+var fixer = module.exports = {
+ // default warning function
+ warn: function() {},
-/***/ }),
-/* 392 */
-/***/ (function(module, exports, __webpack_require__) {
+ 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()
+ }
+ }
-var isCore = __webpack_require__(384);
-var fs = __webpack_require__(132);
-var path = __webpack_require__(4);
-var getHomedir = __webpack_require__(379);
-var caller = __webpack_require__(380);
-var nodeModulesPaths = __webpack_require__(381);
-var normalizeOptions = __webpack_require__(383);
+ if (r.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)) {
+ this.warn("brokenGitUrl", r)
+ }
+ }
-var realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync;
+, fixTypos: function(data) {
+ Object.keys(typos.topLevel).forEach(function (d) {
+ if (data.hasOwnProperty(d)) {
+ this.warn("typo", d, typos.topLevel[d])
+ }
+ }, this)
+ }
-var homedir = getHomedir();
-var defaultPaths = function () {
- return [
- path.join(homedir, '.node_modules'),
- path.join(homedir, '.node_libraries')
- ];
-};
+, 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)
+ }
-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;
+, 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)
}
- return !!stat && (stat.isFile() || stat.isFIFO());
-};
+ }
-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;
+, 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
}
- return !!stat && stat.isDirectory();
-};
+ }
-var defaultRealpathSync = function realpathSync(x) {
- try {
- return realpathFS(x);
- } catch (realpathErr) {
- if (realpathErr.code !== 'ENOENT') {
- throw realpathErr;
+, 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)
}
- return x;
-};
+ }
-var maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) {
- if (opts && opts.preserveSymlinks === false) {
- return realpathSync(x);
- }
- return x;
-};
+, fixDependencies: function(data, strict) {
+ var loose = !strict
+ objectifyDeps(data, this.warn)
+ addOptionalDepsToDeps(data, this.warn)
+ this.fixBundleDependenciesField(data)
-var defaultReadPackageSync = function defaultReadPackageSync(readFileSync, pkgfile) {
- var body = readFileSync(pkgfile);
- try {
- var pkg = JSON.parse(body);
- return pkg;
- } catch (jsonErr) {}
-};
+ ;['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)
+ }
-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);
+, fixModulesField: function (data) {
+ if (data.modules) {
+ this.warn("deprecatedModules")
+ delete data.modules
}
- return dirs;
-};
+ }
-module.exports = function resolveSync(x, options) {
- if (typeof x !== 'string') {
- throw new TypeError('Path must be a string.');
+, fixKeywordsField: function (data) {
+ if (typeof data.keywords === "string") {
+ data.keywords = data.keywords.split(/,\s+/)
}
- var opts = normalizeOptions(x, options);
+ 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)
+ }
+ }
- 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.');
+, 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
}
- var packageIterator = opts.packageIterator;
+ if (!semver.valid(data.version, loose)) {
+ throw new Error('Invalid version: "'+ data.version + '"')
+ }
+ data.version = semver.clean(data.version, loose)
+ return true
+ }
- var extensions = opts.extensions || ['.js'];
- var includeCoreModules = opts.includeCoreModules !== false;
- var basedir = opts.basedir || path.dirname(caller());
- var parent = opts.filename || basedir;
+, fixPeople: function(data) {
+ modifyPeople(data, unParsePerson)
+ modifyPeople(data, parsePerson)
+ }
- opts.paths = opts.paths || defaultPaths();
+, 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)
+ }
- // 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);
+, 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")
+ }
- 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));
+, fixReadmeField: function (data) {
+ if (!data.readme) {
+ this.warn("missingReadme")
+ data.readme = "ERROR: No README data found!"
+ }
+ }
- 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
- }
+, 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 (isFile(x)) {
- return x;
+ 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")
+ }
+ }
+ }
- for (var i = 0; i < extensions.length; i++) {
- var file = x + extensions[i];
- if (isFile(file)) {
- return file;
- }
- }
+, 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
- function loadpkg(dir) {
- if (dir === '' || dir === '/') return;
- if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) {
- return;
- }
- if ((/[/\\]node_modules[/\\]*$/).test(dir)) return;
+ if(typeof data.homepage !== "string") {
+ this.warn("nonUrlHomepage")
+ return delete data.homepage
+ }
+ if(!url.parse(data.homepage).protocol) {
+ data.homepage = "http://" + data.homepage
+ }
+ }
- var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json');
+, 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")
+ }
+ }
+ }
+}
- if (!isFile(pkgfile)) {
- return loadpkg(path.dirname(dir));
- }
+function isValidScopedPackageName(spec) {
+ if (spec.charAt(0) !== '@') return false
- var pkg = readPackageSync(readFileSync, pkgfile);
+ var rest = spec.slice(1).split('/')
+ if (rest.length !== 2) return false
- if (pkg && opts.packageFilter) {
- // v2 will pass pkgfile
- pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment
- }
+ return rest[0] && rest[1] &&
+ rest[0] === encodeURIComponent(rest[0]) &&
+ rest[1] === encodeURIComponent(rest[1])
+}
- return { pkg: pkg, dir: dir };
- }
+function isCorrectlyEncodedName(spec) {
+ return !spec.match(/[\/@\s\+%:]/) &&
+ spec === encodeURIComponent(spec)
+}
- function loadAsDirectorySync(x) {
- var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json');
- if (isFile(pkgfile)) {
- try {
- var pkg = readPackageSync(readFileSync, pkgfile);
- } catch (e) {}
+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))
+ }
+}
- if (pkg && opts.packageFilter) {
- // v2 will pass pkgfile
- pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment
- }
+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
+}
- 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) {}
- }
- }
+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
+}
- return loadAsFileSync(path.join(x, '/index'));
- }
+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
+}
- function loadNodeModulesSync(x, start) {
- var thunk = function () { return getPackageCandidates(x, start, opts); };
- var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk();
+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
+}
- 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;
- }
- }
+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]
}
-};
+ })
+}
/***/ }),
-/* 393 */
+/* 489 */
/***/ (function(module, exports) {
-module.exports = extractDescription
+exports = module.exports = SemVer
-// 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()
+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 () {}
}
+// 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'
-/***/ }),
-/* 394 */
-/***/ (function(module) {
+var MAX_LENGTH = 256
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */ 9007199254740991
-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\"}}");
+// Max safe segment length for coercion.
+var MAX_SAFE_COMPONENT_LENGTH = 16
-/***/ }),
-/* 395 */
-/***/ (function(module, exports, __webpack_require__) {
+// The actual regexps go on exports.re
+var re = exports.re = []
+var src = exports.src = []
+var R = 0
-var util = __webpack_require__(113)
-var messages = __webpack_require__(396)
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
-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)
- }
-}
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
-function makeTypoWarning (providedName, probableName, field) {
- if (field) {
- providedName = field + "['" + providedName + "']"
- probableName = field + "['" + probableName + "']"
- }
- return util.format(messages.typo, providedName, probableName)
-}
+var NUMERICIDENTIFIER = R++
+src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'
+var NUMERICIDENTIFIERLOOSE = R++
+src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+var NONNUMERICIDENTIFIER = R++
+src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
-/***/ }),
-/* 396 */
-/***/ (function(module) {
+// ## Main Version
+// Three dot-separated numeric identifiers.
-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 MAINVERSION = R++
+src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIER] + ')'
-/***/ }),
-/* 397 */
-/***/ (function(module, exports, __webpack_require__) {
+var MAINVERSIONLOOSE = R++
+src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIERLOOSE] + ')'
-"use strict";
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
-const path = __webpack_require__(4);
-const writeJsonFile = __webpack_require__(398);
-const sortKeys = __webpack_require__(402);
+var PRERELEASEIDENTIFIER = R++
+src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
+ '|' + src[NONNUMERICIDENTIFIER] + ')'
-const dependencyKeys = new Set([
- 'dependencies',
- 'devDependencies',
- 'optionalDependencies',
- 'peerDependencies'
-]);
+var PRERELEASEIDENTIFIERLOOSE = R++
+src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
+ '|' + src[NONNUMERICIDENTIFIER] + ')'
-function normalize(packageJson) {
- const result = {};
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
- for (const key of Object.keys(packageJson)) {
- if (!dependencyKeys.has(key)) {
- result[key] = packageJson[key];
- } else if (Object.keys(packageJson[key]).length !== 0) {
- result[key] = sortKeys(packageJson[key]);
- }
- }
+var PRERELEASE = R++
+src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
+ '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'
- return result;
-}
+var PRERELEASELOOSE = R++
+src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
+ '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'
-module.exports = async (filePath, data, options) => {
- if (typeof filePath !== 'string') {
- options = data;
- data = filePath;
- filePath = '.';
- }
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
- options = {
- normalize: true,
- ...options,
- detectIndent: true
- };
+var BUILDIDENTIFIER = R++
+src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
- filePath = path.basename(filePath) === 'package.json' ? filePath : path.join(filePath, 'package.json');
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
- data = options.normalize ? normalize(data) : data;
+var BUILD = R++
+src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
+ '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'
- return writeJsonFile(filePath, data, options);
-};
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
-module.exports.sync = (filePath, data, options) => {
- if (typeof filePath !== 'string') {
- options = data;
- data = filePath;
- filePath = '.';
- }
+// 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.
- options = {
- normalize: true,
- ...options,
- detectIndent: true
- };
+var FULL = R++
+var FULLPLAIN = 'v?' + src[MAINVERSION] +
+ src[PRERELEASE] + '?' +
+ src[BUILD] + '?'
- filePath = path.basename(filePath) === 'package.json' ? filePath : path.join(filePath, 'package.json');
+src[FULL] = '^' + FULLPLAIN + '$'
- data = options.normalize ? normalize(data) : data;
+// 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] + '?'
- writeJsonFile.sync(filePath, data, options);
-};
+var LOOSE = R++
+src[LOOSE] = '^' + LOOSEPLAIN + '$'
+var GTLT = R++
+src[GTLT] = '((?:<|>)?=?)'
-/***/ }),
-/* 398 */
-/***/ (function(module, exports, __webpack_require__) {
+// 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|\\*'
-"use strict";
+var XRANGEPLAIN = R++
+src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:' + src[PRERELEASE] + ')?' +
+ src[BUILD] + '?' +
+ ')?)?'
-const path = __webpack_require__(4);
-const fs = __webpack_require__(233);
-const writeFileAtomic = __webpack_require__(399);
-const sortKeys = __webpack_require__(402);
-const makeDir = __webpack_require__(404);
-const pify = __webpack_require__(405);
-const detectIndent = __webpack_require__(407);
+var XRANGEPLAINLOOSE = R++
+src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:' + src[PRERELEASELOOSE] + ')?' +
+ src[BUILD] + '?' +
+ ')?)?'
-const init = (fn, filePath, data, options) => {
- if (!filePath) {
- throw new TypeError('Expected a filepath');
- }
+var XRANGE = R++
+src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'
+var XRANGELOOSE = R++
+src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'
- if (data === undefined) {
- throw new TypeError('Expected data to stringify');
- }
+// 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])'
- options = Object.assign({
- indent: '\t',
- sortKeys: false
- }, options);
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+var LONETILDE = R++
+src[LONETILDE] = '(?:~>?)'
- if (options.sortKeys) {
- data = sortKeys(data, {
- deep: true,
- compare: typeof options.sortKeys === 'function' ? options.sortKeys : undefined
- });
- }
+var TILDETRIM = R++
+src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'
+re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')
+var tildeTrimReplace = '$1~'
- return fn(filePath, data, options);
-};
+var TILDE = R++
+src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'
+var TILDELOOSE = R++
+src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'
-const readFile = filePath => pify(fs.readFile)(filePath, 'utf8').catch(() => {});
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+var LONECARET = R++
+src[LONECARET] = '(?:\\^)'
-const main = (filePath, data, options) => {
- return (options.detectIndent ? readFile(filePath) : Promise.resolve())
- .then(string => {
- const indent = string ? detectIndent(string).indent : options.indent;
- const json = JSON.stringify(data, options.replacer, indent);
+var CARETTRIM = R++
+src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'
+re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')
+var caretTrimReplace = '$1^'
- return pify(writeFileAtomic)(filePath, `${json}\n`, {mode: options.mode});
- });
-};
+var CARET = R++
+src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'
+var CARETLOOSE = R++
+src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'
-const mainSync = (filePath, data, options) => {
- let {indent} = options;
+// 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 + ')$|^$'
- if (options.detectIndent) {
- try {
- const file = fs.readFileSync(filePath, 'utf8');
- indent = detectIndent(file).indent;
- } catch (error) {
- if (error.code !== 'ENOENT') {
- throw error;
- }
- }
- }
+// 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] + ')'
- const json = JSON.stringify(data, options.replacer, indent);
+// this one has to use the /g flag
+re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')
+var comparatorTrimReplace = '$1$2$3'
- return writeFileAtomic.sync(filePath, `${json}\n`, {mode: options.mode});
-};
+// 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*$'
-const writeJsonFile = (filePath, data, options) => {
- return makeDir(path.dirname(filePath), {fs})
- .then(() => init(main, filePath, data, options));
-};
+var HYPHENRANGELOOSE = R++
+src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[XRANGEPLAINLOOSE] + ')' +
+ '\\s*$'
-module.exports = writeJsonFile;
-// TODO: Remove this for the next major release
-module.exports.default = writeJsonFile;
-module.exports.sync = (filePath, data, options) => {
- makeDir.sync(path.dirname(filePath), {fs});
- init(mainSync, filePath, data, options);
-};
+// 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])
+ }
+}
-/***/ }),
-/* 399 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.parse = parse
+function parse (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
-"use strict";
+ if (version instanceof SemVer) {
+ return version
+ }
-module.exports = writeFile
-module.exports.sync = writeFileSync
-module.exports._getTmpname = getTmpname // for testing
-module.exports._cleanupOnExit = cleanupOnExit
+ if (typeof version !== 'string') {
+ return null
+ }
-var fs = __webpack_require__(233)
-var MurmurHash3 = __webpack_require__(400)
-var onExit = __webpack_require__(161)
-var path = __webpack_require__(4)
-var activeFiles = {}
+ if (version.length > MAX_LENGTH) {
+ return null
+ }
-// if we run inside of a worker_thread, `process.pid` is not unique
-/* istanbul ignore next */
-var threadId = (function getId () {
- try {
- var workerThreads = __webpack_require__(401)
+ var r = options.loose ? re[LOOSE] : re[FULL]
+ if (!r.test(version)) {
+ return null
+ }
- /// if we are in main thread, this is set to `0`
- return workerThreads.threadId
- } catch (e) {
- // worker_threads are not available, fallback to 0
- return 0
+ try {
+ return new SemVer(version, options)
+ } catch (er) {
+ return null
}
-})()
+}
-var invocations = 0
-function getTmpname (filename) {
- return filename + '.' +
- MurmurHash3(__filename)
- .hash(String(process.pid))
- .hash(String(threadId))
- .hash(String(++invocations))
- .result()
+exports.valid = valid
+function valid (version, options) {
+ var v = parse(version, options)
+ return v ? v.version : null
}
-function cleanupOnExit (tmpfile) {
- return function () {
- try {
- fs.unlinkSync(typeof tmpfile === 'function' ? tmpfile() : tmpfile)
- } catch (_) {}
- }
+exports.clean = clean
+function clean (version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options)
+ return s ? s.version : null
}
-function writeFile (filename, data, options, callback) {
- if (options) {
- if (options instanceof Function) {
- callback = options
- options = {}
- } else if (typeof options === 'string') {
- options = { encoding: options }
+exports.SemVer = SemVer
+
+function SemVer (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
}
- } else {
- options = {}
+ }
+ 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)
}
- var Promise = options.Promise || global.Promise
- var truename
- var fd
- var tmpfile
- /* istanbul ignore next -- The closure only gets called when onExit triggers */
- var removeOnExitHandler = onExit(cleanupOnExit(() => tmpfile))
- var absoluteName = path.resolve(filename)
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
+ }
- new Promise(function serializeSameFile (resolve) {
- // make a queue if it doesn't already exist
- if (!activeFiles[absoluteName]) activeFiles[absoluteName] = []
+ if (!(this instanceof SemVer)) {
+ return new SemVer(version, options)
+ }
- activeFiles[absoluteName].push(resolve) // add this job to the queue
- if (activeFiles[absoluteName].length === 1) resolve() // kick off the first one
- }).then(function getRealPath () {
- return new Promise(function (resolve) {
- fs.realpath(filename, function (_, realname) {
- truename = realname || filename
- tmpfile = getTmpname(truename)
- resolve()
- })
- })
- }).then(function stat () {
- return new Promise(function stat (resolve) {
- if (options.mode && options.chown) resolve()
- else {
- // Either mode or chown is not explicitly set
- // Default behavior is to copy it from original file
- fs.stat(truename, function (err, stats) {
- if (err || !stats) resolve()
- else {
- options = Object.assign({}, options)
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
- if (options.mode == null) {
- options.mode = stats.mode
- }
- if (options.chown == null && process.getuid) {
- options.chown = { uid: stats.uid, gid: stats.gid }
- }
- resolve()
- }
- })
- }
- })
- }).then(function thenWriteFile () {
- return new Promise(function (resolve, reject) {
- fs.open(tmpfile, 'w', options.mode, function (err, _fd) {
- fd = _fd
- if (err) reject(err)
- else resolve()
- })
- })
- }).then(function write () {
- return new Promise(function (resolve, reject) {
- if (Buffer.isBuffer(data)) {
- fs.write(fd, data, 0, data.length, 0, function (err) {
- if (err) reject(err)
- else resolve()
- })
- } else if (data != null) {
- fs.write(fd, String(data), 0, String(options.encoding || 'utf8'), function (err) {
- if (err) reject(err)
- else resolve()
- })
- } else resolve()
- })
- }).then(function syncAndClose () {
- return new Promise(function (resolve, reject) {
- if (options.fsync !== false) {
- fs.fsync(fd, function (err) {
- if (err) fs.close(fd, () => reject(err))
- else fs.close(fd, resolve)
- })
- } else {
- fs.close(fd, resolve)
- }
- })
- }).then(function chown () {
- fd = null
- if (options.chown) {
- return new Promise(function (resolve, reject) {
- fs.chown(tmpfile, options.chown.uid, options.chown.gid, function (err) {
- if (err) reject(err)
- else resolve()
- })
- })
- }
- }).then(function chmod () {
- if (options.mode) {
- return new Promise(function (resolve, reject) {
- fs.chmod(tmpfile, options.mode, function (err) {
- if (err) reject(err)
- else resolve()
- })
- })
- }
- }).then(function rename () {
- return new Promise(function (resolve, reject) {
- fs.rename(tmpfile, truename, function (err) {
- if (err) reject(err)
- else resolve()
- })
- })
- }).then(function success () {
- removeOnExitHandler()
- callback()
- }, function fail (err) {
- return new Promise(resolve => {
- return fd ? fs.close(fd, resolve) : resolve()
- }).then(() => {
- removeOnExitHandler()
- fs.unlink(tmpfile, function () {
- callback(err)
- })
+ var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])
+
+ if (!m) {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+
+ this.raw = version
+
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
+
+ // numberify any prerelease numeric ids
+ if (!m[4]) {
+ this.prerelease = []
+ } else {
+ this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num
+ }
+ }
+ return id
})
- }).then(function checkQueue () {
- activeFiles[absoluteName].shift() // remove the element added by serializeSameFile
- if (activeFiles[absoluteName].length > 0) {
- activeFiles[absoluteName][0]() // start next job if one is pending
- } else delete activeFiles[absoluteName]
- })
+ }
+
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
}
-function writeFileSync (filename, data, options) {
- if (typeof options === 'string') options = { encoding: options }
- else if (!options) options = {}
- try {
- filename = fs.realpathSync(filename)
- } catch (ex) {
- // it's ok, it'll happen on a not yet existing file
+SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch
+ if (this.prerelease.length) {
+ this.version += '-' + this.prerelease.join('.')
}
- var tmpfile = getTmpname(filename)
+ return this.version
+}
- if (!options.mode || !options.chown) {
- // Either mode or chown is not explicitly set
- // Default behavior is to copy it from original file
- try {
- var stats = fs.statSync(filename)
- options = Object.assign({}, options)
- if (!options.mode) {
- options.mode = stats.mode
+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)
+ }
+
+ return this.compareMain(other) || this.comparePre(other)
+}
+
+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)
+}
+
+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
+ }
+
+ 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)
}
- if (!options.chown && process.getuid) {
- options.chown = { uid: stats.uid, gid: stats.gid }
+ 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++
}
- } catch (ex) {
- // ignore stat errors
- }
+ this.minor = 0
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++
+ }
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++
+ }
+ this.prerelease = []
+ break
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0]
+ } else {
+ var i = this.prerelease.length
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++
+ i = -2
+ }
+ }
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0)
+ }
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0]
+ }
+ } else {
+ this.prerelease = [identifier, 0]
+ }
+ }
+ break
+
+ default:
+ throw new Error('invalid increment argument: ' + release)
}
+ this.format()
+ this.raw = this.version
+ return this
+}
- var fd
- var cleanup = cleanupOnExit(tmpfile)
- var removeOnExitHandler = onExit(cleanup)
+exports.inc = inc
+function inc (version, release, loose, identifier) {
+ if (typeof (loose) === 'string') {
+ identifier = loose
+ loose = undefined
+ }
try {
- fd = fs.openSync(tmpfile, 'w', options.mode)
- if (Buffer.isBuffer(data)) {
- fs.writeSync(fd, data, 0, data.length, 0)
- } else if (data != null) {
- fs.writeSync(fd, String(data), 0, String(options.encoding || 'utf8'))
- }
- if (options.fsync !== false) {
- fs.fsyncSync(fd)
+ 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'
}
- fs.closeSync(fd)
- if (options.chown) fs.chownSync(tmpfile, options.chown.uid, options.chown.gid)
- if (options.mode) fs.chmodSync(tmpfile, options.mode)
- fs.renameSync(tmpfile, filename)
- removeOnExitHandler()
- } catch (err) {
- if (fd) {
- try {
- fs.closeSync(fd)
- } catch (ex) {
- // ignore close errors at this stage, error may have closed fd already.
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return prefix + key
+ }
}
}
- removeOnExitHandler()
- cleanup()
- throw err
+ return defaultResult // may be undefined
}
}
+exports.compareIdentifiers = compareIdentifiers
-/***/ }),
-/* 400 */
-/***/ (function(module, exports, __webpack_require__) {
+var numeric = /^[0-9]+$/
+function compareIdentifiers (a, b) {
+ var anum = numeric.test(a)
+ var bnum = numeric.test(b)
-/**
- * @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;
+ if (anum && bnum) {
+ a = +a
+ b = +b
+ }
- // 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);
- }
+ return a === b ? 0
+ : (anum && !bnum) ? -1
+ : (bnum && !anum) ? 1
+ : a < b ? -1
+ : 1
+}
- if (m !== this) {
- return m;
- }
- };
+exports.rcompareIdentifiers = rcompareIdentifiers
+function rcompareIdentifiers (a, b) {
+ return compareIdentifiers(b, a)
+}
- // 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;
+exports.major = major
+function major (a, loose) {
+ return new SemVer(a, loose).major
+}
- len = key.length;
- this.len += len;
+exports.minor = minor
+function minor (a, loose) {
+ return new SemVer(a, loose).minor
+}
- 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;
- }
+exports.patch = patch
+function patch (a, loose) {
+ return new SemVer(a, loose).patch
+}
- 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;
+exports.compare = compare
+function compare (a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose))
+}
- h1 ^= k1;
- h1 = (h1 << 13) | (h1 >>> 19);
- h1 = (h1 * 5 + 0xe6546b64) & 0xffffffff;
+exports.compareLoose = compareLoose
+function compareLoose (a, b) {
+ return compare(a, b, true)
+}
- if (i >= len) {
- break;
- }
+exports.rcompare = rcompare
+function rcompare (a, b, loose) {
+ return compare(b, a, loose)
+}
- 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);
- }
+exports.sort = sort
+function sort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compare(a, b, loose)
+ })
+}
- 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);
- }
+exports.rsort = rsort
+function rsort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.rcompare(a, b, loose)
+ })
+}
- this.h1 = h1;
- }
+exports.gt = gt
+function gt (a, b, loose) {
+ return compare(a, b, loose) > 0
+}
- this.k1 = k1;
- return this;
- };
+exports.lt = lt
+function lt (a, b, loose) {
+ return compare(a, b, loose) < 0
+}
- // 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;
+exports.eq = eq
+function eq (a, b, loose) {
+ return compare(a, b, loose) === 0
+}
- if (k1 > 0) {
- k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;
- k1 = (k1 << 15) | (k1 >>> 17);
- k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;
- h1 ^= k1;
- }
+exports.neq = neq
+function neq (a, b, loose) {
+ return compare(a, b, loose) !== 0
+}
- h1 ^= this.len;
+exports.gte = gte
+function gte (a, b, loose) {
+ return compare(a, b, loose) >= 0
+}
- h1 ^= h1 >>> 16;
- h1 = (h1 * 0xca6b + (h1 & 0xffff) * 0x85eb0000) & 0xffffffff;
- h1 ^= h1 >>> 13;
- h1 = (h1 * 0xae35 + (h1 & 0xffff) * 0xc2b20000) & 0xffffffff;
- h1 ^= h1 >>> 16;
+exports.lte = lte
+function lte (a, b, loose) {
+ return compare(a, b, loose) <= 0
+}
- return h1 >>> 0;
- };
+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
- // 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;
- };
+ case '!==':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a !== b
- // 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();
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose)
- if (true) {
- module.exports = MurmurHash3;
- } else {}
-}());
+ case '!=':
+ return neq(a, b, loose)
+
+ case '>':
+ return gt(a, b, loose)
+ case '>=':
+ return gte(a, b, loose)
-/***/ }),
-/* 401 */
-/***/ (function(module, exports) {
+ case '<':
+ return lt(a, b, loose)
-module.exports = require(undefined);
+ case '<=':
+ return lte(a, b, loose)
-/***/ }),
-/* 402 */
-/***/ (function(module, exports, __webpack_require__) {
+ 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
+ }
+ }
-"use strict";
+ if (!(this instanceof Comparator)) {
+ return new Comparator(comp, options)
+ }
-const isPlainObj = __webpack_require__(403);
+ debug('comparator', comp, options)
+ this.options = options
+ this.loose = !!options.loose
+ this.parse(comp)
-module.exports = (obj, opts) => {
- if (!isPlainObj(obj)) {
- throw new TypeError('Expected a plain object');
- }
+ if (this.semver === ANY) {
+ this.value = ''
+ } else {
+ this.value = this.operator + this.semver.version
+ }
- opts = opts || {};
+ debug('comp', this)
+}
- // DEPRECATED
- if (typeof opts === 'function') {
- throw new TypeError('Specify the compare function as an option instead');
- }
+var ANY = {}
+Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
+ var m = comp.match(r)
- const deep = opts.deep;
- const seenInput = [];
- const seenOutput = [];
+ if (!m) {
+ throw new TypeError('Invalid comparator: ' + comp)
+ }
- const sortKeys = x => {
- const seenIndex = seenInput.indexOf(x);
+ this.operator = m[1]
+ if (this.operator === '=') {
+ this.operator = ''
+ }
- if (seenIndex !== -1) {
- return seenOutput[seenIndex];
- }
+ // 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)
+ }
+}
- const ret = {};
- const keys = Object.keys(x).sort(opts.compare);
+Comparator.prototype.toString = function () {
+ return this.value
+}
- seenInput.push(x);
- seenOutput.push(ret);
+Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose)
- for (let i = 0; i < keys.length; i++) {
- const key = keys[i];
- const val = x[key];
+ if (this.semver === ANY) {
+ return true
+ }
- if (deep && Array.isArray(val)) {
- const retArr = [];
+ if (typeof version === 'string') {
+ version = new SemVer(version, this.options)
+ }
- for (let j = 0; j < val.length; j++) {
- retArr[j] = isPlainObj(val[j]) ? sortKeys(val[j]) : val[j];
- }
+ return cmp(version, this.operator, this.semver, this.options)
+}
- ret[key] = retArr;
- continue;
- }
+Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required')
+ }
- ret[key] = deep && isPlainObj(val) ? sortKeys(val) : val;
- }
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
- return ret;
- };
+ var rangeTmp
- return sortKeys(obj);
-};
+ 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 === '>'))
-/***/ }),
-/* 403 */
-/***/ (function(module, exports, __webpack_require__) {
+ return sameDirectionIncreasing || sameDirectionDecreasing ||
+ (sameSemVer && differentDirectionsInclusive) ||
+ oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
+}
-"use strict";
+exports.Range = Range
+function Range (range, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
-var toString = Object.prototype.toString;
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose &&
+ range.includePrerelease === !!options.includePrerelease) {
+ return range
+ } else {
+ return new Range(range.raw, options)
+ }
+ }
-module.exports = function (x) {
- var prototype;
- return toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));
-};
+ if (range instanceof Comparator) {
+ return new Range(range.value, options)
+ }
+ if (!(this instanceof Range)) {
+ return new Range(range, options)
+ }
-/***/ }),
-/* 404 */
-/***/ (function(module, exports, __webpack_require__) {
+ this.options = options
+ this.loose = !!options.loose
+ this.includePrerelease = !!options.includePrerelease
-"use strict";
+ // 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
+ })
-const fs = __webpack_require__(132);
-const path = __webpack_require__(4);
-const pify = __webpack_require__(405);
-const semver = __webpack_require__(406);
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range)
+ }
-const defaults = {
- mode: 0o777 & (~process.umask()),
- fs
-};
+ this.format()
+}
-const useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0');
+Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim()
+ }).join('||').trim()
+ return this.range
+}
-// 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, ''));
+Range.prototype.toString = function () {
+ return this.range
+}
- if (pathHasInvalidWinCharacters) {
- const error = new Error(`Path contains invalid characters: ${pth}`);
- error.code = 'EINVAL';
- throw error;
- }
- }
-};
+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])
-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;
-};
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(re[TILDETRIM], tildeTrimReplace)
-const makeDir = (input, options) => Promise.resolve().then(() => {
- checkPath(input);
- options = Object.assign({}, defaults, options);
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(re[CARETTRIM], caretTrimReplace)
- // TODO: Use util.promisify when targeting Node.js 8
- const mkdir = pify(options.fs.mkdir);
- const stat = pify(options.fs.stat);
+ // normalize spaces
+ range = range.split(/\s+/).join(' ')
- if (useNativeRecursiveOption && options.fs.mkdir === fs.mkdir) {
- const pth = path.resolve(input);
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
- return mkdir(pth, {
- mode: options.mode,
- recursive: true
- }).then(() => pth);
- }
+ 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)
- const make = pth => {
- return mkdir(pth, options.mode)
- .then(() => pth)
- .catch(error => {
- if (error.code === 'EPERM') {
- throw error;
- }
+ return set
+}
- if (error.code === 'ENOENT') {
- if (path.dirname(pth) === pth) {
- throw permissionError(pth);
- }
+Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required')
+ }
- if (error.message.includes('null bytes')) {
- throw error;
- }
+ 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)
+ })
+ })
+ })
+ })
+}
- return make(path.dirname(pth)).then(() => make(pth));
- }
+// 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(' ')
+ })
+}
- return stat(pth)
- .then(stats => stats.isDirectory() ? pth : Promise.reject())
- .catch(() => {
- throw error;
- });
- });
- };
+// 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
+}
- return make(path.resolve(input));
-});
+function isX (id) {
+ return !id || id.toLowerCase() === 'x' || id === '*'
+}
-module.exports = makeDir;
-module.exports.default = makeDir;
+// ~, ~> --> * (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(' ')
+}
-module.exports.sync = (input, options) => {
- checkPath(input);
- options = Object.assign({}, defaults, options);
+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 (useNativeRecursiveOption && options.fs.mkdirSync === fs.mkdirSync) {
- const pth = path.resolve(input);
+ 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'
+ }
- fs.mkdirSync(pth, {
- mode: options.mode,
- recursive: true
- });
+ debug('tilde return', ret)
+ return ret
+ })
+}
- return pth;
- }
+// ^ --> * (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 make = pth => {
- try {
- options.fs.mkdirSync(pth, options.mode);
- } catch (error) {
- if (error.code === 'EPERM') {
- throw error;
- }
+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
- if (error.code === 'ENOENT') {
- if (path.dirname(pth) === pth) {
- throw permissionError(pth);
- }
+ 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'
+ }
+ }
- if (error.message.includes('null bytes')) {
- throw error;
- }
+ debug('caret return', ret)
+ return ret
+ })
+}
- make(path.dirname(pth));
- return make(pth);
- }
+function replaceXRanges (comp, options) {
+ debug('replaceXRanges', comp, options)
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options)
+ }).join(' ')
+}
- try {
- if (!options.fs.statSync(pth).isDirectory()) {
- throw new Error('The path is not a directory');
- }
- } catch (_) {
- throw error;
- }
- }
+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
- return pth;
- };
+ if (gtlt === '=' && anyX) {
+ gtlt = ''
+ }
- return make(path.resolve(input));
-};
+ 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
+ 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
+ }
+ }
-/***/ }),
-/* 405 */
-/***/ (function(module, exports, __webpack_require__) {
+ 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'
+ }
-"use strict";
+ debug('xRange return', ret)
+ return ret
+ })
+}
-const processFn = (fn, options) => function (...args) {
- const P = options.promiseModule;
+// 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], '')
+}
- 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);
- }
+// 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
+ }
- fn.apply(this, args);
- });
-};
+ 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
+ }
-module.exports = (input, options) => {
- options = Object.assign({
- exclude: [/.+(Sync|Stream)$/],
- errorFirst: true,
- promiseModule: Promise
- }, options);
+ return (from + ' ' + to).trim()
+}
- 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}\``);
- }
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function (version) {
+ if (!version) {
+ return false
+ }
- 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);
- };
+ if (typeof version === 'string') {
+ version = new SemVer(version, this.options)
+ }
- 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));
- }
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true
+ }
+ }
+ return false
+}
- 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;
- }
+function testSet (set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false
+ }
+ }
- return ret;
-};
+ 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
+ }
+ 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
+ }
+ }
+ }
-/***/ }),
-/* 406 */
-/***/ (function(module, exports) {
+ // Version has a -pre, but it's not one of the ones we like.
+ return false
+ }
-exports = module.exports = SemVer
+ return true
+}
-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)
+exports.satisfies = satisfies
+function satisfies (version, range, options) {
+ try {
+ range = new Range(range, options)
+ } catch (er) {
+ return false
}
-} else {
- debug = function () {}
+ return range.test(version)
}
-// 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
+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
+}
-// Max safe segment length for coercion.
-var MAX_SAFE_COMPONENT_LENGTH = 16
+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
+}
-// The actual regexps go on exports.re
-var re = exports.re = []
-var src = exports.src = []
-var R = 0
+exports.minVersion = minVersion
+function minVersion (range, loose) {
+ range = new Range(range, loose)
-// The following Regular Expressions can be used for tokenizing,
-// validating, and parsing SemVer version strings.
+ var minver = new SemVer('0.0.0')
+ if (range.test(minver)) {
+ return minver
+ }
-// ## Numeric Identifier
-// A single `0`, or a non-zero digit followed by zero or more digits.
+ minver = new SemVer('0.0.0-0')
+ if (range.test(minver)) {
+ return minver
+ }
-var NUMERICIDENTIFIER = R++
-src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'
-var NUMERICIDENTIFIERLOOSE = R++
-src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'
+ minver = null
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
-// ## Non-numeric Identifier
-// Zero or more digits, followed by a letter or hyphen, and then zero or
-// more letters, digits, or hyphens.
+ 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)
+ }
+ })
+ }
-var NONNUMERICIDENTIFIER = R++
-src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
+ if (minver && range.test(minver)) {
+ return minver
+ }
-// ## Main Version
-// Three dot-separated numeric identifiers.
+ return null
+}
-var MAINVERSION = R++
-src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')'
+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
+ }
+}
-var MAINVERSIONLOOSE = R++
-src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')'
+// 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)
+}
-// ## Pre-release Version Identifier
-// A numeric identifier, or a non-numeric identifier.
+// 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)
+}
-var PRERELEASEIDENTIFIER = R++
-src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
- '|' + src[NONNUMERICIDENTIFIER] + ')'
+exports.outside = outside
+function outside (version, range, hilo, options) {
+ version = new SemVer(version, options)
+ range = new Range(range, options)
-var PRERELEASEIDENTIFIERLOOSE = R++
-src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
- '|' + src[NONNUMERICIDENTIFIER] + ')'
+ 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 ">"')
+ }
-// ## Pre-release Version
-// Hyphen, followed by one or more dot-separated pre-release version
-// identifiers.
+ // If it satisifes the range it is not outside
+ if (satisfies(version, range, options)) {
+ return false
+ }
-var PRERELEASE = R++
-src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
- '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
-var PRERELEASELOOSE = R++
-src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
- '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
-// ## Build Metadata Identifier
-// Any combination of digits, letters, or hyphens.
+ var high = null
+ var low = null
-var BUILDIDENTIFIER = R++
-src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
+ 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
+ }
+ })
-// ## Build Metadata
-// Plus sign, followed by one or more period-separated build metadata
-// identifiers.
+ // If the edge version comparator has a operator then our version
+ // isn't outside it
+ if (high.operator === comp || high.operator === ecomp) {
+ return false
+ }
-var BUILD = R++
-src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
- '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'
+ // 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
+}
-// ## Full Version String
-// A main version, followed optionally by a pre-release version and
-// build metadata.
+exports.prerelease = prerelease
+function prerelease (version, options) {
+ var parsed = parse(version, options)
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
-// 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.
+exports.intersects = intersects
+function intersects (r1, r2, options) {
+ r1 = new Range(r1, options)
+ r2 = new Range(r2, options)
+ return r1.intersects(r2)
+}
-var FULL = R++
-var FULLPLAIN = 'v?' + src[MAINVERSION] +
- src[PRERELEASE] + '?' +
- src[BUILD] + '?'
+exports.coerce = coerce
+function coerce (version) {
+ if (version instanceof SemVer) {
+ return version
+ }
-src[FULL] = '^' + FULLPLAIN + '$'
+ if (typeof version !== 'string') {
+ return null
+ }
-// 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 match = version.match(re[COERCE])
-var LOOSE = R++
-src[LOOSE] = '^' + LOOSEPLAIN + '$'
+ if (match == null) {
+ return null
+ }
-var GTLT = R++
-src[GTLT] = '((?:<|>)?=?)'
+ return parse(match[1] +
+ '.' + (match[2] || '0') +
+ '.' + (match[3] || '0'))
+}
-// Something like "2.*" or "1.2.x".
-// Note that "x.x" is a valid xRange identifer, meaning "any version"
-// Only the first item is strictly required.
-var XRANGEIDENTIFIERLOOSE = R++
-src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
-var XRANGEIDENTIFIER = R++
-src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'
-var XRANGEPLAIN = R++
-src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:' + src[PRERELEASE] + ')?' +
- src[BUILD] + '?' +
- ')?)?'
+/***/ }),
+/* 490 */
+/***/ (function(module, exports, __webpack_require__) {
-var XRANGEPLAINLOOSE = R++
-src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:' + src[PRERELEASELOOSE] + ')?' +
- src[BUILD] + '?' +
- ')?)?'
+var parse = __webpack_require__(491);
+var correct = __webpack_require__(493);
-var XRANGE = R++
-src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'
-var XRANGELOOSE = R++
-src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'
+var genericWarning = (
+ 'license should be ' +
+ 'a valid SPDX license expression (without "LicenseRef"), ' +
+ '"UNLICENSED", or ' +
+ '"SEE LICENSE IN "'
+);
-// 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])'
+var fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;
-// Tilde ranges.
-// Meaning is "reasonably at or greater than"
-var LONETILDE = R++
-src[LONETILDE] = '(?:~>?)'
+function startsWith(prefix, string) {
+ return string.slice(0, prefix.length) === prefix;
+}
-var TILDETRIM = R++
-src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'
-re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')
-var tildeTrimReplace = '$1~'
+function usesLicenseRef(ast) {
+ if (ast.hasOwnProperty('license')) {
+ var license = ast.license;
+ return (
+ startsWith('LicenseRef', license) ||
+ startsWith('DocumentRef', license)
+ );
+ } else {
+ return (
+ usesLicenseRef(ast.left) ||
+ usesLicenseRef(ast.right)
+ );
+ }
+}
-var TILDE = R++
-src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'
-var TILDELOOSE = R++
-src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'
+module.exports = function(argument) {
+ var ast;
-// Caret ranges.
-// Meaning is "at least and backwards compatible with"
-var LONECARET = R++
-src[LONECARET] = '(?:\\^)'
+ try {
+ ast = parse(argument);
+ } catch (e) {
+ var match
+ if (
+ argument === 'UNLICENSED' ||
+ argument === 'UNLICENCED'
+ ) {
+ return {
+ validForOldPackages: true,
+ validForNewPackages: true,
+ unlicensed: true
+ };
+ } else if (match = fileReferenceRE.exec(argument)) {
+ return {
+ validForOldPackages: true,
+ validForNewPackages: true,
+ inFile: match[1]
+ };
+ } else {
+ var result = {
+ validForOldPackages: false,
+ validForNewPackages: false,
+ warnings: [genericWarning]
+ };
+ var corrected = correct(argument);
+ if (corrected) {
+ result.warnings.push(
+ 'license is similar to the valid expression "' + corrected + '"'
+ );
+ }
+ return result;
+ }
+ }
-var CARETTRIM = R++
-src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'
-re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')
-var caretTrimReplace = '$1^'
+ if (usesLicenseRef(ast)) {
+ return {
+ validForNewPackages: false,
+ validForOldPackages: false,
+ spdx: true,
+ warnings: [genericWarning]
+ };
+ } else {
+ return {
+ validForNewPackages: true,
+ validForOldPackages: true,
+ spdx: true
+ };
+ }
+};
-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 + ')$|^$'
+/***/ }),
+/* 491 */
+/***/ (function(module, exports, __webpack_require__) {
-// 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] + ')'
+var parser = __webpack_require__(492).parser
-// this one has to use the /g flag
-re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')
-var comparatorTrimReplace = '$1$2$3'
+module.exports = function (argument) {
+ return parser.parse(argument)
+}
-// Something like `1.2.3 - 1.2.4`
-// Note that these all use the loose form, because they'll be
-// checked against either the strict or loose comparator form
-// later.
-var HYPHENRANGE = R++
-src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAIN] + ')' +
- '\\s*$'
-var HYPHENRANGELOOSE = R++
-src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s*$'
+/***/ }),
+/* 492 */
+/***/ (function(module, exports, __webpack_require__) {
-// Star ranges basically just allow anything at all.
-var STAR = R++
-src[STAR] = '(<|>)?=?\\s*\\*'
+/* WEBPACK VAR INJECTION */(function(module) {/* parser generated by jison 0.4.17 */
+/*
+ Returns a Parser object of the following structure:
-// 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])
+ Parser: {
+ yy: {}
}
-}
-exports.parse = parse
-function parse (version, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
+ 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},
}
}
- if (version instanceof SemVer) {
- return version
- }
- if (typeof version !== 'string') {
- return null
+ 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)
}
- if (version.length > MAX_LENGTH) {
- return null
- }
- var r = options.loose ? re[LOOSE] : re[FULL]
- if (!r.test(version)) {
- return null
+ 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)
}
-
- try {
- return new SemVer(version, options)
- } catch (er) {
- return null
+ 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 */
-exports.valid = valid
-function valid (version, options) {
- var v = parse(version, options)
- return v ? v.version : null
+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
}
-
-exports.clean = clean
-function clean (version, options) {
- var s = parse(version.trim().replace(/^[=v]+/, ''), options)
- return s ? s.version : null
+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;
-exports.SemVer = SemVer
-
-function SemVer (version, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
+ throw new _parseError(str, hash);
}
- }
- if (version instanceof SemVer) {
- if (version.loose === options.loose) {
- return version
+},
+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 {
- version = version.version
+ this.parseError = Object.getPrototypeOf(this).parseError;
}
- } else if (typeof version !== 'string') {
- throw new TypeError('Invalid Version: ' + version)
- }
+ 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 = ({
- if (version.length > MAX_LENGTH) {
- throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
- }
+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 instanceof SemVer)) {
- return new SemVer(version, options)
- }
+ if (this.options.ranges) {
+ this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+ }
+ this.yyleng = this.yytext.length;
+ return this;
+ },
- debug('SemVer', version, options)
- this.options = options
- this.loose = !!options.loose
+// When called from action, caches matched text and appends it on next action
+more:function () {
+ this._more = true;
+ return this;
+ },
- var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])
+// 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
+ });
- if (!m) {
- throw new TypeError('Invalid Version: ' + version)
- }
+ }
+ return this;
+ },
- this.raw = version
+// retain first n characters of the match
+less:function (n) {
+ this.unput(this.match.slice(n));
+ },
- // these are actually numbers
- this.major = +m[1]
- this.minor = +m[2]
- this.patch = +m[3]
+// 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, "");
+ },
- if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
- throw new TypeError('Invalid major version')
- }
+// 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, "");
+ },
- if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
- throw new TypeError('Invalid minor version')
- }
+// 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 + "^";
+ },
- if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
- throw new TypeError('Invalid patch version')
- }
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function (match, indexed_rule) {
+ var token,
+ lines,
+ backup;
- // 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
+ 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);
+ }
}
- }
- return id
- })
- }
- this.build = m[5] ? m[5].split('.') : []
- this.format()
-}
+ 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;
+ },
-SemVer.prototype.format = function () {
- this.version = this.major + '.' + this.minor + '.' + this.patch
- if (this.prerelease.length) {
- this.version += '-' + this.prerelease.join('.')
- }
- return this.version
-}
+// return next match in input
+next:function () {
+ if (this.done) {
+ return this.EOF;
+ }
+ if (!this._input) {
+ this.done = true;
+ }
-SemVer.prototype.toString = function () {
- return this.version
-}
+ 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
+ });
+ }
+ },
-SemVer.prototype.compare = function (other) {
- debug('SemVer.compare', this.version, this.options, other)
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
+// return next match that has a token
+lex:function lex() {
+ var r = this.next();
+ if (r) {
+ return r;
+ } else {
+ return this.lex();
+ }
+ },
- return this.compareMain(other) || this.comparePre(other)
-}
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin(condition) {
+ this.conditionStack.push(condition);
+ },
-SemVer.prototype.compareMain = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
+// 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];
+ }
+ },
- return compareIdentifiers(this.major, other.major) ||
- compareIdentifiers(this.minor, other.minor) ||
- compareIdentifiers(this.patch, other.patch)
-}
+// 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;
+ }
+ },
-SemVer.prototype.comparePre = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
+// 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";
+ }
+ },
- // 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
- }
+// alias for begin(condition)
+pushState:function pushState(condition) {
+ this.begin(condition);
+ },
- 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)
+// 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;
}
-
-// preminor will bump the version up to the next minor release, and immediately
-// down to pre-release. premajor and prepatch work the same way.
-SemVer.prototype.inc = function (release, identifier) {
- switch (release) {
- case 'premajor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor = 0
- this.major++
- this.inc('pre', identifier)
- break
- case 'preminor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor++
- this.inc('pre', identifier)
- break
- case 'prepatch':
- // If this is already a prerelease, it will bump to the next version
- // drop any prereleases that might already exist, since they are not
- // relevant at this point.
- this.prerelease.length = 0
- this.inc('patch', identifier)
- this.inc('pre', identifier)
- break
- // If the input is a non-prerelease version, this acts the same as
- // prepatch.
- case 'prerelease':
- if (this.prerelease.length === 0) {
- this.inc('patch', identifier)
- }
- this.inc('pre', identifier)
- break
-
- case 'major':
- // If this is a pre-major version, bump up to the same major version.
- // Otherwise increment major.
- // 1.0.0-5 bumps to 1.0.0
- // 1.1.0 bumps to 2.0.0
- if (this.minor !== 0 ||
- this.patch !== 0 ||
- this.prerelease.length === 0) {
- this.major++
- }
- this.minor = 0
- this.patch = 0
- this.prerelease = []
- break
- case 'minor':
- // If this is a pre-minor version, bump up to the same minor version.
- // Otherwise increment minor.
- // 1.2.0-5 bumps to 1.2.0
- // 1.2.1 bumps to 1.3.0
- if (this.patch !== 0 || this.prerelease.length === 0) {
- this.minor++
- }
- this.patch = 0
- this.prerelease = []
- break
- case 'patch':
- // If this is not a pre-release version, it will increment the patch.
- // If it is a pre-release it will bump up to the same patch version.
- // 1.2.0-5 patches to 1.2.0
- // 1.2.0 patches to 1.2.1
- if (this.prerelease.length === 0) {
- this.patch++
- }
- this.prerelease = []
- break
- // This probably shouldn't be used publicly.
- // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
- case 'pre':
- if (this.prerelease.length === 0) {
- this.prerelease = [0]
- } else {
- var i = this.prerelease.length
- while (--i >= 0) {
- if (typeof this.prerelease[i] === 'number') {
- this.prerelease[i]++
- i = -2
- }
- }
- if (i === -1) {
- // didn't increment anything
- this.prerelease.push(0)
- }
- }
- if (identifier) {
- // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
- // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
- if (this.prerelease[0] === identifier) {
- if (isNaN(this.prerelease[1])) {
- this.prerelease = [identifier, 0]
- }
- } else {
- this.prerelease = [identifier, 0]
- }
- }
- break
-
- default:
- throw new Error('invalid increment argument: ' + release)
- }
- this.format()
- this.raw = this.version
- return this
+},
+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;
+})();
-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
- }
- }
+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);
}
- return defaultResult // may be undefined
- }
-}
-
-exports.compareIdentifiers = compareIdentifiers
-
-var numeric = /^[0-9]+$/
-function compareIdentifiers (a, b) {
- var anum = numeric.test(a)
- var bnum = numeric.test(b)
-
- if (anum && bnum) {
- a = +a
- b = +b
- }
-
- return 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
-}
-
-exports.minor = minor
-function minor (a, loose) {
- return new SemVer(a, loose).minor
-}
-
-exports.patch = patch
-function patch (a, loose) {
- return new SemVer(a, loose).patch
-}
-
-exports.compare = compare
-function compare (a, b, loose) {
- return new SemVer(a, loose).compare(new SemVer(b, loose))
-}
-
-exports.compareLoose = compareLoose
-function compareLoose (a, b) {
- return compare(a, b, true)
-}
-
-exports.rcompare = rcompare
-function rcompare (a, b, loose) {
- return compare(b, a, loose)
-}
-
-exports.sort = sort
-function sort (list, loose) {
- return list.sort(function (a, b) {
- return exports.compare(a, b, loose)
- })
-}
-
-exports.rsort = rsort
-function rsort (list, loose) {
- return list.sort(function (a, b) {
- return exports.rcompare(a, b, loose)
- })
-}
-
-exports.gt = gt
-function gt (a, b, loose) {
- return compare(a, b, loose) > 0
-}
-
-exports.lt = lt
-function lt (a, b, loose) {
- return compare(a, b, loose) < 0
-}
-
-exports.eq = eq
-function eq (a, b, loose) {
- return compare(a, b, loose) === 0
-}
-
-exports.neq = neq
-function neq (a, b, loose) {
- return compare(a, b, loose) !== 0
-}
-
-exports.gte = gte
-function gte (a, b, loose) {
- return compare(a, b, loose) >= 0
-}
-
-exports.lte = lte
-function lte (a, b, loose) {
- return compare(a, b, loose) <= 0
-}
-
-exports.cmp = cmp
-function cmp (a, op, b, loose) {
- switch (op) {
- case '===':
- if (typeof a === 'object')
- a = a.version
- if (typeof b === 'object')
- b = b.version
- return a === b
-
- 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)
-
- 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)
- }
+ var source = __webpack_require__(253).readFileSync(__webpack_require__(4).normalize(args[1]), "utf8");
+ return exports.parser.parse(source);
+};
+if ( true && __webpack_require__.c[__webpack_require__.s] === module) {
+ exports.main(process.argv.slice(1));
}
-
-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
- }
- }
-
- if (!(this instanceof Comparator)) {
- return new Comparator(comp, options)
- }
-
- debug('comparator', comp, options)
- this.options = options
- this.loose = !!options.loose
- this.parse(comp)
-
- if (this.semver === ANY) {
- this.value = ''
- } else {
- this.value = this.operator + this.semver.version
- }
-
- debug('comp', this)
}
-var ANY = {}
-Comparator.prototype.parse = function (comp) {
- var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
- var m = comp.match(r)
-
- if (!m) {
- throw new TypeError('Invalid comparator: ' + comp)
- }
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(237)(module)))
- this.operator = m[1]
- if (this.operator === '=') {
- this.operator = ''
- }
+/***/ }),
+/* 493 */
+/***/ (function(module, exports, __webpack_require__) {
- // 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)
- }
-}
+var licenseIDs = __webpack_require__(494);
-Comparator.prototype.toString = function () {
- return this.value
+function valid(string) {
+ return licenseIDs.indexOf(string) > -1;
}
-Comparator.prototype.test = function (version) {
- debug('Comparator.test', version, this.options.loose)
+// Common transpositions of license identifier acronyms
+var transpositions = [
+ ['APGL', 'AGPL'],
+ ['Gpl', 'GPL'],
+ ['GLP', 'GPL'],
+ ['APL', 'Apache'],
+ ['ISD', 'ISC'],
+ ['GLP', 'GPL'],
+ ['IST', 'ISC'],
+ ['Claude', 'Clause'],
+ [' or later', '+'],
+ [' International', ''],
+ ['GNU', 'GPL'],
+ ['GUN', 'GPL'],
+ ['+', ''],
+ ['GNU GPL', 'GPL'],
+ ['GNU/GPL', 'GPL'],
+ ['GNU GLP', 'GPL'],
+ ['GNU General Public License', 'GPL'],
+ ['Gnu public license', 'GPL'],
+ ['GNU Public License', 'GPL'],
+ ['GNU GENERAL PUBLIC LICENSE', 'GPL'],
+ ['MTI', 'MIT'],
+ ['Mozilla Public License', 'MPL'],
+ ['WTH', 'WTF'],
+ ['-License', '']
+];
- if (this.semver === ANY) {
- return true
- }
+var TRANSPOSED = 0;
+var CORRECT = 1;
- if (typeof version === 'string') {
- version = new SemVer(version, this.options)
+// Simple corrections to nearly valid identifiers.
+var transforms = [
+ // e.g. 'mit'
+ function(argument) {
+ return argument.toUpperCase();
+ },
+ // e.g. 'MIT '
+ function(argument) {
+ return argument.trim();
+ },
+ // e.g. 'M.I.T.'
+ function(argument) {
+ return argument.replace(/\./g, '');
+ },
+ // e.g. 'Apache- 2.0'
+ function(argument) {
+ return argument.replace(/\s+/g, '');
+ },
+ // e.g. 'CC BY 4.0''
+ function(argument) {
+ return argument.replace(/\s+/g, '-');
+ },
+ // e.g. 'LGPLv2.1'
+ function(argument) {
+ return argument.replace('v', '-');
+ },
+ // e.g. 'Apache 2.0'
+ function(argument) {
+ return argument.replace(/,?\s*(\d)/, '-$1');
+ },
+ // e.g. 'GPL 2'
+ function(argument) {
+ return argument.replace(/,?\s*(\d)/, '-$1.0');
+ },
+ // e.g. 'Apache Version 2.0'
+ function(argument) {
+ return argument.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2');
+ },
+ // e.g. 'Apache Version 2'
+ function(argument) {
+ return argument.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2.0');
+ },
+ // e.g. 'ZLIB'
+ function(argument) {
+ return argument[0].toUpperCase() + argument.slice(1);
+ },
+ // e.g. 'MPL/2.0'
+ function(argument) {
+ return argument.replace('/', '-');
+ },
+ // e.g. 'Apache 2'
+ function(argument) {
+ return argument
+ .replace(/\s*V\s*(\d)/, '-$1')
+ .replace(/(\d)$/, '$1.0');
+ },
+ // e.g. 'GPL-2.0-'
+ function(argument) {
+ return argument.slice(0, argument.length - 1);
+ },
+ // e.g. 'GPL2'
+ function(argument) {
+ return argument.replace(/(\d)$/, '-$1.0');
+ },
+ // e.g. 'BSD 3'
+ function(argument) {
+ return argument.replace(/(-| )?(\d)$/, '-$2-Clause');
+ },
+ // e.g. 'BSD clause 3'
+ function(argument) {
+ return argument.replace(/(-| )clause(-| )(\d)/, '-$3-Clause');
+ },
+ // e.g. 'BY-NC-4.0'
+ function(argument) {
+ return 'CC-' + argument;
+ },
+ // e.g. 'BY-NC'
+ function(argument) {
+ return 'CC-' + argument + '-4.0';
+ },
+ // e.g. 'Attribution-NonCommercial'
+ function(argument) {
+ return argument
+ .replace('Attribution', 'BY')
+ .replace('NonCommercial', 'NC')
+ .replace('NoDerivatives', 'ND')
+ .replace(/ (\d)/, '-$1')
+ .replace(/ ?International/, '');
+ },
+ // e.g. 'Attribution-NonCommercial'
+ function(argument) {
+ return 'CC-' +
+ argument
+ .replace('Attribution', 'BY')
+ .replace('NonCommercial', 'NC')
+ .replace('NoDerivatives', 'ND')
+ .replace(/ (\d)/, '-$1')
+ .replace(/ ?International/, '') +
+ '-4.0';
}
+];
- return cmp(version, this.operator, this.semver, this.options)
-}
+// If all else fails, guess that strings containing certain substrings
+// meant to identify certain licenses.
+var lastResorts = [
+ ['UNLI', 'Unlicense'],
+ ['WTF', 'WTFPL'],
+ ['2 CLAUSE', 'BSD-2-Clause'],
+ ['2-CLAUSE', 'BSD-2-Clause'],
+ ['3 CLAUSE', 'BSD-3-Clause'],
+ ['3-CLAUSE', 'BSD-3-Clause'],
+ ['AFFERO', 'AGPL-3.0'],
+ ['AGPL', 'AGPL-3.0'],
+ ['APACHE', 'Apache-2.0'],
+ ['ARTISTIC', 'Artistic-2.0'],
+ ['Affero', 'AGPL-3.0'],
+ ['BEER', 'Beerware'],
+ ['BOOST', 'BSL-1.0'],
+ ['BSD', 'BSD-2-Clause'],
+ ['ECLIPSE', 'EPL-1.0'],
+ ['FUCK', 'WTFPL'],
+ ['GNU', 'GPL-3.0'],
+ ['LGPL', 'LGPL-3.0'],
+ ['GPL', 'GPL-3.0'],
+ ['MIT', 'MIT'],
+ ['MPL', 'MPL-2.0'],
+ ['X11', 'X11'],
+ ['ZLIB', 'Zlib']
+];
-Comparator.prototype.intersects = function (comp, options) {
- if (!(comp instanceof Comparator)) {
- throw new TypeError('a Comparator is required')
- }
+var SUBSTRING = 0;
+var IDENTIFIER = 1;
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
+var validTransformation = function(identifier) {
+ for (var i = 0; i < transforms.length; i++) {
+ var transformed = transforms[i](identifier);
+ if (transformed !== identifier && valid(transformed)) {
+ return transformed;
}
}
+ return null;
+};
- var rangeTmp
-
- 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
+var validLastResort = function(identifier) {
+ var upperCased = identifier.toUpperCase();
+ for (var i = 0; i < lastResorts.length; i++) {
+ var lastResort = lastResorts[i];
+ if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {
+ return lastResort[IDENTIFIER];
}
}
+ return null;
+};
- if (range instanceof Range) {
- if (range.loose === !!options.loose &&
- range.includePrerelease === !!options.includePrerelease) {
- return range
- } else {
- return new Range(range.raw, options)
+var anyCorrection = function(identifier, check) {
+ for (var i = 0; i < transpositions.length; i++) {
+ var transposition = transpositions[i];
+ var transposed = transposition[TRANSPOSED];
+ if (identifier.indexOf(transposed) > -1) {
+ var corrected = identifier.replace(
+ transposed,
+ transposition[CORRECT]
+ );
+ var checked = check(corrected);
+ if (checked !== null) {
+ return checked;
+ }
}
}
+ return null;
+};
- if (range instanceof Comparator) {
- return new Range(range.value, options)
+module.exports = function(identifier) {
+ identifier = identifier.replace(/\+$/, '');
+ if (valid(identifier)) {
+ return identifier;
}
-
- if (!(this instanceof Range)) {
- return new Range(range, options)
+ var transformed = validTransformation(identifier);
+ if (transformed !== null) {
+ return transformed;
}
-
- this.options = options
- this.loose = !!options.loose
- this.includePrerelease = !!options.includePrerelease
-
- // 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)
+ transformed = anyCorrection(identifier, function(argument) {
+ if (valid(argument)) {
+ return argument;
+ }
+ return validTransformation(argument);
+ });
+ if (transformed !== null) {
+ return transformed;
}
-
- this.format()
-}
-
-Range.prototype.format = function () {
- this.range = this.set.map(function (comps) {
- return comps.join(' ').trim()
- }).join('||').trim()
- return this.range
-}
-
-Range.prototype.toString = function () {
- return this.range
-}
-
-Range.prototype.parseRange = function (range) {
- var loose = this.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)
-
- // `^ 1.2.3` => `^1.2.3`
- range = range.replace(re[CARETTRIM], caretTrimReplace)
-
- // normalize spaces
- range = range.split(/\s+/).join(' ')
-
- // At this point, the range is completely trimmed and
- // ready to be split into comparators.
-
- var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
- var set = range.split(' ').map(function (comp) {
- return parseComparator(comp, 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)
- })
+ transformed = validLastResort(identifier);
+ if (transformed !== null) {
+ return transformed;
}
- set = set.map(function (comp) {
- return new Comparator(comp, this.options)
- }, this)
-
- return set
-}
-
-Range.prototype.intersects = function (range, options) {
- if (!(range instanceof Range)) {
- throw new TypeError('a Range is required')
+ transformed = anyCorrection(identifier, validLastResort);
+ if (transformed !== null) {
+ return transformed;
}
+ return null;
+};
- 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)
- })
- })
- })
- })
-}
-
-// 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(' ')
- })
-}
-
-// 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
- })
-}
+/***/ }),
+/* 494 */
+/***/ (function(module) {
-// ^ --> * (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(' ')
-}
+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\"]");
-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
+/***/ }),
+/* 495 */
+/***/ (function(module, 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";
- debug('caret return', ret)
- return ret
- })
-}
+var url = __webpack_require__(324)
+var gitHosts = __webpack_require__(496)
+var GitHost = module.exports = __webpack_require__(497)
-function replaceXRanges (comp, options) {
- debug('replaceXRanges', comp, options)
- return comp.split(/\s+/).map(function (comp) {
- return replaceXRange(comp, options)
- }).join(' ')
+var protocolToRepresentationMap = {
+ 'git+ssh:': 'sshurl',
+ 'git+https:': 'https',
+ 'ssh:': 'sshurl',
+ 'git:': 'git'
}
-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
-
- 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
- }
- }
-
- ret = gtlt + M + '.' + m + '.' + p
- } else if (xm) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (xp) {
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- }
-
- debug('xRange return', ret)
-
- return ret
- })
+function protocolToRepresentation (protocol) {
+ return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)
}
-// 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], '')
+var authProtocols = {
+ 'git:': true,
+ 'https:': true,
+ 'git+https:': true,
+ 'http:': true,
+ 'git+http:': true
}
-// 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()
-}
+var cache = {}
-// if ANY of the sets match ALL of its comparators, then pass
-Range.prototype.test = function (version) {
- if (!version) {
- return false
- }
+module.exports.fromUrl = function (giturl, opts) {
+ if (typeof giturl !== 'string') return
+ var key = giturl + JSON.stringify(opts || {})
- if (typeof version === 'string') {
- version = new SemVer(version, this.options)
+ if (!(key in cache)) {
+ cache[key] = fromUrl(giturl, opts)
}
- for (var i = 0; i < this.set.length; i++) {
- if (testSet(this.set[i], version, this.options)) {
- return true
- }
- }
- return false
+ return cache[key]
}
-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
+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
}
-
- 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
+ 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
}
-
- // Version has a -pre, but it's not one of the ones we like.
- return false
- }
-
- return true
+ }).filter(function (gitHostInfo) { return gitHostInfo })
+ if (matches.length !== 1) return
+ return matches[0]
}
-exports.satisfies = satisfies
-function satisfies (version, range, options) {
- try {
- range = new Range(range, options)
- } catch (er) {
- return false
- }
- return range.test(version)
+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)
}
-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
+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
}
- 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 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 min
-}
-
-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
+ return legacy
}
-
- minver = new SemVer('0.0.0-0')
- if (range.test(minver)) {
- return minver
+ 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] || '')
}
+}
- 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)
- }
- })
- }
+/***/ }),
+/* 496 */
+/***/ (function(module, exports, __webpack_require__) {
- if (minver && range.test(minver)) {
- return minver
- }
+"use strict";
- return null
-}
-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
+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)
+ }
}
}
-// 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)
+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
}
-// 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)
+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, '-')
}
-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 ">"')
- }
+/***/ }),
+/* 497 */
+/***/ (function(module, exports, __webpack_require__) {
- // If it satisifes the range it is not outside
- if (satisfies(version, range, options)) {
- return false
- }
+"use strict";
- // From now on, variable terms are as if we're in "gtr" mode.
- // but note that everything is flipped for the "ltr" function.
+var gitHosts = __webpack_require__(496)
+/* eslint-disable node/no-deprecated-api */
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i]
+// 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
- var high = null
- var low = null
+ var keys = Object.keys(source)
+ var i = keys.length
+ while (i--) {
+ target[keys[i]] = source[keys[i]]
+ }
+ return target
+}
- 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
- }
- })
+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 || {}
+}
- // If the edge version comparator has a operator then our version
- // isn't outside it
- if (high.operator === comp || high.operator === ecomp) {
- return false
- }
+GitHost.prototype.hash = function () {
+ return this.committish ? '#' + this.committish : ''
+}
- // 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
+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
}
- return true
}
-exports.prerelease = prerelease
-function prerelease (version, options) {
- var parsed = parse(version, options)
- return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+GitHost.prototype.ssh = function (opts) {
+ return this._fill(this.sshtemplate, opts)
}
-exports.intersects = intersects
-function intersects (r1, r2, options) {
- r1 = new Range(r1, options)
- r2 = new Range(r2, options)
- return r1.intersects(r2)
+GitHost.prototype.sshurl = function (opts) {
+ return this._fill(this.sshurltemplate, opts)
}
-exports.coerce = coerce
-function coerce (version) {
- if (version instanceof SemVer) {
- return version
- }
-
- if (typeof version !== 'string') {
- return null
+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)
}
+}
- var match = version.match(re[COERCE])
-
- if (match == null) {
- return null
- }
+GitHost.prototype.docs = function (opts) {
+ return this._fill(this.docstemplate, opts)
+}
- return parse(match[1] +
- '.' + (match[2] || '0') +
- '.' + (match[3] || '0'))
+GitHost.prototype.bugs = function (opts) {
+ return this._fill(this.bugstemplate, opts)
}
+GitHost.prototype.https = function (opts) {
+ return this._fill(this.httpstemplate, opts)
+}
-/***/ }),
-/* 407 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
+GitHost.prototype.git = function (opts) {
+ return this._fill(this.gittemplate, opts)
+}
-// detect either spaces or tabs but not both to properly handle tabs
-// for indentation and spaces for alignment
-const INDENT_RE = /^(?:( )+|\t+)/;
+GitHost.prototype.shortcut = function (opts) {
+ return this._fill(this.shortcuttemplate, opts)
+}
-function getMostUsed(indents) {
- let result = 0;
- let maxUsed = 0;
- let maxWeight = 0;
+GitHost.prototype.path = function (opts) {
+ return this._fill(this.pathtemplate, opts)
+}
- for (const entry of indents) {
- // TODO: use destructuring when targeting Node.js 6
- const key = entry[0];
- const val = entry[1];
+GitHost.prototype.tarball = function (opts_) {
+ var opts = extend({}, opts_, { noCommittish: false })
+ return this._fill(this.tarballtemplate, opts)
+}
- const u = val[0];
- const w = val[1];
+GitHost.prototype.file = function (P, opts) {
+ return this._fill(this.filetemplate, extend({ path: P }, opts))
+}
- if (u > maxUsed || (u === maxUsed && w > maxWeight)) {
- maxUsed = u;
- maxWeight = w;
- result = Number(key);
- }
- }
+GitHost.prototype.getDefaultRepresentation = function () {
+ return this.default
+}
- return result;
+GitHost.prototype.toString = function (opts) {
+ if (this.default && typeof this[this.default] === 'function') return this[this.default](opts)
+ return this.sshurl(opts)
}
-module.exports = str => {
- if (typeof str !== 'string') {
- throw new TypeError('Expected a string');
- }
- // used to see if tabs or spaces are the most used
- let tabs = 0;
- let spaces = 0;
+/***/ }),
+/* 498 */
+/***/ (function(module, exports, __webpack_require__) {
- // remember the size of previous line's indentation
- let prev = 0;
+var async = __webpack_require__(499);
+async.core = __webpack_require__(510);
+async.isCore = __webpack_require__(512);
+async.sync = __webpack_require__(513);
- // remember how many indents/unindents as occurred for a given size
- // and how much lines follow a given indentation
- //
- // indents = {
- // 3: [1, 0],
- // 4: [1, 5],
- // 5: [1, 0],
- // 12: [1, 0],
- // }
- const indents = new Map();
+module.exports = async;
- // pointer to the array of last used indent
- let current;
- // whether the last action was an indent (opposed to an unindent)
- let isIndent;
+/***/ }),
+/* 499 */
+/***/ (function(module, exports, __webpack_require__) {
- for (const line of str.split(/\n/g)) {
- if (!line) {
- // ignore empty lines
- continue;
- }
+var fs = __webpack_require__(253);
+var getHomedir = __webpack_require__(500);
+var path = __webpack_require__(4);
+var caller = __webpack_require__(501);
+var nodeModulesPaths = __webpack_require__(502);
+var normalizeOptions = __webpack_require__(504);
+var isCore = __webpack_require__(505);
- let indent;
- const matches = line.match(INDENT_RE);
+var realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath;
- if (matches) {
- indent = matches[0].length;
+var homedir = getHomedir();
+var defaultPaths = function () {
+ return [
+ path.join(homedir, '.node_modules'),
+ path.join(homedir, '.node_libraries')
+ ];
+};
- if (matches[1]) {
- spaces++;
- } else {
- tabs++;
- }
- } else {
- indent = 0;
- }
+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);
+ });
+};
- const diff = indent - prev;
- prev = indent;
+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);
+ });
+};
- if (diff) {
- // an indent or unindent has been detected
+var defaultRealpath = function realpath(x, cb) {
+ realpathFS(x, function (realpathErr, realPath) {
+ if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr);
+ else cb(null, realpathErr ? x : realPath);
+ });
+};
- isIndent = diff > 0;
+var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) {
+ if (opts && opts.preserveSymlinks === false) {
+ realpath(x, cb);
+ } else {
+ cb(null, x);
+ }
+};
- current = indents.get(isIndent ? diff : -diff);
+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);
+ }
+ }
+ });
+};
- if (current) {
- current[0]++;
- } else {
- current = [1, 0];
- indents.set(diff, current);
- }
- } else if (current) {
- // if the last action was an indent, increment the weight
- current[1] += Number(isIndent);
- }
- }
+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;
+};
- const amount = getMostUsed(indents);
+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);
+ });
+ }
- let type;
- let indent;
- if (!amount) {
- type = null;
- indent = '';
- } else if (spaces >= tabs) {
- type = 'space';
- indent = ' '.repeat(amount);
- } else {
- type = 'tab';
- indent = '\t'.repeat(amount);
- }
+ opts = normalizeOptions(x, opts);
- return {
- amount,
- type,
- indent
- };
-};
+ 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;
+ var extensions = opts.extensions || ['.js'];
+ var includeCoreModules = opts.includeCoreModules !== false;
+ var basedir = opts.basedir || path.dirname(caller());
+ var parent = opts.filename || basedir;
-/***/ }),
-/* 408 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ opts.paths = opts.paths || defaultPaths();
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "installInDir", function() { return installInDir; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runScriptInPackage", function() { return runScriptInPackage; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runScriptInPackageStreaming", function() { return runScriptInPackageStreaming; });
-/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(221);
-/*
- * 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.
- */
+ // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
+ var absoluteStart = path.resolve(basedir);
-const YARN_EXEC = process.env.npm_execpath || 'yarn';
-/**
- * Install all dependencies in the given directory
- */
+ maybeRealpath(
+ realpath,
+ absoluteStart,
+ opts,
+ function (err, realStart) {
+ if (err) cb(err);
+ else init(realStart);
+ }
+ );
-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).
+ 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);
+ }
+ });
+ }
- await Object(_child_process__WEBPACK_IMPORTED_MODULE_0__["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'
+ 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);
+ }
+ });
}
- });
-}
-/**
- * Run script in the given directory
- */
-async function runScriptInPackage(script, args, pkg) {
- const execOpts = {
- cwd: pkg.path
- };
- await Object(_child_process__WEBPACK_IMPORTED_MODULE_0__["spawn"])(YARN_EXEC, ['run', script, ...args], execOpts);
-}
-/**
- * Run script in the given directory
- */
+ function loadAsFile(x, thePackage, callback) {
+ var loadAsFilePackage = thePackage;
+ var cb = callback;
+ if (typeof loadAsFilePackage === 'function') {
+ cb = loadAsFilePackage;
+ loadAsFilePackage = undefined;
+ }
-function runScriptInPackageStreaming({
- script,
- args,
- pkg,
- debug
-}) {
- const execOpts = {
- cwd: pkg.path
- };
- return Object(_child_process__WEBPACK_IMPORTED_MODULE_0__["spawnStreaming"])(YARN_EXEC, ['run', script, ...args], execOpts, {
- prefix: pkg.name,
- debug
- });
-}
+ var exts = [''].concat(extensions);
+ load(exts, x, loadAsFilePackage);
-/***/ }),
-/* 409 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ function load(exts, x, loadPackage) {
+ if (exts.length === 0) return cb(null, undefined, loadPackage);
+ var file = x + exts[0];
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readYarnLock", function() { return readYarnLock; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resolveDepsForProject", function() { return resolveDepsForProject; });
-/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(410);
-/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(231);
-/*
- * 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.
- */
-// @ts-expect-error published types are worthless
+ 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
+ );
+ }
+ 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);
+ }
+ }
+ }
+ 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);
-async function readYarnLock(kbn) {
- try {
- const contents = await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_1__["readFile"])(kbn.getAbsolute('yarn.lock'), 'utf8');
- const yarnLock = Object(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__["parse"])(contents);
+ 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);
- if (yarnLock.type === 'success') {
- return yarnLock.object;
- }
+ readPackage(readFile, pkgfile, function (err, pkgParam) {
+ if (err) cb(err);
- throw new Error('unable to read yarn.lock file, please run `yarn kbn bootstrap`');
- } catch (error) {
- if (error.code !== 'ENOENT') {
- throw error;
+ var pkg = pkgParam;
+
+ if (pkg && opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, pkgfile);
+ }
+ cb(null, pkg, dir);
+ });
+ });
+ });
}
- }
- return {};
-}
-/**
- * Get a list of the absolute dependencies of this project, as resolved
- * in the yarn.lock file, does not include other projects in the workspace
- * or their dependencies
- */
+ function loadAsDirectory(x, loadAsDirectoryPackage, callback) {
+ var cb = callback;
+ var fpkg = loadAsDirectoryPackage;
+ if (typeof fpkg === 'function') {
+ cb = fpkg;
+ fpkg = opts.package;
+ }
-function resolveDepsForProject({
- project: rootProject,
- yarnLock,
- kbn,
- log,
- productionDepsOnly,
- includeDependentProject
-}) {
- /** map of [name@range, { name, version }] */
- const resolved = new Map();
- const seenProjects = new Set();
- const projectQueue = [rootProject];
- const depQueue = [];
+ 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);
- while (projectQueue.length) {
- const project = projectQueue.shift();
+ readPackage(readFile, pkgfile, function (err, pkgParam) {
+ if (err) return cb(err);
- if (seenProjects.has(project)) {
- continue;
- }
+ var pkg = pkgParam;
- seenProjects.add(project);
- const projectDeps = Object.entries(productionDepsOnly ? project.productionDependencies : project.allDependencies);
+ if (pkg && opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, pkgfile);
+ }
- for (const [name, versionRange] of projectDeps) {
- depQueue.push([name, versionRange]);
- }
+ 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);
- while (depQueue.length) {
- const [name, versionRange] = depQueue.shift();
- const req = `${name}@${versionRange}`;
+ 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;
+ }
- if (resolved.has(req)) {
- continue;
- }
+ loadAsFile(path.join(x, '/index'), pkg, cb);
+ });
+ });
+ });
+ }
- if (includeDependentProject && kbn.hasProject(name)) {
- projectQueue.push(kbn.getProject(name));
- }
+ function processDirs(cb, dirs) {
+ if (dirs.length === 0) return cb(null, undefined);
+ var dir = dirs[0];
- if (!kbn.hasProject(name)) {
- const pkg = yarnLock[req];
+ isDirectory(path.dirname(dir), isdir);
- if (!pkg) {
- log.warning('yarn.lock file is out of date, please run `yarn kbn bootstrap` to re-enable caching');
- return;
+ function isdir(err, isdir) {
+ if (err) return cb(err);
+ if (!isdir) return processDirs(cb, dirs.slice(1));
+ loadAsFile(dir, opts.package, onfile);
}
- resolved.set(req, {
- name,
- version: pkg.version
- });
- const allDepsEntries = [...Object.entries(pkg.dependencies || {}), ...Object.entries(pkg.optionalDependencies || {})];
+ function onfile(err, m, pkg) {
+ if (err) return cb(err);
+ if (m) return cb(null, m, pkg);
+ loadAsDirectory(dir, opts.package, ondir);
+ }
- for (const [childName, childVersionRange] of allDepsEntries) {
- depQueue.push([childName, childVersionRange]);
+ function ondir(err, n, pkg) {
+ if (err) return cb(err);
+ if (n) return cb(null, n, pkg);
+ processDirs(cb, dirs.slice(1));
}
- }
}
- }
-
- return resolved;
-}
-
-/***/ }),
-/* 410 */
-/***/ (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) {
+ function loadNodeModules(x, start, cb) {
+ var thunk = function () { return getPackageCandidates(x, start, opts); };
+ processDirs(
+ cb,
+ packageIterator ? packageIterator(x, start, thunk, opts) : thunk()
+ );
+ }
+};
-module.exports = __webpack_require__(4);
/***/ }),
-/* 1 */
+/* 500 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-exports.__esModule = true;
+var os = __webpack_require__(243);
-var _promise = __webpack_require__(173);
+// adapted from https://github.com/sindresorhus/os-homedir/blob/11e089f4754db38bb535e5a8416320c4446e8cfd/index.js
-var _promise2 = _interopRequireDefault(_promise);
+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;
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+ if (process.platform === 'win32') {
+ return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null;
+ }
-exports.default = function (fn) {
- return function () {
- var gen = fn.apply(this, arguments);
- return new _promise2.default(function (resolve, reject) {
- function step(key, arg) {
- try {
- var info = gen[key](arg);
- var value = info.value;
- } catch (error) {
- reject(error);
- return;
- }
+ if (process.platform === 'darwin') {
+ return home || (user ? '/Users/' + user : null);
+ }
- if (info.done) {
- resolve(value);
- } else {
- return _promise2.default.resolve(value).then(function (value) {
- step("next", value);
- }, function (err) {
- step("throw", err);
- });
- }
- }
+ if (process.platform === 'linux') {
+ return home || (process.getuid() === 0 ? '/root' : (user ? '/home/' + user : null)); // eslint-disable-line no-extra-parens
+ }
- return step("next");
- });
- };
+ return home || null;
};
-/***/ }),
-/* 2 */
-/***/ (function(module, exports) {
-
-module.exports = __webpack_require__(113);
/***/ }),
-/* 3 */
+/* 501 */
/***/ (function(module, exports) {
-module.exports = __webpack_require__(132);
+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();
+};
+
/***/ }),
-/* 4 */
+/* 502 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-class MessageError extends Error {
- constructor(msg, code) {
- super(msg);
- this.code = code;
- }
+var path = __webpack_require__(4);
+var parse = path.parse || __webpack_require__(503); // 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 = '\\\\';
+ }
-exports.MessageError = MessageError;
-class ProcessSpawnError extends MessageError {
- constructor(msg, code, process) {
- super(msg, code);
- this.process = process;
- }
+ 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);
+ }));
+ }, []);
+};
-exports.ProcessSpawnError = ProcessSpawnError;
-class SecurityError extends MessageError {}
+module.exports = function nodeModulesPaths(start, opts, request) {
+ var modules = opts && opts.moduleDirectory
+ ? [].concat(opts.moduleDirectory)
+ : ['node_modules'];
-exports.SecurityError = SecurityError;
-class ProcessTermError extends MessageError {}
+ if (opts && typeof opts.paths === 'function') {
+ return opts.paths(
+ request,
+ start,
+ function () { return getNodeModulesDirs(start, modules); },
+ opts
+ );
+ }
-exports.ProcessTermError = ProcessTermError;
-class ResponseError extends Error {
- constructor(msg, responseCode) {
- super(msg);
- this.responseCode = responseCode;
- }
+ var dirs = getNodeModulesDirs(start, modules);
+ return opts && opts.paths ? dirs.concat(opts.paths) : dirs;
+};
-}
-exports.ResponseError = ResponseError;
/***/ }),
-/* 5 */
+/* 503 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getFirstSuitableFolder = exports.readFirstAvailableStream = exports.makeTempDir = exports.hardlinksWork = exports.writeFilePreservingEol = exports.getFileSizeOnDisk = exports.walk = exports.symlink = exports.find = exports.readJsonAndFile = exports.readJson = exports.readFileAny = exports.hardlinkBulk = exports.copyBulk = exports.unlink = exports.glob = exports.link = exports.chmod = exports.lstat = exports.exists = exports.mkdirp = exports.stat = exports.access = exports.rename = exports.readdir = exports.realpath = exports.readlink = exports.writeFile = exports.open = exports.readFileBuffer = exports.lockQueue = exports.constants = undefined;
+var isWindows = process.platform === 'win32';
-var _asyncToGenerator2;
+// Regex to split a windows path into into [dir, root, basename, name, ext]
+var splitWindowsRe =
+ /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/;
-function _load_asyncToGenerator() {
- return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1));
+var win32 = {};
+
+function win32SplitPath(filename) {
+ return splitWindowsRe.exec(filename).slice(1);
}
-let buildActionsForCopy = (() => {
- var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) {
+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]
+ };
+};
- //
- let build = (() => {
- var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {
- const src = data.src,
- dest = data.dest,
- type = data.type;
- const onFresh = data.onFresh || noop;
- const onDone = data.onDone || noop;
- // TODO https://github.com/yarnpkg/yarn/issues/3751
- // related to bundled dependencies handling
- if (files.has(dest.toLowerCase())) {
- reporter.verbose(`The case-insensitive file ${dest} shouldn't be copied twice in one bulk copy`);
- } else {
- files.add(dest.toLowerCase());
- }
+// Split a filename into [dir, root, basename, name, ext], unix version
+// 'root' is just a slash, or nothing.
+var splitPathRe =
+ /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/;
+var posix = {};
- if (type === 'symlink') {
- yield mkdirp((_path || _load_path()).default.dirname(dest));
- onFresh();
- actions.symlink.push({
- dest,
- linkname: src
- });
- onDone();
- return;
- }
- if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) {
- // ignored file
- return;
- }
+function posixSplitPath(filename) {
+ return splitPathRe.exec(filename).slice(1);
+}
- const srcStat = yield lstat(src);
- let srcFiles;
- if (srcStat.isDirectory()) {
- srcFiles = yield readdir(src);
- }
+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],
+ };
+};
- 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();
+if (isWindows)
+ module.exports = win32.parse;
+else /* posix */
+ module.exports = posix.parse;
- // 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.
+module.exports.posix = posix.parse;
+module.exports.win32 = win32.parse;
- /* 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;
- }
+/***/ }),
+/* 504 */
+/***/ (function(module, exports) {
- 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;
- }
+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.
+ */
- 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 opts || {};
+};
- 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;
+/***/ }),
+/* 505 */
+/***/ (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";
- const file = _ref6;
- if (srcFiles.indexOf(file) < 0) {
- const loc = (_path || _load_path()).default.join(dest, file);
- possibleExtraneous.add(loc);
+var has = __webpack_require__(506);
- 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;
+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('.');
- if (_isArray5) {
- if (_i5 >= _iterator5.length) break;
- _ref7 = _iterator5[_i5++];
- } else {
- _i5 = _iterator5.next();
- if (_i5.done) break;
- _ref7 = _i5.value;
- }
+ 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 === '>=';
+}
- const file = _ref7;
+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;
+}
- possibleExtraneous.add((_path || _load_path()).default.join(loc, file));
- }
- }
- }
- }
- }
- }
+function versionIncluded(nodeVersion, specifierValue) {
+ if (typeof specifierValue === 'boolean') {
+ return specifierValue;
+ }
+
+ var current = typeof nodeVersion === 'undefined'
+ ? process.versions && process.versions.node
+ : nodeVersion;
+
+ 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;
+ }
+ }
+ return false;
+ }
+ return matchesRange(current, specifierValue);
+}
+
+var data = __webpack_require__(509);
+
+module.exports = function isCore(x, nodeVersion) {
+ return has(data, x) && versionIncluded(nodeVersion, data[x]);
+};
+
+
+/***/ }),
+/* 506 */
+/***/ (function(module, exports, __webpack_require__) {
- if (destStat && destStat.isSymbolicLink()) {
- yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest);
- destStat = null;
- }
+"use strict";
- 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();
- }
+var bind = __webpack_require__(507);
- // 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;
+module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);
- if (_isArray6) {
- if (_i6 >= _iterator6.length) break;
- _ref8 = _iterator6[_i6++];
- } else {
- _i6 = _iterator6.next();
- if (_i6.done) break;
- _ref8 = _i6.value;
- }
- const file = _ref8;
+/***/ }),
+/* 507 */
+/***/ (function(module, exports, __webpack_require__) {
- queue.push({
- dest: (_path || _load_path()).default.join(dest, file),
- onFresh,
- onDone: function (_onDone) {
- function onDone() {
- return _onDone.apply(this, arguments);
- }
+"use strict";
- 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}`);
- }
- });
+var implementation = __webpack_require__(508);
- return function build(_x5) {
- return _ref5.apply(this, arguments);
- };
- })();
+module.exports = Function.prototype.bind || implementation;
- 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;
+/***/ }),
+/* 508 */
+/***/ (function(module, exports, __webpack_require__) {
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref2 = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref2 = _i.value;
- }
+"use strict";
- const item = _ref2;
- const onDone = item.onDone;
- item.onDone = function () {
- events.onProgress(item.dest);
- if (onDone) {
- onDone();
- }
- };
- }
- events.onStart(queue.length);
+/* eslint no-invalid-this: 1 */
- // start building actions
- const actions = {
- file: [],
- symlink: [],
- link: []
- };
+var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';
+var slice = Array.prototype.slice;
+var toStr = Object.prototype.toString;
+var funcType = '[object Function]';
- // 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));
+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);
- // 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;
+ 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))
+ );
+ }
+ };
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref3 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref3 = _i2.value;
- }
+ var boundLength = Math.max(0, target.length - args.length);
+ var boundArgs = [];
+ for (var i = 0; i < boundLength; i++) {
+ boundArgs.push('$' + i);
+ }
- const file = _ref3;
+ bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);
- if (possibleExtraneous.has(file)) {
- reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file));
- possibleExtraneous.delete(file);
- }
+ if (target.prototype) {
+ var Empty = function Empty() {};
+ Empty.prototype = target.prototype;
+ bound.prototype = new Empty();
+ Empty.prototype = null;
}
- for (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
- var _ref4;
-
- if (_isArray3) {
- if (_i3 >= _iterator3.length) break;
- _ref4 = _iterator3[_i3++];
- } else {
- _i3 = _iterator3.next();
- if (_i3.done) break;
- _ref4 = _i3.value;
- }
+ return bound;
+};
- const loc = _ref4;
- if (files.has(loc.toLowerCase())) {
- possibleExtraneous.delete(loc);
- }
- }
+/***/ }),
+/* 509 */
+/***/ (function(module) {
- return actions;
- });
+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\"]}");
- return function buildActionsForCopy(_x, _x2, _x3, _x4) {
- return _ref.apply(this, arguments);
- };
-})();
+/***/ }),
+/* 510 */
+/***/ (function(module, exports, __webpack_require__) {
-let buildActionsForHardlink = (() => {
- var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) {
+var current = (process.versions && process.versions.node && process.versions.node.split('.')) || [];
- //
- let build = (() => {
- var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {
- const src = data.src,
- dest = data.dest;
+function specifierIncluded(specifier) {
+ var parts = specifier.split(' ');
+ var op = parts.length > 1 ? parts[0] : '=';
+ var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');
- 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;
+ 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
}
- files.add(dest.toLowerCase());
-
- if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) {
- // ignored file
- return;
+ if (op === '<') {
+ return cur < ver;
+ } else if (op === '>=') {
+ return cur >= ver;
}
+ return false;
+ }
+ return op === '>=';
+}
- const srcStat = yield lstat(src);
- let srcFiles;
+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;
+}
- if (srcStat.isDirectory()) {
- srcFiles = yield readdir(src);
+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);
+}
- const destExists = yield exists(dest);
- if (destExists) {
- const destStat = yield lstat(dest);
+var data = __webpack_require__(511);
- const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink();
- const bothFolders = srcStat.isDirectory() && destStat.isDirectory();
- const bothFiles = srcStat.isFile() && destStat.isFile();
+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;
- 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;
- }
+/***/ }),
+/* 511 */
+/***/ (function(module) {
- // correct hardlink
- if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) {
- onDone();
- reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino));
- return;
- }
+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 (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;
- }
- }
+/***/ }),
+/* 512 */
+/***/ (function(module, exports, __webpack_require__) {
- if (bothFolders) {
- // mark files that aren't in this folder as possibly extraneous
- const destFiles = yield readdir(dest);
- invariant(srcFiles, 'src files not initialised');
+var isCoreModule = __webpack_require__(505);
- for (var _iterator10 = destFiles, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
- var _ref14;
+module.exports = function isCore(x) {
+ return isCoreModule(x);
+};
- if (_isArray10) {
- if (_i10 >= _iterator10.length) break;
- _ref14 = _iterator10[_i10++];
- } else {
- _i10 = _iterator10.next();
- if (_i10.done) break;
- _ref14 = _i10.value;
- }
- const file = _ref14;
+/***/ }),
+/* 513 */
+/***/ (function(module, exports, __webpack_require__) {
- if (srcFiles.indexOf(file) < 0) {
- const loc = (_path || _load_path()).default.join(dest, file);
- possibleExtraneous.add(loc);
+var isCore = __webpack_require__(505);
+var fs = __webpack_require__(253);
+var path = __webpack_require__(4);
+var getHomedir = __webpack_require__(500);
+var caller = __webpack_require__(501);
+var nodeModulesPaths = __webpack_require__(502);
+var normalizeOptions = __webpack_require__(504);
- 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 realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync;
- if (_isArray11) {
- if (_i11 >= _iterator11.length) break;
- _ref15 = _iterator11[_i11++];
- } else {
- _i11 = _iterator11.next();
- if (_i11.done) break;
- _ref15 = _i11.value;
- }
+var homedir = getHomedir();
+var defaultPaths = function () {
+ return [
+ path.join(homedir, '.node_modules'),
+ path.join(homedir, '.node_libraries')
+ ];
+};
- const file = _ref15;
+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());
+};
- possibleExtraneous.add((_path || _load_path()).default.join(loc, file));
- }
- }
- }
- }
- }
+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();
+};
+
+var defaultRealpathSync = function realpathSync(x) {
+ try {
+ return realpathFS(x);
+ } catch (realpathErr) {
+ if (realpathErr.code !== 'ENOENT') {
+ throw realpathErr;
}
+ }
+ return x;
+};
- 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);
+var maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) {
+ if (opts && opts.preserveSymlinks === false) {
+ return realpathSync(x);
+ }
+ return x;
+};
- const destParts = dest.split((_path || _load_path()).default.sep);
- while (destParts.length) {
- files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase());
- destParts.pop();
- }
+var defaultReadPackageSync = function defaultReadPackageSync(readFileSync, pkgfile) {
+ var body = readFileSync(pkgfile);
+ try {
+ var pkg = JSON.parse(body);
+ return pkg;
+ } catch (jsonErr) {}
+};
- // 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;
+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 (_isArray12) {
- if (_i12 >= _iterator12.length) break;
- _ref16 = _iterator12[_i12++];
- } else {
- _i12 = _iterator12.next();
- if (_i12.done) break;
- _ref16 = _i12.value;
- }
+module.exports = function resolveSync(x, options) {
+ if (typeof x !== 'string') {
+ throw new TypeError('Path must be a string.');
+ }
+ var opts = normalizeOptions(x, options);
- const file = _ref16;
+ 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;
- 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);
- }
+ var extensions = opts.extensions || ['.js'];
+ var includeCoreModules = opts.includeCoreModules !== false;
+ var basedir = opts.basedir || path.dirname(caller());
+ var parent = opts.filename || basedir;
- onDone.toString = function () {
- return _onDone2.toString();
- };
+ opts.paths = opts.paths || defaultPaths();
- 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}`);
+ // 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
+ }
}
- });
- return function build(_x10) {
- return _ref13.apply(this, arguments);
- };
- })();
+ if (isFile(x)) {
+ return x;
+ }
- const artifactFiles = new Set(events.artifactFiles || []);
- const files = new Set();
+ for (var i = 0; i < extensions.length; i++) {
+ var file = x + extensions[i];
+ if (isFile(file)) {
+ return file;
+ }
+ }
+ }
- // initialise events
- for (var _iterator7 = queue, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
- var _ref10;
+ function loadpkg(dir) {
+ if (dir === '' || dir === '/') return;
+ if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) {
+ return;
+ }
+ if ((/[/\\]node_modules[/\\]*$/).test(dir)) return;
- if (_isArray7) {
- if (_i7 >= _iterator7.length) break;
- _ref10 = _iterator7[_i7++];
- } else {
- _i7 = _iterator7.next();
- if (_i7.done) break;
- _ref10 = _i7.value;
- }
+ var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json');
- const item = _ref10;
+ if (!isFile(pkgfile)) {
+ return loadpkg(path.dirname(dir));
+ }
- const onDone = item.onDone || noop;
- item.onDone = function () {
- events.onProgress(item.dest);
- onDone();
- };
- }
- events.onStart(queue.length);
+ var pkg = readPackageSync(readFileSync, pkgfile);
- // start building actions
- const actions = {
- file: [],
- symlink: [],
- link: []
- };
+ if (pkg && opts.packageFilter) {
+ // v2 will pass pkgfile
+ pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment
+ }
- // 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));
+ return { pkg: pkg, dir: dir };
}
- // 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;
+ 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 (_isArray8) {
- if (_i8 >= _iterator8.length) break;
- _ref11 = _iterator8[_i8++];
- } else {
- _i8 = _iterator8.next();
- if (_i8.done) break;
- _ref11 = _i8.value;
- }
+ if (pkg && opts.packageFilter) {
+ // v2 will pass pkgfile
+ pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment
+ }
- const file = _ref11;
+ 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) {}
+ }
+ }
- if (possibleExtraneous.has(file)) {
- reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file));
- possibleExtraneous.delete(file);
- }
+ return loadAsFileSync(path.join(x, '/index'));
}
- for (var _iterator9 = possibleExtraneous, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
- var _ref12;
+ function loadNodeModulesSync(x, start) {
+ var thunk = function () { return getPackageCandidates(x, start, opts); };
+ var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk();
- if (_isArray9) {
- if (_i9 >= _iterator9.length) break;
- _ref12 = _iterator9[_i9++];
- } else {
- _i9 = _iterator9.next();
- if (_i9.done) break;
- _ref12 = _i9.value;
- }
+ 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;
+ }
+ }
+ }
+};
- const loc = _ref12;
- if (files.has(loc.toLowerCase())) {
- possibleExtraneous.delete(loc);
- }
- }
+/***/ }),
+/* 514 */
+/***/ (function(module, exports) {
- return actions;
- });
+module.exports = extractDescription
- return function buildActionsForHardlink(_x6, _x7, _x8, _x9) {
- return _ref9.apply(this, arguments);
- };
-})();
+// 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()
+}
-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);
+/***/ }),
+/* 515 */
+/***/ (function(module) {
- const fileActions = actions.file;
+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\"}}");
- const currentlyWriting = new Map();
+/***/ }),
+/* 516 */
+/***/ (function(module, exports, __webpack_require__) {
- 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;
- }
+var util = __webpack_require__(234)
+var messages = __webpack_require__(517)
- 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;
- });
+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)
+ }
+}
- return function (_x14) {
- return _ref18.apply(this, arguments);
- };
- })(), CONCURRENT_QUEUE_ITEMS);
+function makeTypoWarning (providedName, probableName, field) {
+ if (field) {
+ providedName = field + "['" + providedName + "']"
+ probableName = field + "['" + probableName + "']"
+ }
+ return util.format(messages.typo, providedName, probableName)
+}
- // we need to copy symlinks last as they could reference files we were copying
- const symlinkActions = actions.symlink;
- yield (_promise || _load_promise()).queue(symlinkActions, function (data) {
- const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname);
- reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname));
- return symlink(linkname, data.dest);
- });
- });
- return function copyBulk(_x11, _x12, _x13) {
- return _ref17.apply(this, arguments);
- };
-})();
+/***/ }),
+/* 517 */
+/***/ (function(module) {
-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: []
- };
+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.\"}");
- const actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter);
- events.onStart(actions.file.length + actions.symlink.length + actions.link.length);
+/***/ }),
+/* 518 */
+/***/ (function(module, exports, __webpack_require__) {
- const fileActions = actions.link;
+"use strict";
- 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 path = __webpack_require__(4);
+const writeJsonFile = __webpack_require__(519);
+const sortKeys = __webpack_require__(523);
- return function (_x18) {
- return _ref20.apply(this, arguments);
- };
- })(), CONCURRENT_QUEUE_ITEMS);
+const dependencyKeys = new Set([
+ 'dependencies',
+ 'devDependencies',
+ 'optionalDependencies',
+ 'peerDependencies'
+]);
- // 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);
- });
- });
+function normalize(packageJson) {
+ const result = {};
- return function hardlinkBulk(_x15, _x16, _x17) {
- return _ref19.apply(this, arguments);
- };
-})();
+ for (const key of Object.keys(packageJson)) {
+ if (!dependencyKeys.has(key)) {
+ result[key] = packageJson[key];
+ } else if (Object.keys(packageJson[key]).length !== 0) {
+ result[key] = sortKeys(packageJson[key]);
+ }
+ }
-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;
+ return result;
+}
- if (_isArray13) {
- if (_i13 >= _iterator13.length) break;
- _ref22 = _iterator13[_i13++];
- } else {
- _i13 = _iterator13.next();
- if (_i13.done) break;
- _ref22 = _i13.value;
- }
+module.exports = async (filePath, data, options) => {
+ if (typeof filePath !== 'string') {
+ options = data;
+ data = filePath;
+ filePath = '.';
+ }
- const file = _ref22;
+ options = {
+ normalize: true,
+ ...options,
+ detectIndent: true
+ };
- if (yield exists(file)) {
- return readFile(file);
- }
- }
- return null;
- });
+ filePath = path.basename(filePath) === 'package.json' ? filePath : path.join(filePath, 'package.json');
- return function readFileAny(_x19) {
- return _ref21.apply(this, arguments);
- };
-})();
+ data = options.normalize ? normalize(data) : data;
-let readJson = exports.readJson = (() => {
- var _ref23 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) {
- return (yield readJsonAndFile(loc)).object;
- });
+ return writeJsonFile(filePath, data, options);
+};
- return function readJson(_x20) {
- return _ref23.apply(this, arguments);
- };
-})();
+module.exports.sync = (filePath, data, options) => {
+ if (typeof filePath !== 'string') {
+ options = data;
+ data = filePath;
+ filePath = '.';
+ }
-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;
- }
- });
+ options = {
+ normalize: true,
+ ...options,
+ detectIndent: true
+ };
- return function readJsonAndFile(_x21) {
- return _ref24.apply(this, arguments);
- };
-})();
+ filePath = path.basename(filePath) === 'package.json' ? filePath : path.join(filePath, 'package.json');
-let find = exports.find = (() => {
- var _ref25 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, dir) {
- const parts = dir.split((_path || _load_path()).default.sep);
+ data = options.normalize ? normalize(data) : data;
- while (parts.length) {
- const loc = parts.concat(filename).join((_path || _load_path()).default.sep);
+ writeJsonFile.sync(filePath, data, options);
+};
- if (yield exists(loc)) {
- return loc;
- } else {
- parts.pop();
- }
- }
- return false;
- });
+/***/ }),
+/* 519 */
+/***/ (function(module, exports, __webpack_require__) {
- return function find(_x22, _x23) {
- return _ref25.apply(this, arguments);
- };
-})();
+"use strict";
-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);
+const path = __webpack_require__(4);
+const fs = __webpack_require__(354);
+const writeFileAtomic = __webpack_require__(520);
+const sortKeys = __webpack_require__(523);
+const makeDir = __webpack_require__(525);
+const pify = __webpack_require__(526);
+const detectIndent = __webpack_require__(528);
- 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);
- }
- });
+const init = (fn, filePath, data, options) => {
+ if (!filePath) {
+ throw new TypeError('Expected a filepath');
+ }
- return function symlink(_x24, _x25) {
- return _ref26.apply(this, arguments);
- };
-})();
+ if (data === undefined) {
+ throw new TypeError('Expected data to stringify');
+ }
-let walk = exports.walk = (() => {
- var _ref27 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, relativeDir, ignoreBasenames = new Set()) {
- let files = [];
+ options = Object.assign({
+ indent: '\t',
+ sortKeys: false
+ }, options);
- let filenames = yield readdir(dir);
- if (ignoreBasenames.size) {
- filenames = filenames.filter(function (name) {
- return !ignoreBasenames.has(name);
- });
- }
+ if (options.sortKeys) {
+ data = sortKeys(data, {
+ deep: true,
+ compare: typeof options.sortKeys === 'function' ? options.sortKeys : undefined
+ });
+ }
- for (var _iterator14 = filenames, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) {
- var _ref28;
+ return fn(filePath, data, options);
+};
- if (_isArray14) {
- if (_i14 >= _iterator14.length) break;
- _ref28 = _iterator14[_i14++];
- } else {
- _i14 = _iterator14.next();
- if (_i14.done) break;
- _ref28 = _i14.value;
- }
+const readFile = filePath => pify(fs.readFile)(filePath, 'utf8').catch(() => {});
- const name = _ref28;
+const main = (filePath, data, options) => {
+ return (options.detectIndent ? readFile(filePath) : Promise.resolve())
+ .then(string => {
+ const indent = string ? detectIndent(string).indent : options.indent;
+ const json = JSON.stringify(data, options.replacer, indent);
- 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);
+ return pify(writeFileAtomic)(filePath, `${json}\n`, {mode: options.mode});
+ });
+};
- files.push({
- relative,
- basename: name,
- absolute: loc,
- mtime: +stat.mtime
- });
+const mainSync = (filePath, data, options) => {
+ let {indent} = options;
- if (stat.isDirectory()) {
- files = files.concat((yield walk(loc, relative, ignoreBasenames)));
- }
- }
+ if (options.detectIndent) {
+ try {
+ const file = fs.readFileSync(filePath, 'utf8');
+ indent = detectIndent(file).indent;
+ } catch (error) {
+ if (error.code !== 'ENOENT') {
+ throw error;
+ }
+ }
+ }
- return files;
- });
+ const json = JSON.stringify(data, options.replacer, indent);
- return function walk(_x26, _x27) {
- return _ref27.apply(this, arguments);
- };
-})();
+ return writeFileAtomic.sync(filePath, `${json}\n`, {mode: options.mode});
+};
-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;
+const writeJsonFile = (filePath, data, options) => {
+ return makeDir(path.dirname(filePath), {fs})
+ .then(() => init(main, filePath, data, options));
+};
+module.exports = writeJsonFile;
+// TODO: Remove this for the next major release
+module.exports.default = writeJsonFile;
+module.exports.sync = (filePath, data, options) => {
+ makeDir.sync(path.dirname(filePath), {fs});
+ init(mainSync, filePath, data, options);
+};
- return Math.ceil(size / blockSize) * blockSize;
- });
- return function getFileSizeOnDisk(_x28) {
- return _ref29.apply(this, arguments);
- };
-})();
+/***/ }),
+/* 520 */
+/***/ (function(module, exports, __webpack_require__) {
-let getEolFromFile = (() => {
- var _ref30 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path) {
- if (!(yield exists(path))) {
- return undefined;
- }
+"use strict";
- const buffer = yield readFileBuffer(path);
+module.exports = writeFile
+module.exports.sync = writeFileSync
+module.exports._getTmpname = getTmpname // for testing
+module.exports._cleanupOnExit = cleanupOnExit
- for (let i = 0; i < buffer.length; ++i) {
- if (buffer[i] === cr) {
- return '\r\n';
- }
- if (buffer[i] === lf) {
- return '\n';
- }
- }
- return undefined;
- });
+var fs = __webpack_require__(354)
+var MurmurHash3 = __webpack_require__(521)
+var onExit = __webpack_require__(282)
+var path = __webpack_require__(4)
+var activeFiles = {}
- return function getEolFromFile(_x29) {
- return _ref30.apply(this, arguments);
- };
-})();
+// if we run inside of a worker_thread, `process.pid` is not unique
+/* istanbul ignore next */
+var threadId = (function getId () {
+ try {
+ var workerThreads = __webpack_require__(522)
-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 we are in main thread, this is set to `0`
+ return workerThreads.threadId
+ } catch (e) {
+ // worker_threads are not available, fallback to 0
+ return 0
+ }
+})()
- return function writeFilePreservingEol(_x30, _x31) {
- return _ref31.apply(this, arguments);
- };
-})();
+var invocations = 0
+function getTmpname (filename) {
+ return filename + '.' +
+ MurmurHash3(__filename)
+ .hash(String(process.pid))
+ .hash(String(threadId))
+ .hash(String(++invocations))
+ .result()
+}
-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');
+function cleanupOnExit (tmpfile) {
+ return function () {
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;
- });
+ fs.unlinkSync(typeof tmpfile === 'function' ? tmpfile() : tmpfile)
+ } catch (_) {}
+ }
+}
- return function hardlinksWork(_x32) {
- return _ref32.apply(this, arguments);
- };
-})();
+function writeFile (filename, data, options, callback) {
+ if (options) {
+ if (options instanceof Function) {
+ callback = options
+ options = {}
+ } else if (typeof options === 'string') {
+ options = { encoding: options }
+ }
+ } else {
+ options = {}
+ }
-// not a strict polyfill for Node's fs.mkdtemp
+ var Promise = options.Promise || global.Promise
+ var truename
+ var fd
+ var tmpfile
+ /* istanbul ignore next -- The closure only gets called when onExit triggers */
+ var removeOnExitHandler = onExit(cleanupOnExit(() => tmpfile))
+ var absoluteName = path.resolve(filename)
+ new Promise(function serializeSameFile (resolve) {
+ // make a queue if it doesn't already exist
+ if (!activeFiles[absoluteName]) activeFiles[absoluteName] = []
-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;
- });
+ activeFiles[absoluteName].push(resolve) // add this job to the queue
+ if (activeFiles[absoluteName].length === 1) resolve() // kick off the first one
+ }).then(function getRealPath () {
+ return new Promise(function (resolve) {
+ fs.realpath(filename, function (_, realname) {
+ truename = realname || filename
+ tmpfile = getTmpname(truename)
+ resolve()
+ })
+ })
+ }).then(function stat () {
+ return new Promise(function stat (resolve) {
+ if (options.mode && options.chown) resolve()
+ else {
+ // Either mode or chown is not explicitly set
+ // Default behavior is to copy it from original file
+ fs.stat(truename, function (err, stats) {
+ if (err || !stats) resolve()
+ else {
+ options = Object.assign({}, options)
- return function makeTempDir(_x33) {
- return _ref33.apply(this, arguments);
- };
-})();
+ if (options.mode == null) {
+ options.mode = stats.mode
+ }
+ if (options.chown == null && process.getuid) {
+ options.chown = { uid: stats.uid, gid: stats.gid }
+ }
+ resolve()
+ }
+ })
+ }
+ })
+ }).then(function thenWriteFile () {
+ return new Promise(function (resolve, reject) {
+ fs.open(tmpfile, 'w', options.mode, function (err, _fd) {
+ fd = _fd
+ if (err) reject(err)
+ else resolve()
+ })
+ })
+ }).then(function write () {
+ return new Promise(function (resolve, reject) {
+ if (Buffer.isBuffer(data)) {
+ fs.write(fd, data, 0, data.length, 0, function (err) {
+ if (err) reject(err)
+ else resolve()
+ })
+ } else if (data != null) {
+ fs.write(fd, String(data), 0, String(options.encoding || 'utf8'), function (err) {
+ if (err) reject(err)
+ else resolve()
+ })
+ } else resolve()
+ })
+ }).then(function syncAndClose () {
+ return new Promise(function (resolve, reject) {
+ if (options.fsync !== false) {
+ fs.fsync(fd, function (err) {
+ if (err) fs.close(fd, () => reject(err))
+ else fs.close(fd, resolve)
+ })
+ } else {
+ fs.close(fd, resolve)
+ }
+ })
+ }).then(function chown () {
+ fd = null
+ if (options.chown) {
+ return new Promise(function (resolve, reject) {
+ fs.chown(tmpfile, options.chown.uid, options.chown.gid, function (err) {
+ if (err) reject(err)
+ else resolve()
+ })
+ })
+ }
+ }).then(function chmod () {
+ if (options.mode) {
+ return new Promise(function (resolve, reject) {
+ fs.chmod(tmpfile, options.mode, function (err) {
+ if (err) reject(err)
+ else resolve()
+ })
+ })
+ }
+ }).then(function rename () {
+ return new Promise(function (resolve, reject) {
+ fs.rename(tmpfile, truename, function (err) {
+ if (err) reject(err)
+ else resolve()
+ })
+ })
+ }).then(function success () {
+ removeOnExitHandler()
+ callback()
+ }, function fail (err) {
+ return new Promise(resolve => {
+ return fd ? fs.close(fd, resolve) : resolve()
+ }).then(() => {
+ removeOnExitHandler()
+ fs.unlink(tmpfile, function () {
+ callback(err)
+ })
+ })
+ }).then(function checkQueue () {
+ activeFiles[absoluteName].shift() // remove the element added by serializeSameFile
+ if (activeFiles[absoluteName].length > 0) {
+ activeFiles[absoluteName][0]() // start next job if one is pending
+ } else delete activeFiles[absoluteName]
+ })
+}
-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;
+function writeFileSync (filename, data, options) {
+ if (typeof options === 'string') options = { encoding: options }
+ else if (!options) options = {}
+ try {
+ filename = fs.realpathSync(filename)
+ } catch (ex) {
+ // it's ok, it'll happen on a not yet existing file
+ }
+ var tmpfile = getTmpname(filename)
- if (_isArray15) {
- if (_i15 >= _iterator15.length) break;
- _ref35 = _iterator15[_i15++];
- } else {
- _i15 = _iterator15.next();
- if (_i15.done) break;
- _ref35 = _i15.value;
+ if (!options.mode || !options.chown) {
+ // Either mode or chown is not explicitly set
+ // Default behavior is to copy it from original file
+ try {
+ var stats = fs.statSync(filename)
+ options = Object.assign({}, options)
+ if (!options.mode) {
+ options.mode = stats.mode
+ }
+ if (!options.chown && process.getuid) {
+ options.chown = { uid: stats.uid, gid: stats.gid }
}
+ } catch (ex) {
+ // ignore stat errors
+ }
+ }
- const path = _ref35;
+ var fd
+ var cleanup = cleanupOnExit(tmpfile)
+ var removeOnExitHandler = onExit(cleanup)
+ try {
+ fd = fs.openSync(tmpfile, 'w', options.mode)
+ if (Buffer.isBuffer(data)) {
+ fs.writeSync(fd, data, 0, data.length, 0)
+ } else if (data != null) {
+ fs.writeSync(fd, String(data), 0, String(options.encoding || 'utf8'))
+ }
+ if (options.fsync !== false) {
+ fs.fsyncSync(fd)
+ }
+ fs.closeSync(fd)
+ if (options.chown) fs.chownSync(tmpfile, options.chown.uid, options.chown.gid)
+ if (options.mode) fs.chmodSync(tmpfile, options.mode)
+ fs.renameSync(tmpfile, filename)
+ removeOnExitHandler()
+ } catch (err) {
+ if (fd) {
try {
- const fd = yield open(path, 'r');
- return (_fs || _load_fs()).default.createReadStream(path, { fd });
- } catch (err) {
- // Try the next one
+ fs.closeSync(fd)
+ } catch (ex) {
+ // ignore close errors at this stage, error may have closed fd already.
}
}
- return null;
- });
+ removeOnExitHandler()
+ cleanup()
+ throw err
+ }
+}
- return function readFirstAvailableStream(_x34) {
- return _ref34.apply(this, arguments);
- };
-})();
-let getFirstSuitableFolder = exports.getFirstSuitableFolder = (() => {
- var _ref36 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths, mode = constants.W_OK | constants.X_OK) {
- const result = {
- skipped: [],
- folder: null
- };
+/***/ }),
+/* 521 */
+/***/ (function(module, exports, __webpack_require__) {
- for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) {
- var _ref37;
+/**
+ * @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;
- if (_isArray16) {
- if (_i16 >= _iterator16.length) break;
- _ref37 = _iterator16[_i16++];
- } else {
- _i16 = _iterator16.next();
- if (_i16.done) break;
- _ref37 = _i16.value;
- }
+ // 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);
+ }
- const folder = _ref37;
+ if (m !== this) {
+ return m;
+ }
+ };
- try {
- yield mkdirp(folder);
- yield access(folder, mode);
+ // 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;
- result.folder = folder;
+ len = key.length;
+ this.len += len;
- return result;
- } catch (error) {
- result.skipped.push({
- error,
- folder
- });
- }
- }
- return 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;
+ }
- return function getFirstSuitableFolder(_x35) {
- return _ref36.apply(this, arguments);
- };
-})();
+ 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;
-exports.copy = copy;
-exports.readFile = readFile;
-exports.readFileRaw = readFileRaw;
-exports.normalizeOS = normalizeOS;
+ h1 ^= k1;
+ h1 = (h1 << 13) | (h1 >>> 19);
+ h1 = (h1 * 5 + 0xe6546b64) & 0xffffffff;
-var _fs;
+ if (i >= len) {
+ break;
+ }
-function _load_fs() {
- return _fs = _interopRequireDefault(__webpack_require__(3));
-}
+ 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);
+ }
-var _glob;
+ 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);
+ }
-function _load_glob() {
- return _glob = _interopRequireDefault(__webpack_require__(75));
-}
+ this.h1 = h1;
+ }
-var _os;
+ this.k1 = k1;
+ return this;
+ };
-function _load_os() {
- return _os = _interopRequireDefault(__webpack_require__(36));
-}
+ // 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;
-var _path;
+ if (k1 > 0) {
+ k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;
+ k1 = (k1 << 15) | (k1 >>> 17);
+ k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;
+ h1 ^= k1;
+ }
-function _load_path() {
- return _path = _interopRequireDefault(__webpack_require__(0));
-}
+ h1 ^= this.len;
-var _blockingQueue;
+ h1 ^= h1 >>> 16;
+ h1 = (h1 * 0xca6b + (h1 & 0xffff) * 0x85eb0000) & 0xffffffff;
+ h1 ^= h1 >>> 13;
+ h1 = (h1 * 0xae35 + (h1 & 0xffff) * 0xc2b20000) & 0xffffffff;
+ h1 ^= h1 >>> 16;
-function _load_blockingQueue() {
- return _blockingQueue = _interopRequireDefault(__webpack_require__(84));
-}
+ 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;
+ };
+
+ // 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 _promise;
+ if (true) {
+ module.exports = MurmurHash3;
+ } else {}
+}());
-function _load_promise() {
- return _promise = _interopRequireWildcard(__webpack_require__(40));
-}
-var _promise2;
+/***/ }),
+/* 522 */
+/***/ (function(module, exports) {
-function _load_promise2() {
- return _promise2 = __webpack_require__(40);
-}
+module.exports = require(undefined);
-var _map;
+/***/ }),
+/* 523 */
+/***/ (function(module, exports, __webpack_require__) {
-function _load_map() {
- return _map = _interopRequireDefault(__webpack_require__(20));
-}
+"use strict";
-var _fsNormalized;
+const isPlainObj = __webpack_require__(524);
-function _load_fsNormalized() {
- return _fsNormalized = __webpack_require__(164);
-}
+module.exports = (obj, opts) => {
+ if (!isPlainObj(obj)) {
+ throw new TypeError('Expected a plain object');
+ }
-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; } }
+ opts = opts || {};
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+ // DEPRECATED
+ if (typeof opts === 'function') {
+ throw new TypeError('Specify the compare function as an option instead');
+ }
-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 deep = opts.deep;
+ const seenInput = [];
+ const seenOutput = [];
-const lockQueue = exports.lockQueue = new (_blockingQueue || _load_blockingQueue()).default('fs lock');
+ const sortKeys = x => {
+ const seenIndex = seenInput.indexOf(x);
-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 (seenIndex !== -1) {
+ return seenOutput[seenIndex];
+ }
-// 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 ret = {};
+ const keys = Object.keys(x).sort(opts.compare);
-const CONCURRENT_QUEUE_ITEMS = (_fs || _load_fs()).default.copyFile ? 128 : 4;
+ seenInput.push(x);
+ seenOutput.push(ret);
-const fsSymlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.symlink);
-const invariant = __webpack_require__(7);
-const stripBOM = __webpack_require__(122);
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ const val = x[key];
-const noop = () => {};
+ if (deep && Array.isArray(val)) {
+ const retArr = [];
-function copy(src, dest, reporter) {
- return copyBulk([{ src, dest }], reporter);
-}
+ for (let j = 0; j < val.length; j++) {
+ retArr[j] = isPlainObj(val[j]) ? sortKeys(val[j]) : val[j];
+ }
-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);
- }
- });
- });
-}
+ ret[key] = retArr;
+ continue;
+ }
-function readFile(loc) {
- return _readFile(loc, 'utf8').then(normalizeOS);
-}
+ ret[key] = deep && isPlainObj(val) ? sortKeys(val) : val;
+ }
-function readFileRaw(loc) {
- return _readFile(loc, 'binary');
-}
+ return ret;
+ };
-function normalizeOS(body) {
- return body.replace(/\r\n/g, '\n');
-}
+ return sortKeys(obj);
+};
-const cr = '\r'.charCodeAt(0);
-const lf = '\n'.charCodeAt(0);
/***/ }),
-/* 6 */
+/* 524 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+var toString = Object.prototype.toString;
-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;
-
-var _require = __webpack_require__(171);
+module.exports = function (x) {
+ var prototype;
+ return toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));
+};
-const getCacheDir = _require.getCacheDir,
- getConfigDir = _require.getConfigDir,
- getDataDir = _require.getDataDir;
-const isWebpackBundle = __webpack_require__(227);
+/***/ }),
+/* 525 */
+/***/ (function(module, exports, __webpack_require__) {
-const DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies'];
-const RESOLUTIONS = exports.RESOLUTIONS = 'resolutions';
-const MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS, ...DEPENDENCY_TYPES];
+"use strict";
-const SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0';
+const fs = __webpack_require__(253);
+const path = __webpack_require__(4);
+const pify = __webpack_require__(526);
+const semver = __webpack_require__(527);
-const YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com';
+const defaults = {
+ mode: 0o777 & (~process.umask()),
+ fs
+};
-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 useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0');
-const SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version';
+// 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, ''));
-// cache version, bump whenever we make backwards incompatible changes
-const CACHE_VERSION = exports.CACHE_VERSION = 2;
+ if (pathHasInvalidWinCharacters) {
+ const error = new Error(`Path contains invalid characters: ${pth}`);
+ error.code = 'EINVAL';
+ throw error;
+ }
+ }
+};
-// lockfile version, bump whenever we make backwards incompatible changes
-const LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 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;
+};
-// max amount of network requests to perform concurrently
-const NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8;
+const makeDir = (input, options) => Promise.resolve().then(() => {
+ checkPath(input);
+ options = Object.assign({}, defaults, options);
-// HTTP timeout used when downloading packages
-const NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds
+ // TODO: Use util.promisify when targeting Node.js 8
+ const mkdir = pify(options.fs.mkdir);
+ const stat = pify(options.fs.stat);
-// max amount of child processes to execute concurrently
-const CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5;
+ if (useNativeRecursiveOption && options.fs.mkdir === fs.mkdir) {
+ const pth = path.resolve(input);
-const REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid'];
+ return mkdir(pth, {
+ mode: options.mode,
+ recursive: true
+ }).then(() => pth);
+ }
-function getPreferredCacheDirectories() {
- const preferredCacheDirectories = [getCacheDir()];
+ const make = pth => {
+ return mkdir(pth, options.mode)
+ .then(() => pth)
+ .catch(error => {
+ if (error.code === 'EPERM') {
+ throw error;
+ }
- if (process.getuid) {
- // $FlowFixMe: process.getuid exists, dammit
- preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`));
- }
+ if (error.code === 'ENOENT') {
+ if (path.dirname(pth) === pth) {
+ throw permissionError(pth);
+ }
- preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`));
+ if (error.message.includes('null bytes')) {
+ throw error;
+ }
- return preferredCacheDirectories;
-}
+ return make(path.dirname(pth)).then(() => make(pth));
+ }
-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 stat(pth)
+ .then(stats => stats.isDirectory() ? pth : Promise.reject())
+ .catch(() => {
+ throw error;
+ });
+ });
+ };
-const NODE_BIN_PATH = exports.NODE_BIN_PATH = process.execPath;
-const YARN_BIN_PATH = exports.YARN_BIN_PATH = getYarnBinPath();
+ return make(path.resolve(input));
+});
-// Webpack needs to be configured with node.__dirname/__filename = false
-function getYarnBinPath() {
- if (isWebpackBundle) {
- return __filename;
- } else {
- return path.join(__dirname, '..', 'bin', 'yarn.js');
- }
-}
+module.exports = makeDir;
+module.exports.default = makeDir;
-const NODE_MODULES_FOLDER = exports.NODE_MODULES_FOLDER = 'node_modules';
-const NODE_PACKAGE_JSON = exports.NODE_PACKAGE_JSON = 'package.json';
+module.exports.sync = (input, options) => {
+ checkPath(input);
+ options = Object.assign({}, defaults, options);
-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 (useNativeRecursiveOption && options.fs.mkdirSync === fs.mkdirSync) {
+ const pth = path.resolve(input);
-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';
+ fs.mkdirSync(pth, {
+ mode: options.mode,
+ recursive: true
+ });
-const NPM_LOCK_FILENAME = exports.NPM_LOCK_FILENAME = 'package-lock.json';
-const NPM_SHRINKWRAP_FILENAME = exports.NPM_SHRINKWRAP_FILENAME = 'npm-shrinkwrap.json';
+ return pth;
+ }
-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 make = pth => {
+ try {
+ options.fs.mkdirSync(pth, options.mode);
+ } catch (error) {
+ if (error.code === 'EPERM') {
+ throw error;
+ }
-const ENV_PATH_KEY = exports.ENV_PATH_KEY = getPathKey(process.platform, process.env);
+ if (error.code === 'ENOENT') {
+ if (path.dirname(pth) === pth) {
+ throw permissionError(pth);
+ }
-function getPathKey(platform, env) {
- let pathKey = 'PATH';
+ if (error.message.includes('null bytes')) {
+ throw error;
+ }
- // windows calls its path "Path" usually, but this is not guaranteed.
- if (platform === 'win32') {
- pathKey = 'Path';
+ make(path.dirname(pth));
+ return make(pth);
+ }
- for (const key in env) {
- if (key.toLowerCase() === 'path') {
- pathKey = key;
- }
- }
- }
+ try {
+ if (!options.fs.statSync(pth).isDirectory()) {
+ throw new Error('The path is not a directory');
+ }
+ } catch (_) {
+ throw error;
+ }
+ }
- return pathKey;
-}
+ return pth;
+ };
-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'
+ return make(path.resolve(input));
};
+
/***/ }),
-/* 7 */
+/* 526 */
/***/ (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 = "none";
-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');
- }
- }
+const processFn = (fn, options) => function (...args) {
+ const P = options.promiseModule;
- 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';
- }
+ 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);
+ }
- error.framesToPop = 1; // we don't care about invariant's own frame
- throw error;
- }
+ fn.apply(this, args);
+ });
};
-module.exports = invariant;
+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}\``);
+ }
-/***/ }),
-/* 8 */,
-/* 9 */
-/***/ (function(module, exports) {
+ 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);
+ };
-module.exports = __webpack_require__(133);
+ 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));
+ }
-/***/ }),
-/* 10 */,
-/* 11 */
-/***/ (function(module, exports) {
+ 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;
+ }
-// 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
+ return ret;
+};
/***/ }),
-/* 12 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
+/* 527 */
+/***/ (function(module, exports) {
-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);
+exports = module.exports = SemVer
-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;
- }
+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 a.length - b.length;
+} else {
+ debug = function () {}
}
-function entries(obj) {
- const entries = [];
- if (obj) {
- for (const key in obj) {
- entries.push([key, obj[key]]);
- }
- }
- return entries;
-}
+// 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 removePrefix(pattern, prefix) {
- if (pattern.startsWith(prefix)) {
- pattern = pattern.slice(prefix.length);
- }
+var MAX_LENGTH = 256
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */ 9007199254740991
- return pattern;
-}
+// Max safe segment length for coercion.
+var MAX_SAFE_COMPONENT_LENGTH = 16
-function removeSuffix(pattern, suffix) {
- if (pattern.endsWith(suffix)) {
- return pattern.slice(0, -suffix.length);
- }
+// The actual regexps go on exports.re
+var re = exports.re = []
+var src = exports.src = []
+var R = 0
- return pattern;
-}
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
-function addSuffix(pattern, suffix) {
- if (!pattern.endsWith(suffix)) {
- return pattern + suffix;
- }
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
- return pattern;
-}
+var NUMERICIDENTIFIER = R++
+src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'
+var NUMERICIDENTIFIERLOOSE = R++
+src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'
-function hyphenate(str) {
- return str.replace(/[A-Z]/g, match => {
- return '-' + match.charAt(0).toLowerCase();
- });
-}
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
-function camelCase(str) {
- if (/[A-Z]/.test(str)) {
- return null;
- } else {
- return _camelCase(str);
- }
-}
+var NONNUMERICIDENTIFIER = R++
+src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
-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;
-}
+// ## Main Version
+// Three dot-separated numeric identifiers.
-function sleep(ms) {
- return new Promise(resolve => {
- setTimeout(resolve, ms);
- });
-}
+var MAINVERSION = R++
+src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIER] + ')'
-/***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
+var MAINVERSIONLOOSE = R++
+src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIERLOOSE] + ')'
-var store = __webpack_require__(107)('wks');
-var uid = __webpack_require__(111);
-var Symbol = __webpack_require__(11).Symbol;
-var USE_SYMBOL = typeof Symbol == 'function';
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
-var $exports = module.exports = function (name) {
- return store[name] || (store[name] =
- USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
-};
+var PRERELEASEIDENTIFIER = R++
+src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
+ '|' + src[NONNUMERICIDENTIFIER] + ')'
-$exports.store = store;
+var PRERELEASEIDENTIFIERLOOSE = R++
+src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
+ '|' + src[NONNUMERICIDENTIFIER] + ')'
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
-/***/ }),
-/* 14 */
-/***/ (function(module, exports, __webpack_require__) {
+var PRERELEASE = R++
+src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
+ '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'
-"use strict";
+var PRERELEASELOOSE = R++
+src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
+ '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.stringify = exports.parse = undefined;
+var BUILDIDENTIFIER = R++
+src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
-var _asyncToGenerator2;
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
-function _load_asyncToGenerator() {
- return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1));
-}
+var BUILD = R++
+src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
+ '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'
-var _parse;
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
-function _load_parse() {
- return _parse = __webpack_require__(81);
-}
+// 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.
-Object.defineProperty(exports, 'parse', {
- enumerable: true,
- get: function get() {
- return _interopRequireDefault(_parse || _load_parse()).default;
- }
-});
+var FULL = R++
+var FULLPLAIN = 'v?' + src[MAINVERSION] +
+ src[PRERELEASE] + '?' +
+ src[BUILD] + '?'
-var _stringify;
+src[FULL] = '^' + FULLPLAIN + '$'
-function _load_stringify() {
- return _stringify = __webpack_require__(150);
-}
+// 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] + '?'
-Object.defineProperty(exports, 'stringify', {
- enumerable: true,
- get: function get() {
- return _interopRequireDefault(_stringify || _load_stringify()).default;
- }
-});
-exports.implodeEntry = implodeEntry;
-exports.explodeEntry = explodeEntry;
+var LOOSE = R++
+src[LOOSE] = '^' + LOOSEPLAIN + '$'
-var _misc;
+var GTLT = R++
+src[GTLT] = '((?:<|>)?=?)'
-function _load_misc() {
- return _misc = __webpack_require__(12);
-}
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+var XRANGEIDENTIFIERLOOSE = R++
+src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
+var XRANGEIDENTIFIER = R++
+src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'
-var _normalizePattern;
+var XRANGEPLAIN = R++
+src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:' + src[PRERELEASE] + ')?' +
+ src[BUILD] + '?' +
+ ')?)?'
-function _load_normalizePattern() {
- return _normalizePattern = __webpack_require__(29);
-}
+var XRANGEPLAINLOOSE = R++
+src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:' + src[PRERELEASELOOSE] + ')?' +
+ src[BUILD] + '?' +
+ ')?)?'
-var _parse2;
+var XRANGE = R++
+src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'
+var XRANGELOOSE = R++
+src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'
-function _load_parse2() {
- return _parse2 = _interopRequireDefault(__webpack_require__(81));
-}
+// 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])'
-var _constants;
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+var LONETILDE = R++
+src[LONETILDE] = '(?:~>?)'
-function _load_constants() {
- return _constants = __webpack_require__(6);
-}
+var TILDETRIM = R++
+src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'
+re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')
+var tildeTrimReplace = '$1~'
-var _fs;
+var TILDE = R++
+src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'
+var TILDELOOSE = R++
+src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'
-function _load_fs() {
- return _fs = _interopRequireWildcard(__webpack_require__(5));
-}
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+var LONECARET = R++
+src[LONECARET] = '(?:\\^)'
-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; } }
+var CARETTRIM = R++
+src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'
+re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')
+var caretTrimReplace = '$1^'
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+var CARET = R++
+src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'
+var CARETLOOSE = R++
+src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'
-const invariant = __webpack_require__(7);
+// 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 + ')$|^$'
-const path = __webpack_require__(0);
-const ssri = __webpack_require__(55);
+// 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 getName(pattern) {
- return (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern).name;
-}
+// this one has to use the /g flag
+re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')
+var comparatorTrimReplace = '$1$2$3'
-function blankObjectUndefined(obj) {
- return obj && Object.keys(obj).length ? obj : undefined;
-}
+// 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*$'
-function keyForRemote(remote) {
- return remote.resolved || (remote.reference && remote.hash ? `${remote.reference}#${remote.hash}` : null);
-}
+var HYPHENRANGELOOSE = R++
+src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[XRANGEPLAINLOOSE] + ')' +
+ '\\s*$'
-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(' ');
-}
+// Star ranges basically just allow anything at all.
+var STAR = R++
+src[STAR] = '(<|>)?=?\\s*\\*'
-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;
+// 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])
}
- 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);
+exports.parse = parse
+function parse (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
}
- return obj;
-}
-class Lockfile {
- constructor({ cache, source, parseResultType } = {}) {
- this.source = source || '';
- this.cache = cache;
- this.parseResultType = parseResultType;
+ if (version instanceof SemVer) {
+ return version
}
- // 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;
+ if (typeof version !== 'string') {
+ return null
}
- 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);
+ if (version.length > MAX_LENGTH) {
+ return null
+ }
- let lockfile;
- let rawLockfile = '';
- let parseResult;
+ var r = options.loose ? re[LOOSE] : re[FULL]
+ if (!r.test(version)) {
+ return null
+ }
- if (yield (_fs || _load_fs()).exists(lockfileLoc)) {
- rawLockfile = yield (_fs || _load_fs()).readFile(lockfileLoc);
- parseResult = (0, (_parse2 || _load_parse2()).default)(rawLockfile, lockfileLoc);
+ try {
+ return new SemVer(version, options)
+ } catch (er) {
+ return null
+ }
+}
- if (reporter) {
- if (parseResult.type === 'merge') {
- reporter.info(reporter.lang('lockfileMerged'));
- } else if (parseResult.type === 'conflict') {
- reporter.warn(reporter.lang('lockfileConflict'));
- }
- }
+exports.valid = valid
+function valid (version, options) {
+ var v = parse(version, options)
+ return v ? v.version : null
+}
- lockfile = parseResult.object;
- } else if (reporter) {
- reporter.info(reporter.lang('noLockfileFound'));
- }
+exports.clean = clean
+function clean (version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options)
+ return s ? s.version : null
+}
- return new Lockfile({ cache: lockfile, source: rawLockfile, parseResultType: parseResult && parseResult.type });
- })();
- }
+exports.SemVer = SemVer
- getLocked(pattern) {
- const cache = this.cache;
- if (!cache) {
- return undefined;
+function SemVer (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
}
-
- const shrunk = pattern in cache && cache[pattern];
-
- if (typeof shrunk === 'string') {
- return this.getLocked(shrunk);
- } else if (shrunk) {
- explodeEntry(pattern, shrunk);
- return shrunk;
+ }
+ 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)
+ }
- return undefined;
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
}
- removePattern(pattern) {
- const cache = this.cache;
- if (!cache) {
- return;
- }
- delete cache[pattern];
+ if (!(this instanceof SemVer)) {
+ return new SemVer(version, options)
}
- getLockfile(patterns) {
- const lockfile = {};
- const seen = new Map();
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
- // 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);
+ var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])
- for (var _iterator = sortedPatternsKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
+ if (!m) {
+ throw new TypeError('Invalid Version: ' + version)
+ }
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
+ this.raw = version
- const pattern = _ref;
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
- const pkg = patterns[pattern];
- const remote = pkg._remote,
- ref = pkg._reference;
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
+ }
- invariant(ref, 'Package is missing a reference');
- invariant(remote, 'Package is missing a remote');
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
- const remoteKey = keyForRemote(remote);
- const seenPattern = remoteKey && seen.get(remoteKey);
- if (seenPattern) {
- // no point in duplicating it
- lockfile[pattern] = seenPattern;
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
- // if we're relying on our name being inferred and two of the patterns have
- // different inferred names then we need to set it
- if (!seenPattern.name && getName(pattern) !== pkg.name) {
- seenPattern.name = pkg.name;
+ // 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
}
- continue;
}
- const obj = implodeEntry(pattern, {
- name: pkg.name,
- version: pkg.version,
- uid: pkg._uid,
- resolved: remote.resolved,
- integrity: remote.integrity,
- registry: remote.registry,
- dependencies: pkg.dependencies,
- peerDependencies: pkg.peerDependencies,
- optionalDependencies: pkg.optionalDependencies,
- permissions: ref.permissions,
- prebuiltVariants: pkg.prebuiltVariants
- });
+ return id
+ })
+ }
- lockfile[pattern] = obj;
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
+}
- if (remoteKey) {
- seen.set(remoteKey, obj);
- }
- }
+SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch
+ if (this.prerelease.length) {
+ this.version += '-' + this.prerelease.join('.')
+ }
+ return this.version
+}
- return lockfile;
+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)
}
+
+ return this.compareMain(other) || this.comparePre(other)
}
-exports.default = Lockfile;
-/***/ }),
-/* 15 */,
-/* 16 */,
-/* 17 */
-/***/ (function(module, exports) {
+SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
-module.exports = __webpack_require__(173);
+ return compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch)
+}
-/***/ }),
-/* 18 */,
-/* 19 */,
-/* 20 */
-/***/ (function(module, exports, __webpack_require__) {
+SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
-"use strict";
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0
+ }
+ var i = 0
+ do {
+ var a = this.prerelease[i]
+ var b = other.prerelease[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = nullify;
-function nullify(obj = {}) {
- if (Array.isArray(obj)) {
- for (var _iterator = obj, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
+// 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
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
+ 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 {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
+ 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 item = _ref;
+ default:
+ throw new Error('invalid increment argument: ' + release)
+ }
+ this.format()
+ this.raw = this.version
+ return this
+}
- nullify(item);
- }
- } else if (obj !== null && typeof obj === 'object' || typeof obj === 'function') {
- Object.setPrototypeOf(obj, null);
+exports.inc = inc
+function inc (version, release, loose, identifier) {
+ if (typeof (loose) === 'string') {
+ identifier = loose
+ loose = undefined
+ }
- // for..in can only be applied to 'object', not 'function'
- if (typeof obj === 'object') {
- for (const key in obj) {
- nullify(obj[key]);
+ 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
}
-
- return obj;
}
-/***/ }),
-/* 21 */,
-/* 22 */
-/***/ (function(module, exports) {
+exports.compareIdentifiers = compareIdentifiers
-module.exports = __webpack_require__(162);
+var numeric = /^[0-9]+$/
+function compareIdentifiers (a, b) {
+ var anum = numeric.test(a)
+ var bnum = numeric.test(b)
-/***/ }),
-/* 23 */
-/***/ (function(module, exports) {
+ if (anum && bnum) {
+ a = +a
+ b = +b
+ }
-var core = module.exports = { version: '2.5.7' };
-if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
+ 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)
+}
-/***/ }),
-/* 24 */,
-/* 25 */,
-/* 26 */,
-/* 27 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.major = major
+function major (a, loose) {
+ return new SemVer(a, loose).major
+}
-var isObject = __webpack_require__(34);
-module.exports = function (it) {
- if (!isObject(it)) throw TypeError(it + ' is not an object!');
- return it;
-};
+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
+}
-/***/ }),
-/* 28 */,
-/* 29 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.compare = compare
+function compare (a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose))
+}
-"use strict";
+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)
+}
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.normalizePattern = normalizePattern;
+exports.sort = sort
+function sort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compare(a, b, loose)
+ })
+}
-/**
- * Explode and normalize a pattern into its name and range.
- */
+exports.rsort = rsort
+function rsort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.rcompare(a, b, loose)
+ })
+}
-function normalizePattern(pattern) {
- let hasVersion = false;
- let range = 'latest';
- let name = pattern;
+exports.gt = gt
+function gt (a, b, loose) {
+ return compare(a, b, loose) > 0
+}
- // if we're a scope then remove the @ and add it back later
- let isScoped = false;
- if (name[0] === '@') {
- isScoped = true;
- name = name.slice(1);
- }
+exports.lt = lt
+function lt (a, b, loose) {
+ return compare(a, b, loose) < 0
+}
- // take first part as the name
- const parts = name.split('@');
- if (parts.length > 1) {
- name = parts.shift();
- range = parts.join('@');
+exports.eq = eq
+function eq (a, b, loose) {
+ return compare(a, b, loose) === 0
+}
- if (range) {
- hasVersion = true;
- } else {
- range = '*';
- }
- }
+exports.neq = neq
+function neq (a, b, loose) {
+ return compare(a, b, loose) !== 0
+}
- // add back @ scope suffix
- if (isScoped) {
- name = `@${name}`;
- }
+exports.gte = gte
+function gte (a, b, loose) {
+ return compare(a, b, loose) >= 0
+}
- return { name, range, hasVersion };
+exports.lte = lte
+function lte (a, b, loose) {
+ return compare(a, b, loose) <= 0
}
-/***/ }),
-/* 30 */,
-/* 31 */
-/***/ (function(module, exports, __webpack_require__) {
+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 dP = __webpack_require__(50);
-var createDesc = __webpack_require__(106);
-module.exports = __webpack_require__(33) ? function (object, key, value) {
- return dP.f(object, key, createDesc(1, value));
-} : function (object, key, value) {
- object[key] = value;
- return object;
-};
+ 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)
-/***/ }),
-/* 32 */
-/***/ (function(module, exports, __webpack_require__) {
+ case '!=':
+ return neq(a, b, loose)
-/* eslint-disable node/no-deprecated-api */
-var buffer = __webpack_require__(63)
-var Buffer = buffer.Buffer
+ case '>':
+ return gt(a, b, loose)
-// alternative to using Object.keys for old browsers
-function copyProps (src, dst) {
- for (var key in src) {
- dst[key] = src[key]
- }
-}
-if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
- module.exports = buffer
-} else {
- // Copy properties from require('buffer')
- copyProps(buffer, exports)
- exports.Buffer = SafeBuffer
-}
+ case '>=':
+ return gte(a, b, loose)
-function SafeBuffer (arg, encodingOrOffset, length) {
- return Buffer(arg, encodingOrOffset, length)
-}
+ case '<':
+ return lt(a, b, loose)
-// Copy static methods from Buffer
-copyProps(Buffer, SafeBuffer)
+ case '<=':
+ return lte(a, b, loose)
-SafeBuffer.from = function (arg, encodingOrOffset, length) {
- if (typeof arg === 'number') {
- throw new TypeError('Argument must not be a number')
+ default:
+ throw new TypeError('Invalid operator: ' + op)
}
- return Buffer(arg, encodingOrOffset, length)
}
-SafeBuffer.alloc = function (size, fill, encoding) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- var buf = Buffer(size)
- if (fill !== undefined) {
- if (typeof encoding === 'string') {
- buf.fill(fill, encoding)
- } else {
- buf.fill(fill)
+exports.Comparator = Comparator
+function Comparator (comp, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
}
- } else {
- buf.fill(0)
- }
- return buf
-}
-
-SafeBuffer.allocUnsafe = function (size) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
}
- return Buffer(size)
-}
-SafeBuffer.allocUnsafeSlow = function (size) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp
+ } else {
+ comp = comp.value
+ }
}
- return buffer.SlowBuffer(size)
-}
-
-
-/***/ }),
-/* 33 */
-/***/ (function(module, exports, __webpack_require__) {
-
-// Thank's IE8 for his funny defineProperty
-module.exports = !__webpack_require__(85)(function () {
- return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
-});
+ if (!(this instanceof Comparator)) {
+ return new Comparator(comp, options)
+ }
-/***/ }),
-/* 34 */
-/***/ (function(module, exports) {
+ debug('comparator', comp, options)
+ this.options = options
+ this.loose = !!options.loose
+ this.parse(comp)
-module.exports = function (it) {
- return typeof it === 'object' ? it !== null : typeof it === 'function';
-};
+ if (this.semver === ANY) {
+ this.value = ''
+ } else {
+ this.value = this.operator + this.semver.version
+ }
+ debug('comp', this)
+}
-/***/ }),
-/* 35 */
-/***/ (function(module, exports) {
+var ANY = {}
+Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
+ var m = comp.match(r)
-module.exports = {};
+ if (!m) {
+ throw new TypeError('Invalid comparator: ' + comp)
+ }
+ this.operator = m[1]
+ if (this.operator === '=') {
+ this.operator = ''
+ }
-/***/ }),
-/* 36 */
-/***/ (function(module, exports) {
+ // 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)
+ }
+}
-module.exports = __webpack_require__(122);
+Comparator.prototype.toString = function () {
+ return this.value
+}
-/***/ }),
-/* 37 */,
-/* 38 */,
-/* 39 */,
-/* 40 */
-/***/ (function(module, exports, __webpack_require__) {
+Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose)
-"use strict";
+ if (this.semver === ANY) {
+ return true
+ }
+ if (typeof version === 'string') {
+ version = new SemVer(version, this.options)
+ }
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.wait = wait;
-exports.promisify = promisify;
-exports.queue = queue;
-function wait(delay) {
- return new Promise(resolve => {
- setTimeout(resolve, delay);
- });
+ return cmp(version, this.operator, this.semver, this.options)
}
-function promisify(fn, firstData) {
- return function (...args) {
- return new Promise(function (resolve, reject) {
- args.push(function (err, ...result) {
- let res = result;
-
- if (result.length <= 1) {
- res = result[0];
- }
+Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required')
+ }
- if (firstData) {
- res = err;
- err = null;
- }
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
- if (err) {
- reject(err);
- } else {
- resolve(res);
- }
- });
+ var rangeTmp
- fn.apply(null, args);
- });
- };
-}
+ 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)
+ }
-function queue(arr, promiseProducer, concurrency = Infinity) {
- concurrency = Math.min(concurrency, arr.length);
+ 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 === '>'))
- // clone
- arr = arr.slice();
+ return sameDirectionIncreasing || sameDirectionDecreasing ||
+ (sameSemVer && differentDirectionsInclusive) ||
+ oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
+}
- const results = [];
- let total = arr.length;
- if (!total) {
- return Promise.resolve(results);
+exports.Range = Range
+function Range (range, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
}
- return new Promise((resolve, reject) => {
- for (let i = 0; i < concurrency; i++) {
- next();
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose &&
+ range.includePrerelease === !!options.includePrerelease) {
+ return range
+ } else {
+ return new Range(range.raw, options)
}
+ }
- function next() {
- const item = arr.shift();
- const promise = promiseProducer(item);
-
- promise.then(function (result) {
- results.push(result);
+ if (range instanceof Comparator) {
+ return new Range(range.value, options)
+ }
- total--;
- if (total === 0) {
- resolve(results);
- } else {
- if (arr.length) {
- next();
- }
- }
- }, reject);
- }
- });
-}
+ if (!(this instanceof Range)) {
+ return new Range(range, options)
+ }
-/***/ }),
-/* 41 */
-/***/ (function(module, exports, __webpack_require__) {
+ this.options = options
+ this.loose = !!options.loose
+ this.includePrerelease = !!options.includePrerelease
-var global = __webpack_require__(11);
-var core = __webpack_require__(23);
-var ctx = __webpack_require__(48);
-var hide = __webpack_require__(31);
-var has = __webpack_require__(49);
-var PROTOTYPE = 'prototype';
+ // 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
+ })
-var $export = function (type, name, source) {
- var IS_FORCED = type & $export.F;
- var IS_GLOBAL = type & $export.G;
- var IS_STATIC = type & $export.S;
- var IS_PROTO = type & $export.P;
- var IS_BIND = type & $export.B;
- var IS_WRAP = type & $export.W;
- var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
- var expProto = exports[PROTOTYPE];
- var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
- var key, own, out;
- if (IS_GLOBAL) source = name;
- for (key in source) {
- // contains in native
- own = !IS_FORCED && target && target[key] !== undefined;
- if (own && has(exports, key)) continue;
- // export native or passed
- out = own ? target[key] : source[key];
- // prevent global pollution for namespaces
- exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
- // bind timers to global for call from export context
- : IS_BIND && own ? ctx(out, global)
- // wrap global constructors for prevent change them in library
- : IS_WRAP && target[key] == out ? (function (C) {
- var F = function (a, b, c) {
- if (this instanceof C) {
- switch (arguments.length) {
- case 0: return new C();
- case 1: return new C(a);
- case 2: return new C(a, b);
- } return new C(a, b, c);
- } return C.apply(this, arguments);
- };
- F[PROTOTYPE] = C[PROTOTYPE];
- return F;
- // make static versions for prototype methods
- })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
- // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
- if (IS_PROTO) {
- (exports.virtual || (exports.virtual = {}))[key] = out;
- // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
- if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
- }
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range)
}
-};
-// type bitmap
-$export.F = 1; // forced
-$export.G = 2; // global
-$export.S = 4; // static
-$export.P = 8; // proto
-$export.B = 16; // bind
-$export.W = 32; // wrap
-$export.U = 64; // safe
-$export.R = 128; // real proto method for `library`
-module.exports = $export;
+ this.format()
+}
-/***/ }),
-/* 42 */
-/***/ (function(module, exports, __webpack_require__) {
+Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim()
+ }).join('||').trim()
+ return this.range
+}
-try {
- var util = __webpack_require__(2);
- if (typeof util.inherits !== 'function') throw '';
- module.exports = util.inherits;
-} catch (e) {
- module.exports = __webpack_require__(224);
+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[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])
-/***/ }),
-/* 43 */,
-/* 44 */,
-/* 45 */
-/***/ (function(module, exports, __webpack_require__) {
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(re[TILDETRIM], tildeTrimReplace)
-"use strict";
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(re[CARETTRIM], caretTrimReplace)
+ // normalize spaces
+ range = range.split(/\s+/).join(' ')
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.home = undefined;
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
-var _rootUser;
+ 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)
-function _load_rootUser() {
- return _rootUser = _interopRequireDefault(__webpack_require__(169));
+ return set
}
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required')
+ }
-const path = __webpack_require__(0);
+ 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)
+ })
+ })
+ })
+ })
+}
-const home = exports.home = __webpack_require__(36).homedir();
+// 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(' ')
+ })
+}
-const userHomeDir = (_rootUser || _load_rootUser()).default ? path.resolve('/usr/local/share') : home;
+// 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
+}
-exports.default = userHomeDir;
+function isX (id) {
+ return !id || id.toLowerCase() === 'x' || id === '*'
+}
-/***/ }),
-/* 46 */
-/***/ (function(module, exports) {
+// ~, ~> --> * (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(' ')
+}
-module.exports = function (it) {
- if (typeof it != 'function') throw TypeError(it + ' is not a function!');
- return it;
-};
+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'
+ }
-/***/ }),
-/* 47 */
-/***/ (function(module, exports) {
+ debug('tilde return', ret)
+ return ret
+ })
+}
-var toString = {}.toString;
+// ^ --> * (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(' ')
+}
-module.exports = function (it) {
- return toString.call(it).slice(8, -1);
-};
+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
+
+ 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'
+ }
+ }
+ debug('caret return', ret)
+ return ret
+ })
+}
-/***/ }),
-/* 48 */
-/***/ (function(module, exports, __webpack_require__) {
+function replaceXRanges (comp, options) {
+ debug('replaceXRanges', comp, options)
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options)
+ }).join(' ')
+}
-// optional / simple context binding
-var aFunction = __webpack_require__(46);
-module.exports = function (fn, that, length) {
- aFunction(fn);
- if (that === undefined) return fn;
- switch (length) {
- case 1: return function (a) {
- return fn.call(that, a);
- };
- case 2: return function (a, b) {
- return fn.call(that, a, b);
- };
- case 3: return function (a, b, c) {
- return fn.call(that, a, b, c);
- };
- }
- return function (/* ...args */) {
- return fn.apply(that, arguments);
- };
-};
+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 = ''
+ }
-/***/ }),
-/* 49 */
-/***/ (function(module, exports) {
+ 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
-var hasOwnProperty = {}.hasOwnProperty;
-module.exports = function (it, key) {
- return hasOwnProperty.call(it, key);
-};
+ 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
+ }
+ }
+ 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'
+ }
-/***/ }),
-/* 50 */
-/***/ (function(module, exports, __webpack_require__) {
+ debug('xRange return', ret)
-var anObject = __webpack_require__(27);
-var IE8_DOM_DEFINE = __webpack_require__(184);
-var toPrimitive = __webpack_require__(201);
-var dP = Object.defineProperty;
+ return ret
+ })
+}
-exports.f = __webpack_require__(33) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
- anObject(O);
- P = toPrimitive(P, true);
- anObject(Attributes);
- if (IE8_DOM_DEFINE) try {
- return dP(O, P, Attributes);
- } catch (e) { /* empty */ }
- if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
- if ('value' in Attributes) O[P] = Attributes.value;
- return O;
-};
+// 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], '')
+}
+// 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
+ }
-/***/ }),
-/* 51 */,
-/* 52 */,
-/* 53 */,
-/* 54 */
-/***/ (function(module, exports) {
+ 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
+ }
-module.exports = __webpack_require__(164);
+ return (from + ' ' + to).trim()
+}
-/***/ }),
-/* 55 */
-/***/ (function(module, exports, __webpack_require__) {
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function (version) {
+ if (!version) {
+ return false
+ }
-"use strict";
+ if (typeof version === 'string') {
+ version = new SemVer(version, this.options)
+ }
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true
+ }
+ }
+ return false
+}
-const Buffer = __webpack_require__(32).Buffer
+function testSet (set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false
+ }
+ }
-const crypto = __webpack_require__(9)
-const Transform = __webpack_require__(17).Transform
+ 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
+ }
-const SPEC_ALGORITHMS = ['sha256', 'sha384', 'sha512']
+ 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
+ }
+ }
+ }
-const BASE64_REGEX = /^[a-z0-9+/]+(?:=?=?)$/i
-const SRI_REGEX = /^([^-]+)-([^?]+)([?\S*]*)$/
-const STRICT_SRI_REGEX = /^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/
-const VCHAR_REGEX = /^[\x21-\x7E]+$/
+ // Version has a -pre, but it's not one of the ones we like.
+ return false
+ }
-class Hash {
- get isHash () { return true }
- constructor (hash, opts) {
- const strict = !!(opts && opts.strict)
- this.source = hash.trim()
- // 3.1. Integrity metadata (called "Hash" by ssri)
- // https://w3c.github.io/webappsec-subresource-integrity/#integrity-metadata-description
- const match = this.source.match(
- strict
- ? STRICT_SRI_REGEX
- : SRI_REGEX
- )
- if (!match) { return }
- if (strict && !SPEC_ALGORITHMS.some(a => a === match[1])) { return }
- this.algorithm = match[1]
- this.digest = match[2]
+ return true
+}
- const rawOpts = match[3]
- this.options = rawOpts ? rawOpts.slice(1).split('?') : []
- }
- hexDigest () {
- return this.digest && Buffer.from(this.digest, 'base64').toString('hex')
+exports.satisfies = satisfies
+function satisfies (version, range, options) {
+ try {
+ range = new Range(range, options)
+ } catch (er) {
+ return false
}
- toJSON () {
- return this.toString()
+ 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
}
- toString (opts) {
- if (opts && opts.strict) {
- // Strict mode enforces the standard as close to the foot of the
- // letter as it can.
- if (!(
- // The spec has very restricted productions for algorithms.
- // https://www.w3.org/TR/CSP2/#source-list-syntax
- SPEC_ALGORITHMS.some(x => x === this.algorithm) &&
- // Usually, if someone insists on using a "different" base64, we
- // leave it as-is, since there's multiple standards, and the
- // specified is not a URL-safe variant.
- // https://www.w3.org/TR/CSP2/#base64_value
- this.digest.match(BASE64_REGEX) &&
- // Option syntax is strictly visual chars.
- // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-option-expression
- // https://tools.ietf.org/html/rfc5234#appendix-B.1
- (this.options || []).every(opt => opt.match(VCHAR_REGEX))
- )) {
- return ''
+ 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)
}
}
- const options = this.options && this.options.length
- ? `?${this.options.join('?')}`
- : ''
- return `${this.algorithm}-${this.digest}${options}`
- }
+ })
+ return max
}
-class Integrity {
- get isIntegrity () { return true }
- toJSON () {
- return this.toString()
+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
}
- toString (opts) {
- opts = opts || {}
- let sep = opts.sep || ' '
- if (opts.strict) {
- // Entries must be separated by whitespace, according to spec.
- sep = sep.replace(/\S+/g, ' ')
+ 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 Object.keys(this).map(k => {
- return this[k].map(hash => {
- return Hash.prototype.toString.call(hash, opts)
- }).filter(x => x.length).join(sep)
- }).filter(x => x.length).join(sep)
- }
- concat (integrity, opts) {
- const other = typeof integrity === 'string'
- ? integrity
- : stringify(integrity, opts)
- return parse(`${this.toString(opts)} ${other}`, opts)
- }
- hexDigest () {
- return parse(this, {single: true}).hexDigest()
+ })
+ return min
+}
+
+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
}
- match (integrity, opts) {
- const other = parse(integrity, opts)
- const algo = other.pickAlgorithm(opts)
- return (
- this[algo] &&
- other[algo] &&
- this[algo].find(hash =>
- other[algo].find(otherhash =>
- hash.digest === otherhash.digest
- )
- )
- ) || false
+
+ minver = new SemVer('0.0.0-0')
+ if (range.test(minver)) {
+ return minver
}
- pickAlgorithm (opts) {
- const pickAlgorithm = (opts && opts.pickAlgorithm) || getPrioritizedHash
- const keys = Object.keys(this)
- if (!keys.length) {
- throw new Error(`No algorithms available for ${
- JSON.stringify(this.toString())
- }`)
- }
- return keys.reduce((acc, algo) => {
- return pickAlgorithm(acc, algo) || acc
+
+ 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)
+ }
})
}
-}
-module.exports.parse = parse
-function parse (sri, opts) {
- opts = opts || {}
- if (typeof sri === 'string') {
- return _parse(sri, opts)
- } else if (sri.algorithm && sri.digest) {
- const fullSri = new Integrity()
- fullSri[sri.algorithm] = [sri]
- return _parse(stringify(fullSri, opts), opts)
- } else {
- return _parse(stringify(sri, opts), opts)
+ if (minver && range.test(minver)) {
+ return minver
}
-}
-function _parse (integrity, opts) {
- // 3.4.3. Parse metadata
- // https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
- if (opts.single) {
- return new Hash(integrity, opts)
- }
- return integrity.trim().split(/\s+/).reduce((acc, string) => {
- const hash = new Hash(string, opts)
- if (hash.algorithm && hash.digest) {
- const algo = hash.algorithm
- if (!acc[algo]) { acc[algo] = [] }
- acc[algo].push(hash)
- }
- return acc
- }, new Integrity())
+ return null
}
-module.exports.stringify = stringify
-function stringify (obj, opts) {
- if (obj.algorithm && obj.digest) {
- return Hash.prototype.toString.call(obj, opts)
- } else if (typeof obj === 'string') {
- return stringify(parse(obj, opts), opts)
- } else {
- return Integrity.prototype.toString.call(obj, opts)
+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
}
}
-module.exports.fromHex = fromHex
-function fromHex (hexDigest, algorithm, opts) {
- const optString = (opts && opts.options && opts.options.length)
- ? `?${opts.options.join('?')}`
- : ''
- return parse(
- `${algorithm}-${
- Buffer.from(hexDigest, 'hex').toString('base64')
- }${optString}`, opts
- )
+// 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)
}
-module.exports.fromData = fromData
-function fromData (data, opts) {
- opts = opts || {}
- const algorithms = opts.algorithms || ['sha512']
- const optString = opts.options && opts.options.length
- ? `?${opts.options.join('?')}`
- : ''
- return algorithms.reduce((acc, algo) => {
- const digest = crypto.createHash(algo).update(data).digest('base64')
- const hash = new Hash(
- `${algo}-${digest}${optString}`,
- opts
- )
- if (hash.algorithm && hash.digest) {
- const algo = hash.algorithm
- if (!acc[algo]) { acc[algo] = [] }
- acc[algo].push(hash)
- }
- return acc
- }, new Integrity())
+// 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)
}
-module.exports.fromStream = fromStream
-function fromStream (stream, opts) {
- opts = opts || {}
- const P = opts.Promise || Promise
- const istream = integrityStream(opts)
- return new P((resolve, reject) => {
- stream.pipe(istream)
- stream.on('error', reject)
- istream.on('error', reject)
- let sri
- istream.on('integrity', s => { sri = s })
- istream.on('end', () => resolve(sri))
- istream.on('data', () => {})
- })
-}
+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 ">"')
+ }
+
+ // If it satisifes the range it is not outside
+ if (satisfies(version, range, options)) {
+ return false
+ }
+
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ var high = null
+ var low = null
+
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0')
+ }
+ high = high || comparator
+ low = low || comparator
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator
+ }
+ })
-module.exports.checkData = checkData
-function checkData (data, sri, opts) {
- opts = opts || {}
- sri = parse(sri, opts)
- if (!Object.keys(sri).length) {
- if (opts.error) {
- throw Object.assign(
- new Error('No valid integrity hashes to check against'), {
- code: 'EINTEGRITY'
- }
- )
- } else {
+ // 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
}
}
- const algorithm = sri.pickAlgorithm(opts)
- const digest = crypto.createHash(algorithm).update(data).digest('base64')
- const newSri = parse({algorithm, digest})
- const match = newSri.match(sri, opts)
- if (match || !opts.error) {
- return match
- } else if (typeof opts.size === 'number' && (data.length !== opts.size)) {
- const err = new Error(`data size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${data.length}`)
- err.code = 'EBADSIZE'
- err.found = data.length
- err.expected = opts.size
- err.sri = sri
- throw err
- } else {
- const err = new Error(`Integrity checksum failed when using ${algorithm}: Wanted ${sri}, but got ${newSri}. (${data.length} bytes)`)
- err.code = 'EINTEGRITY'
- err.found = newSri
- err.expected = sri
- err.algorithm = algorithm
- err.sri = sri
- throw err
- }
+ return true
}
-module.exports.checkStream = checkStream
-function checkStream (stream, sri, opts) {
- opts = opts || {}
- const P = opts.Promise || Promise
- const checker = integrityStream(Object.assign({}, opts, {
- integrity: sri
- }))
- return new P((resolve, reject) => {
- stream.pipe(checker)
- stream.on('error', reject)
- checker.on('error', reject)
- let sri
- checker.on('verified', s => { sri = s })
- checker.on('end', () => resolve(sri))
- checker.on('data', () => {})
- })
+exports.prerelease = prerelease
+function prerelease (version, options) {
+ var parsed = parse(version, options)
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
}
-module.exports.integrityStream = integrityStream
-function integrityStream (opts) {
- opts = opts || {}
- // For verification
- const sri = opts.integrity && parse(opts.integrity, opts)
- const goodSri = sri && Object.keys(sri).length
- const algorithm = goodSri && sri.pickAlgorithm(opts)
- const digests = goodSri && sri[algorithm]
- // Calculating stream
- const algorithms = Array.from(
- new Set(
- (opts.algorithms || ['sha512'])
- .concat(algorithm ? [algorithm] : [])
- )
- )
- const hashes = algorithms.map(crypto.createHash)
- let streamSize = 0
- const stream = new Transform({
- transform (chunk, enc, cb) {
- streamSize += chunk.length
- hashes.forEach(h => h.update(chunk, enc))
- cb(null, chunk, enc)
- }
- }).on('end', () => {
- const optString = (opts.options && opts.options.length)
- ? `?${opts.options.join('?')}`
- : ''
- const newSri = parse(hashes.map((h, i) => {
- return `${algorithms[i]}-${h.digest('base64')}${optString}`
- }).join(' '), opts)
- // Integrity verification mode
- const match = goodSri && newSri.match(sri, opts)
- if (typeof opts.size === 'number' && streamSize !== opts.size) {
- const err = new Error(`stream size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${streamSize}`)
- err.code = 'EBADSIZE'
- err.found = streamSize
- err.expected = opts.size
- err.sri = sri
- stream.emit('error', err)
- } else if (opts.integrity && !match) {
- const err = new Error(`${sri} integrity checksum failed when using ${algorithm}: wanted ${digests} but got ${newSri}. (${streamSize} bytes)`)
- err.code = 'EINTEGRITY'
- err.found = newSri
- err.expected = digests
- err.algorithm = algorithm
- err.sri = sri
- stream.emit('error', err)
- } else {
- stream.emit('size', streamSize)
- stream.emit('integrity', newSri)
- match && stream.emit('verified', match)
- }
- })
- return stream
+exports.intersects = intersects
+function intersects (r1, r2, options) {
+ r1 = new Range(r1, options)
+ r2 = new Range(r2, options)
+ return r1.intersects(r2)
}
-module.exports.create = createIntegrity
-function createIntegrity (opts) {
- opts = opts || {}
- const algorithms = opts.algorithms || ['sha512']
- const optString = opts.options && opts.options.length
- ? `?${opts.options.join('?')}`
- : ''
-
- const hashes = algorithms.map(crypto.createHash)
-
- return {
- update: function (chunk, enc) {
- hashes.forEach(h => h.update(chunk, enc))
- return this
- },
- digest: function (enc) {
- const integrity = algorithms.reduce((acc, algo) => {
- const digest = hashes.shift().digest('base64')
- const hash = new Hash(
- `${algo}-${digest}${optString}`,
- opts
- )
- if (hash.algorithm && hash.digest) {
- const algo = hash.algorithm
- if (!acc[algo]) { acc[algo] = [] }
- acc[algo].push(hash)
- }
- return acc
- }, new Integrity())
+exports.coerce = coerce
+function coerce (version) {
+ if (version instanceof SemVer) {
+ return version
+ }
- return integrity
- }
+ if (typeof version !== 'string') {
+ return null
}
-}
-const NODE_HASHES = new Set(crypto.getHashes())
+ var match = version.match(re[COERCE])
-// This is a Best Effort™ at a reasonable priority for hash algos
-const DEFAULT_PRIORITY = [
- 'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',
- // TODO - it's unclear _which_ of these Node will actually use as its name
- // for the algorithm, so we guesswork it based on the OpenSSL names.
- 'sha3',
- 'sha3-256', 'sha3-384', 'sha3-512',
- 'sha3_256', 'sha3_384', 'sha3_512'
-].filter(algo => NODE_HASHES.has(algo))
+ if (match == null) {
+ return null
+ }
-function getPrioritizedHash (algo1, algo2) {
- return DEFAULT_PRIORITY.indexOf(algo1.toLowerCase()) >= DEFAULT_PRIORITY.indexOf(algo2.toLowerCase())
- ? algo1
- : algo2
+ return parse(match[1] +
+ '.' + (match[2] || '0') +
+ '.' + (match[3] || '0'))
}
/***/ }),
-/* 56 */,
-/* 57 */,
-/* 58 */,
-/* 59 */,
-/* 60 */
+/* 528 */
/***/ (function(module, exports, __webpack_require__) {
-module.exports = minimatch
-minimatch.Minimatch = Minimatch
+"use strict";
-var path = { sep: '/' }
-try {
- path = __webpack_require__(0)
-} catch (er) {}
-var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
-var expand = __webpack_require__(175)
+// detect either spaces or tabs but not both to properly handle tabs
+// for indentation and spaces for alignment
+const INDENT_RE = /^(?:( )+|\t+)/;
-var plTypes = {
- '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},
- '?': { open: '(?:', close: ')?' },
- '+': { open: '(?:', close: ')+' },
- '*': { open: '(?:', close: ')*' },
- '@': { open: '(?:', close: ')' }
+function getMostUsed(indents) {
+ let result = 0;
+ let maxUsed = 0;
+ let maxWeight = 0;
+
+ for (const entry of indents) {
+ // TODO: use destructuring when targeting Node.js 6
+ const key = entry[0];
+ const val = entry[1];
+
+ const u = val[0];
+ const w = val[1];
+
+ if (u > maxUsed || (u === maxUsed && w > maxWeight)) {
+ maxUsed = u;
+ maxWeight = w;
+ result = Number(key);
+ }
+ }
+
+ return result;
}
-// any single thing other than /
-// don't need to escape / when using new RegExp()
-var qmark = '[^/]'
+module.exports = str => {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
-// * => any number of characters
-var star = qmark + '*?'
+ // used to see if tabs or spaces are the most used
+ let tabs = 0;
+ let spaces = 0;
-// ** 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})($|\\\/)).)*?'
+ // remember the size of previous line's indentation
+ let prev = 0;
-// not a ^ or / followed by a dot,
-// followed by anything, any number of times.
-var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
+ // remember how many indents/unindents as occurred for a given size
+ // and how much lines follow a given indentation
+ //
+ // indents = {
+ // 3: [1, 0],
+ // 4: [1, 5],
+ // 5: [1, 0],
+ // 12: [1, 0],
+ // }
+ const indents = new Map();
-// characters that need to be escaped in RegExp.
-var reSpecials = charSet('().*{}+?[]^$\\!')
+ // pointer to the array of last used indent
+ let current;
-// "abc" -> { a:true, b:true, c:true }
-function charSet (s) {
- return s.split('').reduce(function (set, c) {
- set[c] = true
- return set
- }, {})
-}
+ // whether the last action was an indent (opposed to an unindent)
+ let isIndent;
-// normalizes slashes.
-var slashSplit = /\/+/
+ for (const line of str.split(/\n/g)) {
+ if (!line) {
+ // ignore empty lines
+ continue;
+ }
-minimatch.filter = filter
-function filter (pattern, options) {
- options = options || {}
- return function (p, i, list) {
- return minimatch(p, pattern, options)
- }
-}
+ let indent;
+ const matches = line.match(INDENT_RE);
-function ext (a, b) {
- a = a || {}
- b = b || {}
- var t = {}
- Object.keys(b).forEach(function (k) {
- t[k] = b[k]
- })
- Object.keys(a).forEach(function (k) {
- t[k] = a[k]
- })
- return t
-}
+ if (matches) {
+ indent = matches[0].length;
-minimatch.defaults = function (def) {
- if (!def || !Object.keys(def).length) return minimatch
+ if (matches[1]) {
+ spaces++;
+ } else {
+ tabs++;
+ }
+ } else {
+ indent = 0;
+ }
- var orig = minimatch
+ const diff = indent - prev;
+ prev = indent;
- var m = function minimatch (p, pattern, options) {
- return orig.minimatch(p, pattern, ext(def, options))
- }
+ if (diff) {
+ // an indent or unindent has been detected
- m.Minimatch = function Minimatch (pattern, options) {
- return new orig.Minimatch(pattern, ext(def, options))
- }
+ isIndent = diff > 0;
- return m
-}
+ current = indents.get(isIndent ? diff : -diff);
-Minimatch.defaults = function (def) {
- if (!def || !Object.keys(def).length) return Minimatch
- return minimatch.defaults(def).Minimatch
-}
+ if (current) {
+ current[0]++;
+ } else {
+ current = [1, 0];
+ indents.set(diff, current);
+ }
+ } else if (current) {
+ // if the last action was an indent, increment the weight
+ current[1] += Number(isIndent);
+ }
+ }
-function minimatch (p, pattern, options) {
- if (typeof pattern !== 'string') {
- throw new TypeError('glob pattern string required')
- }
+ const amount = getMostUsed(indents);
- if (!options) options = {}
+ let type;
+ let indent;
+ if (!amount) {
+ type = null;
+ indent = '';
+ } else if (spaces >= tabs) {
+ type = 'space';
+ indent = ' '.repeat(amount);
+ } else {
+ type = 'tab';
+ indent = '\t'.repeat(amount);
+ }
- // shortcut: comments match nothing.
- if (!options.nocomment && pattern.charAt(0) === '#') {
- return false
- }
+ return {
+ amount,
+ type,
+ indent
+ };
+};
- // "" only matches ""
- if (pattern.trim() === '') return p === ''
- return new Minimatch(pattern, options).match(p)
+/***/ }),
+/* 529 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "installInDir", function() { return installInDir; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runScriptInPackage", function() { return runScriptInPackage; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runScriptInPackageStreaming", function() { return runScriptInPackageStreaming; });
+/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(342);
+/*
+ * 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.
+ */
+
+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"])(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
+ */
-function Minimatch (pattern, options) {
- if (!(this instanceof Minimatch)) {
- return new Minimatch(pattern, options)
- }
+async function runScriptInPackage(script, args, pkg) {
+ const execOpts = {
+ cwd: pkg.path
+ };
+ await Object(_child_process__WEBPACK_IMPORTED_MODULE_0__["spawn"])(YARN_EXEC, ['run', script, ...args], execOpts);
+}
+/**
+ * Run script in the given directory
+ */
- if (typeof pattern !== 'string') {
- throw new TypeError('glob pattern string required')
- }
+function runScriptInPackageStreaming({
+ script,
+ args,
+ pkg,
+ debug
+}) {
+ const execOpts = {
+ cwd: pkg.path
+ };
+ return Object(_child_process__WEBPACK_IMPORTED_MODULE_0__["spawnStreaming"])(YARN_EXEC, ['run', script, ...args], execOpts, {
+ prefix: pkg.name,
+ debug
+ });
+}
- if (!options) options = {}
- pattern = pattern.trim()
+/***/ }),
+/* 530 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- // windows support: need to use /, not \
- if (path.sep !== '/') {
- pattern = pattern.split(path.sep).join('/')
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readYarnLock", function() { return readYarnLock; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resolveDepsForProject", function() { return resolveDepsForProject; });
+/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(531);
+/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(352);
+/*
+ * 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.
+ */
+// @ts-expect-error published types are worthless
+
+
+async function readYarnLock(kbn) {
+ try {
+ const contents = await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_1__["readFile"])(kbn.getAbsolute('yarn.lock'), 'utf8');
+ const yarnLock = Object(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__["parse"])(contents);
+
+ if (yarnLock.type === 'success') {
+ return yarnLock.object;
+ }
+
+ throw new Error('unable to read yarn.lock file, please run `yarn kbn bootstrap`');
+ } catch (error) {
+ if (error.code !== 'ENOENT') {
+ throw error;
+ }
}
- this.options = options
- this.set = []
- this.pattern = pattern
- this.regexp = null
- this.negate = false
- this.comment = false
- this.empty = false
+ return {};
+}
+/**
+ * Get a list of the absolute dependencies of this project, as resolved
+ * in the yarn.lock file, does not include other projects in the workspace
+ * or their dependencies
+ */
+
+function resolveDepsForProject({
+ project: rootProject,
+ yarnLock,
+ kbn,
+ log,
+ productionDepsOnly,
+ includeDependentProject
+}) {
+ /** map of [name@range, { name, version }] */
+ const resolved = new Map();
+ const seenProjects = new Set();
+ const projectQueue = [rootProject];
+ const depQueue = [];
- // make the set of regexps etc.
- this.make()
-}
+ while (projectQueue.length) {
+ const project = projectQueue.shift();
-Minimatch.prototype.debug = function () {}
+ if (seenProjects.has(project)) {
+ continue;
+ }
-Minimatch.prototype.make = make
-function make () {
- // don't do it more than once.
- if (this._made) return
+ seenProjects.add(project);
+ const projectDeps = Object.entries(productionDepsOnly ? project.productionDependencies : project.allDependencies);
- var pattern = this.pattern
- var options = this.options
+ for (const [name, versionRange] of projectDeps) {
+ depQueue.push([name, versionRange]);
+ }
- // empty patterns and comments match nothing.
- if (!options.nocomment && pattern.charAt(0) === '#') {
- this.comment = true
- return
- }
- if (!pattern) {
- this.empty = true
- return
- }
+ while (depQueue.length) {
+ const [name, versionRange] = depQueue.shift();
+ const req = `${name}@${versionRange}`;
- // step 1: figure out negation, etc.
- this.parseNegate()
+ if (resolved.has(req)) {
+ continue;
+ }
- // step 2: expand braces
- var set = this.globSet = this.braceExpand()
+ if (includeDependentProject && kbn.hasProject(name)) {
+ projectQueue.push(kbn.getProject(name));
+ }
- if (options.debug) this.debug = console.error
+ if (!kbn.hasProject(name)) {
+ const pkg = yarnLock[req];
- this.debug(this.pattern, set)
+ if (!pkg) {
+ log.warning('yarn.lock file is out of date, please run `yarn kbn bootstrap` to re-enable caching');
+ return;
+ }
- // 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)
- })
+ resolved.set(req, {
+ name,
+ version: pkg.version
+ });
+ const allDepsEntries = [...Object.entries(pkg.dependencies || {}), ...Object.entries(pkg.optionalDependencies || {})];
- this.debug(this.pattern, set)
+ for (const [childName, childVersionRange] of allDepsEntries) {
+ depQueue.push([childName, childVersionRange]);
+ }
+ }
+ }
+ }
- // glob --> regexps
- set = set.map(function (s, si, set) {
- return s.map(this.parse, this)
- }, this)
+ return resolved;
+}
- this.debug(this.pattern, set)
+/***/ }),
+/* 531 */
+/***/ (function(module, exports, __webpack_require__) {
- // filter out everything that didn't compile properly.
- set = set.filter(function (s) {
- return s.indexOf(false) === -1
- })
+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) {
- this.debug(this.pattern, set)
+module.exports = __webpack_require__(4);
- this.set = set
-}
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
-Minimatch.prototype.parseNegate = parseNegate
-function parseNegate () {
- var pattern = this.pattern
- var negate = false
- var options = this.options
- var negateOffset = 0
+"use strict";
- if (options.nonegate) return
- for (var i = 0, l = pattern.length
- ; i < l && pattern.charAt(i) === '!'
- ; i++) {
- negate = !negate
- negateOffset++
- }
+exports.__esModule = true;
- if (negateOffset) this.pattern = pattern.substr(negateOffset)
- this.negate = negate
-}
+var _promise = __webpack_require__(173);
-// 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)
-}
+var _promise2 = _interopRequireDefault(_promise);
-Minimatch.prototype.braceExpand = braceExpand
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-function braceExpand (pattern, options) {
- if (!options) {
- if (this instanceof Minimatch) {
- options = this.options
- } else {
- options = {}
- }
- }
+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;
+ }
- pattern = typeof pattern === 'undefined'
- ? this.pattern : pattern
+ if (info.done) {
+ resolve(value);
+ } else {
+ return _promise2.default.resolve(value).then(function (value) {
+ step("next", value);
+ }, function (err) {
+ step("throw", err);
+ });
+ }
+ }
- if (typeof pattern === 'undefined') {
- throw new TypeError('undefined pattern')
- }
+ return step("next");
+ });
+ };
+};
- if (options.nobrace ||
- !pattern.match(/\{.*\}/)) {
- // shortcut. no need to expand.
- return [pattern]
- }
+/***/ }),
+/* 2 */
+/***/ (function(module, exports) {
- return expand(pattern)
-}
+module.exports = __webpack_require__(234);
-// 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) {
- if (pattern.length > 1024 * 64) {
- throw new TypeError('pattern is too long')
- }
+/***/ }),
+/* 3 */
+/***/ (function(module, exports) {
- var options = this.options
+module.exports = __webpack_require__(253);
- // shortcuts
- if (!options.noglobstar && pattern === '**') return GLOBSTAR
- if (pattern === '') return ''
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __webpack_require__) {
- 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
+"use strict";
- 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)
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+class MessageError extends Error {
+ constructor(msg, code) {
+ super(msg);
+ this.code = code;
+ }
- // skip over any that are escaped.
- if (escaping && reSpecials[c]) {
- re += '\\' + c
- escaping = false
- continue
- }
+}
- switch (c) {
- case '/':
- // completely not allowed, even escaped.
- // Should already be path-split by now.
- return false
+exports.MessageError = MessageError;
+class ProcessSpawnError extends MessageError {
+ constructor(msg, code, process) {
+ super(msg, code);
+ this.process = process;
+ }
- 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)
+exports.ProcessSpawnError = ProcessSpawnError;
+class SecurityError extends MessageError {}
- // 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
- }
+exports.SecurityError = SecurityError;
+class ProcessTermError extends MessageError {}
- // 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
+exports.ProcessTermError = ProcessTermError;
+class ResponseError extends Error {
+ constructor(msg, responseCode) {
+ super(msg);
+ this.responseCode = responseCode;
+ }
- case '(':
- if (inClass) {
- re += '('
- continue
- }
+}
+exports.ResponseError = ResponseError;
- if (!stateChar) {
- re += '\\('
- continue
- }
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
- 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
+"use strict";
- 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
+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;
- case '|':
- if (inClass || !patternListStack.length || escaping) {
- re += '\\|'
- escaping = false
- continue
- }
+var _asyncToGenerator2;
- clearStateChar()
- re += '|'
- continue
+function _load_asyncToGenerator() {
+ return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1));
+}
- // these are mostly the same in regexp and glob
- case '[':
- // swallow any state-tracking char before the [
- clearStateChar()
+let buildActionsForCopy = (() => {
+ var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) {
- if (inClass) {
- re += '\\' + c
- continue
- }
+ //
+ let build = (() => {
+ var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {
+ const src = data.src,
+ dest = data.dest,
+ type = data.type;
- inClass = true
- classStart = i
- reClassStart = re.length
- re += c
- continue
+ const onFresh = data.onFresh || noop;
+ const onDone = data.onDone || noop;
- 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
+ // 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());
}
- // handle the case where we left a class open.
- // "[z-a]" is valid, equivalent to "\[z-a\]"
- if (inClass) {
- // 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
- }
+ if (type === 'symlink') {
+ yield mkdirp((_path || _load_path()).default.dirname(dest));
+ onFresh();
+ actions.symlink.push({
+ dest,
+ linkname: src
+ });
+ onDone();
+ return;
}
- // finish up the class.
- hasMagic = true
- inClass = false
- re += c
- continue
+ if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) {
+ // ignored file
+ return;
+ }
- default:
- // swallow any state char that wasn't consumed
- clearStateChar()
+ const srcStat = yield lstat(src);
+ let srcFiles;
- if (escaping) {
- // no need
- escaping = false
- } else if (reSpecials[c]
- && !(c === '^' && inClass)) {
- re += '\\'
+ if (srcStat.isDirectory()) {
+ srcFiles = yield readdir(src);
}
- re += c
-
- } // switch
- } // for
+ 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;
+ }
+ }
- // 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]
- }
+ // if destination exists
+ if (destStat) {
+ const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink();
+ const bothFolders = srcStat.isDirectory() && destStat.isDirectory();
+ const bothFiles = srcStat.isFile() && destStat.isFile();
- // 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 = '\\'
- }
+ // 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.
- // 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 + '|'
- })
+ /* if (srcStat.mode !== destStat.mode) {
+ try {
+ await access(dest, srcStat.mode);
+ } catch (err) {}
+ } */
- this.debug('tail=%j\n %s', tail, tail, pl, re)
- var t = pl.type === '*' ? star
- : pl.type === '?' ? qmark
- : '\\' + pl.type
+ 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;
+ }
- hasMagic = true
- re = re.slice(0, pl.reStart) + t + '\\(' + tail
- }
+ 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;
+ }
- // handle trailing things that only matter at the very end.
- clearStateChar()
- if (escaping) {
- // trailing \\
- re += '\\\\'
- }
+ 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;
+ }
+ }
- // 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
- }
+ if (bothFolders) {
+ // mark files that aren't in this folder as possibly extraneous
+ const destFiles = yield readdir(dest);
+ invariant(srcFiles, 'src files not initialised');
- // 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]
+ for (var _iterator4 = destFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
+ var _ref6;
- 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)
+ if (_isArray4) {
+ if (_i4 >= _iterator4.length) break;
+ _ref6 = _iterator4[_i4++];
+ } else {
+ _i4 = _iterator4.next();
+ if (_i4.done) break;
+ _ref6 = _i4.value;
+ }
- nlLast += nlAfter
+ const file = _ref6;
- // 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
+ if (srcFiles.indexOf(file) < 0) {
+ const loc = (_path || _load_path()).default.join(dest, file);
+ possibleExtraneous.add(loc);
- var dollar = ''
- if (nlAfter === '' && isSub !== SUBPARSE) {
- dollar = '$'
- }
- var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
- re = newRe
- }
+ 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 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 (_isArray5) {
+ if (_i5 >= _iterator5.length) break;
+ _ref7 = _iterator5[_i5++];
+ } else {
+ _i5 = _iterator5.next();
+ if (_i5.done) break;
+ _ref7 = _i5.value;
+ }
- if (addPatternStart) {
- re = patternStart + re
- }
+ const file = _ref7;
- // parsing just a piece of a larger pattern.
- if (isSub === SUBPARSE) {
- return [re, hasMagic]
- }
+ possibleExtraneous.add((_path || _load_path()).default.join(loc, file));
+ }
+ }
+ }
+ }
+ }
+ }
- // 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)
- }
+ if (destStat && destStat.isSymbolicLink()) {
+ yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest);
+ destStat = null;
+ }
- var flags = options.nocase ? 'i' : ''
- try {
- var regExp = new RegExp('^' + re + '$', flags)
- } catch (er) {
- // 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('$.')
- }
+ 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);
+ }
- regExp._glob = pattern
- regExp._src = re
+ const destParts = dest.split((_path || _load_path()).default.sep);
+ while (destParts.length) {
+ files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase());
+ destParts.pop();
+ }
- return regExp
-}
+ // 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;
-minimatch.makeRe = function (pattern, options) {
- return new Minimatch(pattern, options || {}).makeRe()
-}
+ if (_isArray6) {
+ if (_i6 >= _iterator6.length) break;
+ _ref8 = _iterator6[_i6++];
+ } else {
+ _i6 = _iterator6.next();
+ if (_i6.done) break;
+ _ref8 = _i6.value;
+ }
-Minimatch.prototype.makeRe = makeRe
-function makeRe () {
- if (this.regexp || this.regexp === false) return this.regexp
+ const file = _ref8;
- // 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
+ queue.push({
+ dest: (_path || _load_path()).default.join(dest, file),
+ onFresh,
+ onDone: function (_onDone) {
+ function onDone() {
+ return _onDone.apply(this, arguments);
+ }
- if (!set.length) {
- this.regexp = false
- return this.regexp
- }
- var options = this.options
+ onDone.toString = function () {
+ return _onDone.toString();
+ };
- var twoStar = options.noglobstar ? star
- : options.dot ? twoStarDot
- : twoStarNoDot
- var flags = options.nocase ? 'i' : ''
+ 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}`);
+ }
+ });
- var re = set.map(function (pattern) {
- return pattern.map(function (p) {
- return (p === GLOBSTAR) ? twoStar
- : (typeof p === 'string') ? regExpEscape(p)
- : p._src
- }).join('\\\/')
- }).join('|')
+ return function build(_x5) {
+ return _ref5.apply(this, arguments);
+ };
+ })();
- // must match entire pattern
- // ending in a * or ** will make it less strict.
- re = '^(?:' + re + ')$'
+ const artifactFiles = new Set(events.artifactFiles || []);
+ const files = new Set();
- // can match anything, as long as it's not this.
- if (this.negate) re = '^(?!' + re + ').*$'
+ // initialise events
+ for (var _iterator = queue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
+ var _ref2;
- try {
- this.regexp = new RegExp(re, flags)
- } catch (ex) {
- this.regexp = false
- }
- return this.regexp
-}
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref2 = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref2 = _i.value;
+ }
-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
-}
+ const item = _ref2;
-Minimatch.prototype.match = match
-function match (f, 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 === ''
+ const onDone = item.onDone;
+ item.onDone = function () {
+ events.onProgress(item.dest);
+ if (onDone) {
+ onDone();
+ }
+ };
+ }
+ events.onStart(queue.length);
- if (f === '/' && partial) return true
+ // start building actions
+ const actions = {
+ file: [],
+ symlink: [],
+ link: []
+ };
- var options = this.options
+ // 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));
+ }
- // windows: need to use /, not \
- if (path.sep !== '/') {
- f = f.split(path.sep).join('/')
- }
+ // 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;
- // treat the test path as a set of pathparts.
- f = f.split(slashSplit)
- this.debug(this.pattern, 'split', f)
+ if (_isArray2) {
+ if (_i2 >= _iterator2.length) break;
+ _ref3 = _iterator2[_i2++];
+ } else {
+ _i2 = _iterator2.next();
+ if (_i2.done) break;
+ _ref3 = _i2.value;
+ }
- // 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.
+ const file = _ref3;
- var set = this.set
- this.debug(this.pattern, 'set', set)
+ if (possibleExtraneous.has(file)) {
+ reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file));
+ possibleExtraneous.delete(file);
+ }
+ }
- // 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 (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
+ var _ref4;
- 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
- }
- }
+ if (_isArray3) {
+ if (_i3 >= _iterator3.length) break;
+ _ref4 = _iterator3[_i3++];
+ } else {
+ _i3 = _iterator3.next();
+ if (_i3.done) break;
+ _ref4 = _i3.value;
+ }
- // didn't get any hits. this is success if it's a negative
- // pattern, failure otherwise.
- if (options.flipNegate) return false
- return this.negate
-}
+ const loc = _ref4;
-// 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
+ if (files.has(loc.toLowerCase())) {
+ possibleExtraneous.delete(loc);
+ }
+ }
- this.debug('matchOne',
- { 'this': this, file: file, pattern: pattern })
+ return actions;
+ });
- this.debug('matchOne', file.length, pattern.length)
+ return function buildActionsForCopy(_x, _x2, _x3, _x4) {
+ return _ref.apply(this, arguments);
+ };
+})();
- 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]
+let buildActionsForHardlink = (() => {
+ var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) {
- this.debug(pattern, p, f)
+ //
+ let build = (() => {
+ var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {
+ const src = data.src,
+ dest = data.dest;
- // should be impossible.
- // some invalid regexp stuff in the set.
- if (p === false) return false
+ const onFresh = data.onFresh || noop;
+ const onDone = data.onDone || noop;
+ if (files.has(dest.toLowerCase())) {
+ // Fixes issue https://github.com/yarnpkg/yarn/issues/2734
+ // When bulk hardlinking we have A -> B structure that we want to hardlink to A1 -> B1,
+ // package-linker passes that modules A1 and B1 need to be hardlinked,
+ // the recursive linking algorithm of A1 ends up scheduling files in B1 to be linked twice which will case
+ // an exception.
+ onDone();
+ return;
+ }
+ files.add(dest.toLowerCase());
- if (p === GLOBSTAR) {
- this.debug('GLOBSTAR', [pattern, p, f])
+ if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) {
+ // ignored file
+ return;
+ }
- // "**"
- // 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
+ const srcStat = yield lstat(src);
+ let srcFiles;
+
+ if (srcStat.isDirectory()) {
+ srcFiles = yield readdir(src);
}
- return true
- }
- // ok, let's see if we can swallow whatever we can.
- while (fr < fl) {
- var swallowee = file[fr]
+ const destExists = yield exists(dest);
+ if (destExists) {
+ const destStat = yield lstat(dest);
- this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
+ const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink();
+ const bothFolders = srcStat.isDirectory() && destStat.isDirectory();
+ const bothFiles = srcStat.isFile() && destStat.isFile();
- // 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
+ 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);
+ }
}
- // ** swallows a segment, and continue.
- this.debug('globstar swallow a segment, and continue')
- fr++
- }
- }
+ 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;
+ }
- // no match was found.
- // However, in partial mode, we can't say this is necessarily over.
- // If there's more *pattern* left, then
- if (partial) {
- // ran out of file
- this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
- if (fr === fl) return true
- }
- return false
- }
+ // correct hardlink
+ if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) {
+ onDone();
+ reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino));
+ return;
+ }
- // 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') {
- if (options.nocase) {
- hit = f.toLowerCase() === p.toLowerCase()
- } else {
- hit = f === p
- }
- this.debug('string match', p, f, hit)
- } else {
- hit = f.match(p)
- this.debug('pattern match', p, f, hit)
- }
+ 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 (!hit) return false
- }
+ if (bothFolders) {
+ // mark files that aren't in this folder as possibly extraneous
+ const destFiles = yield readdir(dest);
+ invariant(srcFiles, 'src files not initialised');
- // 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/*
+ for (var _iterator10 = destFiles, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
+ var _ref14;
- // 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 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/
- var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')
- return emptyFileEnd
- }
+ if (_isArray10) {
+ if (_i10 >= _iterator10.length) break;
+ _ref14 = _iterator10[_i10++];
+ } else {
+ _i10 = _iterator10.next();
+ if (_i10.done) break;
+ _ref14 = _i10.value;
+ }
- // should be unreachable.
- throw new Error('wtf?')
-}
+ const file = _ref14;
-// replace stuff like \* with *
-function globUnescape (s) {
- return s.replace(/\\(.)/g, '$1')
-}
+ if (srcFiles.indexOf(file) < 0) {
+ const loc = (_path || _load_path()).default.join(dest, file);
+ possibleExtraneous.add(loc);
-function regExpEscape (s) {
- return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
-}
+ if ((yield lstat(loc)).isDirectory()) {
+ for (var _iterator11 = yield readdir(loc), _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
+ var _ref15;
+ if (_isArray11) {
+ if (_i11 >= _iterator11.length) break;
+ _ref15 = _iterator11[_i11++];
+ } else {
+ _i11 = _iterator11.next();
+ if (_i11.done) break;
+ _ref15 = _i11.value;
+ }
-/***/ }),
-/* 61 */
-/***/ (function(module, exports, __webpack_require__) {
+ const file = _ref15;
-var wrappy = __webpack_require__(123)
-module.exports = wrappy(once)
-module.exports.strict = wrappy(onceStrict)
+ possibleExtraneous.add((_path || _load_path()).default.join(loc, file));
+ }
+ }
+ }
+ }
+ }
+ }
-once.proto = once(function () {
- Object.defineProperty(Function.prototype, 'once', {
- value: function () {
- return once(this)
- },
- configurable: true
- })
+ 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);
- Object.defineProperty(Function.prototype, 'onceStrict', {
- value: function () {
- return onceStrict(this)
- },
- configurable: true
- })
-})
+ const destParts = dest.split((_path || _load_path()).default.sep);
+ while (destParts.length) {
+ files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase());
+ destParts.pop();
+ }
-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
-}
+ // 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;
-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
-}
+ if (_isArray12) {
+ if (_i12 >= _iterator12.length) break;
+ _ref16 = _iterator12[_i12++];
+ } else {
+ _i12 = _iterator12.next();
+ if (_i12.done) break;
+ _ref16 = _i12.value;
+ }
+ const file = _ref16;
-/***/ }),
-/* 62 */,
-/* 63 */
-/***/ (function(module, exports) {
+ 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);
+ }
-module.exports = __webpack_require__(411);
+ onDone.toString = function () {
+ return _onDone2.toString();
+ };
-/***/ }),
-/* 64 */,
-/* 65 */,
-/* 66 */,
-/* 67 */
-/***/ (function(module, exports) {
+ 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}`);
+ }
+ });
-// 7.2.1 RequireObjectCoercible(argument)
-module.exports = function (it) {
- if (it == undefined) throw TypeError("Can't call method on " + it);
- return it;
-};
+ return function build(_x10) {
+ return _ref13.apply(this, arguments);
+ };
+ })();
+ const artifactFiles = new Set(events.artifactFiles || []);
+ const files = new Set();
-/***/ }),
-/* 68 */
-/***/ (function(module, exports, __webpack_require__) {
+ // initialise events
+ for (var _iterator7 = queue, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
+ var _ref10;
-var isObject = __webpack_require__(34);
-var document = __webpack_require__(11).document;
-// typeof document.createElement is 'object' in old IE
-var is = isObject(document) && isObject(document.createElement);
-module.exports = function (it) {
- return is ? document.createElement(it) : {};
-};
+ if (_isArray7) {
+ if (_i7 >= _iterator7.length) break;
+ _ref10 = _iterator7[_i7++];
+ } else {
+ _i7 = _iterator7.next();
+ if (_i7.done) break;
+ _ref10 = _i7.value;
+ }
+ const item = _ref10;
-/***/ }),
-/* 69 */
-/***/ (function(module, exports) {
+ const onDone = item.onDone || noop;
+ item.onDone = function () {
+ events.onProgress(item.dest);
+ onDone();
+ };
+ }
+ events.onStart(queue.length);
-module.exports = true;
+ // 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));
+ }
-/***/ }),
-/* 70 */
-/***/ (function(module, exports, __webpack_require__) {
+ // 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;
-"use strict";
+ if (_isArray8) {
+ if (_i8 >= _iterator8.length) break;
+ _ref11 = _iterator8[_i8++];
+ } else {
+ _i8 = _iterator8.next();
+ if (_i8.done) break;
+ _ref11 = _i8.value;
+ }
-// 25.4.1.5 NewPromiseCapability(C)
-var aFunction = __webpack_require__(46);
+ const file = _ref11;
-function PromiseCapability(C) {
- var resolve, reject;
- this.promise = new C(function ($$resolve, $$reject) {
- if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
- resolve = $$resolve;
- reject = $$reject;
- });
- this.resolve = aFunction(resolve);
- this.reject = aFunction(reject);
-}
+ if (possibleExtraneous.has(file)) {
+ reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file));
+ possibleExtraneous.delete(file);
+ }
+ }
-module.exports.f = function (C) {
- return new PromiseCapability(C);
-};
+ for (var _iterator9 = possibleExtraneous, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
+ var _ref12;
+ if (_isArray9) {
+ if (_i9 >= _iterator9.length) break;
+ _ref12 = _iterator9[_i9++];
+ } else {
+ _i9 = _iterator9.next();
+ if (_i9.done) break;
+ _ref12 = _i9.value;
+ }
-/***/ }),
-/* 71 */
-/***/ (function(module, exports, __webpack_require__) {
+ const loc = _ref12;
-var def = __webpack_require__(50).f;
-var has = __webpack_require__(49);
-var TAG = __webpack_require__(13)('toStringTag');
+ if (files.has(loc.toLowerCase())) {
+ possibleExtraneous.delete(loc);
+ }
+ }
-module.exports = function (it, tag, stat) {
- if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
-};
+ return actions;
+ });
+ return function buildActionsForHardlink(_x6, _x7, _x8, _x9) {
+ return _ref9.apply(this, arguments);
+ };
+})();
-/***/ }),
-/* 72 */
-/***/ (function(module, exports, __webpack_require__) {
+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 || []
+ };
-var shared = __webpack_require__(107)('keys');
-var uid = __webpack_require__(111);
-module.exports = function (key) {
- return shared[key] || (shared[key] = uid(key));
-};
+ const actions = yield buildActionsForCopy(queue, events, events.possibleExtraneous, reporter);
+ events.onStart(actions.file.length + actions.symlink.length + actions.link.length);
+ const fileActions = actions.file;
-/***/ }),
-/* 73 */
-/***/ (function(module, exports) {
+ const currentlyWriting = new Map();
-// 7.1.4 ToInteger
-var ceil = Math.ceil;
-var floor = Math.floor;
-module.exports = function (it) {
- return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
-};
+ yield (_promise || _load_promise()).queue(fileActions, (() => {
+ var _ref18 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {
+ let writePromise;
+ while (writePromise = currentlyWriting.get(data.dest)) {
+ yield writePromise;
+ }
+ reporter.verbose(reporter.lang('verboseFileCopy', data.src, data.dest));
+ const copier = (0, (_fsNormalized || _load_fsNormalized()).copyFile)(data, function () {
+ return currentlyWriting.delete(data.dest);
+ });
+ currentlyWriting.set(data.dest, copier);
+ events.onProgress(data.dest);
+ return copier;
+ });
-/***/ }),
-/* 74 */
-/***/ (function(module, exports, __webpack_require__) {
+ return function (_x14) {
+ return _ref18.apply(this, arguments);
+ };
+ })(), CONCURRENT_QUEUE_ITEMS);
-// to indexed object, toObject with fallback for non-array-like ES3 strings
-var IObject = __webpack_require__(131);
-var defined = __webpack_require__(67);
-module.exports = function (it) {
- return IObject(defined(it));
-};
+ // we need to copy symlinks last as they could reference files we were copying
+ const symlinkActions = actions.symlink;
+ yield (_promise || _load_promise()).queue(symlinkActions, function (data) {
+ const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname);
+ reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname));
+ return symlink(linkname, data.dest);
+ });
+ });
+
+ return function copyBulk(_x11, _x12, _x13) {
+ return _ref17.apply(this, arguments);
+ };
+})();
+let hardlinkBulk = exports.hardlinkBulk = (() => {
+ var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) {
+ const events = {
+ onStart: _events && _events.onStart || noop,
+ onProgress: _events && _events.onProgress || noop,
+ possibleExtraneous: _events ? _events.possibleExtraneous : new Set(),
+ artifactFiles: _events && _events.artifactFiles || [],
+ ignoreBasenames: []
+ };
-/***/ }),
-/* 75 */
-/***/ (function(module, exports, __webpack_require__) {
+ const actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter);
+ events.onStart(actions.file.length + actions.symlink.length + actions.link.length);
-// 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 fileActions = actions.link;
-module.exports = glob
+ 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);
+ });
-var fs = __webpack_require__(3)
-var rp = __webpack_require__(114)
-var minimatch = __webpack_require__(60)
-var Minimatch = minimatch.Minimatch
-var inherits = __webpack_require__(42)
-var EE = __webpack_require__(54).EventEmitter
-var path = __webpack_require__(0)
-var assert = __webpack_require__(22)
-var isAbsolute = __webpack_require__(76)
-var globSync = __webpack_require__(218)
-var common = __webpack_require__(115)
-var alphasort = common.alphasort
-var alphasorti = common.alphasorti
-var setopts = common.setopts
-var ownProp = common.ownProp
-var inflight = __webpack_require__(223)
-var util = __webpack_require__(2)
-var childrenIgnored = common.childrenIgnored
-var isIgnored = common.isIgnored
+ return function (_x18) {
+ return _ref20.apply(this, arguments);
+ };
+ })(), CONCURRENT_QUEUE_ITEMS);
-var once = __webpack_require__(61)
+ // 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);
+ });
+ });
-function glob (pattern, options, cb) {
- if (typeof options === 'function') cb = options, options = {}
- if (!options) options = {}
+ return function hardlinkBulk(_x15, _x16, _x17) {
+ return _ref19.apply(this, arguments);
+ };
+})();
- if (options.sync) {
- if (cb)
- throw new TypeError('callback provided to sync glob')
- return globSync(pattern, options)
- }
+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;
- return new Glob(pattern, options, cb)
-}
+ if (_isArray13) {
+ if (_i13 >= _iterator13.length) break;
+ _ref22 = _iterator13[_i13++];
+ } else {
+ _i13 = _iterator13.next();
+ if (_i13.done) break;
+ _ref22 = _i13.value;
+ }
-glob.sync = globSync
-var GlobSync = glob.GlobSync = globSync.GlobSync
+ const file = _ref22;
-// old api surface
-glob.glob = glob
+ if (yield exists(file)) {
+ return readFile(file);
+ }
+ }
+ return null;
+ });
-function extend (origin, add) {
- if (add === null || typeof add !== 'object') {
- return origin
- }
+ return function readFileAny(_x19) {
+ return _ref21.apply(this, arguments);
+ };
+})();
- var keys = Object.keys(add)
- var i = keys.length
- while (i--) {
- origin[keys[i]] = add[keys[i]]
- }
- return origin
-}
+let readJson = exports.readJson = (() => {
+ var _ref23 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) {
+ return (yield readJsonAndFile(loc)).object;
+ });
-glob.hasMagic = function (pattern, options_) {
- var options = extend({}, options_)
- options.noprocess = true
+ return function readJson(_x20) {
+ return _ref23.apply(this, arguments);
+ };
+})();
- var g = new Glob(pattern, options)
- var set = g.minimatch.set
+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;
+ }
+ });
- if (!pattern)
- return false
+ return function readJsonAndFile(_x21) {
+ return _ref24.apply(this, arguments);
+ };
+})();
- if (set.length > 1)
- return true
+let find = exports.find = (() => {
+ var _ref25 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, dir) {
+ const parts = dir.split((_path || _load_path()).default.sep);
- for (var j = 0; j < set[0].length; j++) {
- if (typeof set[0][j] !== 'string')
- return true
- }
+ while (parts.length) {
+ const loc = parts.concat(filename).join((_path || _load_path()).default.sep);
- return false
-}
+ if (yield exists(loc)) {
+ return loc;
+ } else {
+ parts.pop();
+ }
+ }
-glob.Glob = Glob
-inherits(Glob, EE)
-function Glob (pattern, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = null
- }
+ return false;
+ });
- if (options && options.sync) {
- if (cb)
- throw new TypeError('callback provided to sync glob')
- return new GlobSync(pattern, options)
- }
+ return function find(_x22, _x23) {
+ return _ref25.apply(this, arguments);
+ };
+})();
- if (!(this instanceof Glob))
- return new Glob(pattern, options, cb)
+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);
- setopts(this, pattern, options)
- this._didRealPath = false
+ 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);
+ }
+ });
- // process each pattern in the minimatch set
- var n = this.minimatch.set.length
+ return function symlink(_x24, _x25) {
+ return _ref26.apply(this, arguments);
+ };
+})();
- // 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)
+let walk = exports.walk = (() => {
+ var _ref27 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, relativeDir, ignoreBasenames = new Set()) {
+ let files = [];
- if (typeof cb === 'function') {
- cb = once(cb)
- this.on('error', cb)
- this.on('end', function (matches) {
- cb(null, matches)
- })
- }
+ let filenames = yield readdir(dir);
+ if (ignoreBasenames.size) {
+ filenames = filenames.filter(function (name) {
+ return !ignoreBasenames.has(name);
+ });
+ }
- var self = this
- this._processing = 0
+ for (var _iterator14 = filenames, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) {
+ var _ref28;
- this._emitQueue = []
- this._processQueue = []
- this.paused = false
+ if (_isArray14) {
+ if (_i14 >= _iterator14.length) break;
+ _ref28 = _iterator14[_i14++];
+ } else {
+ _i14 = _iterator14.next();
+ if (_i14.done) break;
+ _ref28 = _i14.value;
+ }
- if (this.noprocess)
- return this
+ const name = _ref28;
- if (n === 0)
- return done()
+ 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);
- var sync = true
- for (var i = 0; i < n; i ++) {
- this._process(this.minimatch.set[i], i, false, done)
- }
- sync = false
+ files.push({
+ relative,
+ basename: name,
+ absolute: loc,
+ mtime: +stat.mtime
+ });
- function done () {
- --self._processing
- if (self._processing <= 0) {
- if (sync) {
- process.nextTick(function () {
- self._finish()
- })
- } else {
- self._finish()
+ if (stat.isDirectory()) {
+ files = files.concat((yield walk(loc, relative, ignoreBasenames)));
}
}
- }
-}
-Glob.prototype._finish = function () {
- assert(this instanceof Glob)
- if (this.aborted)
- return
+ return files;
+ });
- if (this.realpath && !this._didRealpath)
- return this._realpath()
+ return function walk(_x26, _x27) {
+ return _ref27.apply(this, arguments);
+ };
+})();
- common.finish(this)
- this.emit('end', this.found)
-}
+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;
-Glob.prototype._realpath = function () {
- if (this._didRealpath)
- return
- this._didRealpath = true
+ return Math.ceil(size / blockSize) * blockSize;
+ });
- var n = this.matches.length
- if (n === 0)
- return this._finish()
+ return function getFileSizeOnDisk(_x28) {
+ return _ref29.apply(this, arguments);
+ };
+})();
- var self = this
- for (var i = 0; i < this.matches.length; i++)
- this._realpathSet(i, next)
+let getEolFromFile = (() => {
+ var _ref30 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path) {
+ if (!(yield exists(path))) {
+ return undefined;
+ }
- function next () {
- if (--n === 0)
- self._finish()
- }
-}
+ const buffer = yield readFileBuffer(path);
-Glob.prototype._realpathSet = function (index, cb) {
- var matchset = this.matches[index]
- if (!matchset)
- return cb()
+ for (let i = 0; i < buffer.length; ++i) {
+ if (buffer[i] === cr) {
+ return '\r\n';
+ }
+ if (buffer[i] === lf) {
+ return '\n';
+ }
+ }
+ return undefined;
+ });
- var found = Object.keys(matchset)
- var self = this
- var n = found.length
+ return function getEolFromFile(_x29) {
+ return _ref30.apply(this, arguments);
+ };
+})();
- if (n === 0)
- return cb()
+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);
+ });
- 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
+ return function writeFilePreservingEol(_x30, _x31) {
+ return _ref31.apply(this, arguments);
+ };
+})();
- if (--n === 0) {
- self.matches[index] = set
- cb()
- }
- })
- })
-}
+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;
+ });
-Glob.prototype._mark = function (p) {
- return common.mark(this, p)
-}
+ return function hardlinksWork(_x32) {
+ return _ref32.apply(this, arguments);
+ };
+})();
-Glob.prototype._makeAbs = function (f) {
- return common.makeAbs(this, f)
-}
+// not a strict polyfill for Node's fs.mkdtemp
-Glob.prototype.abort = function () {
- this.aborted = true
- this.emit('abort')
-}
-Glob.prototype.pause = function () {
- if (!this.paused) {
- this.paused = true
- this.emit('pause')
- }
-}
+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;
+ });
-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])
+ return function makeTempDir(_x33) {
+ return _ref33.apply(this, arguments);
+ };
+})();
+
+let readFirstAvailableStream = exports.readFirstAvailableStream = (() => {
+ var _ref34 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths) {
+ for (var _iterator15 = paths, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) {
+ var _ref35;
+
+ if (_isArray15) {
+ if (_i15 >= _iterator15.length) break;
+ _ref35 = _iterator15[_i15++];
+ } else {
+ _i15 = _iterator15.next();
+ if (_i15.done) break;
+ _ref35 = _i15.value;
+ }
+
+ const path = _ref35;
+
+ try {
+ const fd = yield open(path, 'r');
+ return (_fs || _load_fs()).default.createReadStream(path, { fd });
+ } catch (err) {
+ // Try the next one
}
}
- }
-}
+ return null;
+ });
-Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
- assert(this instanceof Glob)
- assert(typeof cb === 'function')
+ return function readFirstAvailableStream(_x34) {
+ return _ref34.apply(this, arguments);
+ };
+})();
- if (this.aborted)
- return
+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
+ };
- this._processing++
- if (this.paused) {
- this._processQueue.push([pattern, index, inGlobStar, cb])
- return
- }
+ for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) {
+ var _ref37;
- //console.error('PROCESS %d', this._processing, pattern)
+ if (_isArray16) {
+ if (_i16 >= _iterator16.length) break;
+ _ref37 = _iterator16[_i16++];
+ } else {
+ _i16 = _iterator16.next();
+ if (_i16.done) break;
+ _ref37 = _i16.value;
+ }
- // 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.
+ const folder = _ref37;
- // 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
+ try {
+ yield mkdirp(folder);
+ yield access(folder, mode);
- case 0:
- // pattern *starts* with some non-trivial item.
- // going to readdir(cwd), but not include the prefix in matches.
- prefix = null
- break
+ result.folder = folder;
- 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 result;
+ } catch (error) {
+ result.skipped.push({
+ error,
+ folder
+ });
+ }
+ }
+ return result;
+ });
- var remain = pattern.slice(n)
+ return function getFirstSuitableFolder(_x35) {
+ return _ref36.apply(this, arguments);
+ };
+})();
- // 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
+exports.copy = copy;
+exports.readFile = readFile;
+exports.readFileRaw = readFileRaw;
+exports.normalizeOS = normalizeOS;
- var abs = this._makeAbs(read)
+var _fs;
- //if ignored, skip _processing
- if (childrenIgnored(this, read))
- return cb()
+function _load_fs() {
+ return _fs = _interopRequireDefault(__webpack_require__(3));
+}
- 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)
+var _glob;
+
+function _load_glob() {
+ return _glob = _interopRequireDefault(__webpack_require__(75));
}
-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)
- })
+var _os;
+
+function _load_os() {
+ return _os = _interopRequireDefault(__webpack_require__(36));
}
-Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+var _path;
- // if the abs isn't a dir, then nothing can match!
- if (!entries)
- return cb()
+function _load_path() {
+ return _path = _interopRequireDefault(__webpack_require__(0));
+}
- // 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 _blockingQueue;
- 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)
- }
- }
+function _load_blockingQueue() {
+ return _blockingQueue = _interopRequireDefault(__webpack_require__(84));
+}
- //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
+var _promise;
- var len = matchedEntries.length
- // If there are no matched entries, then nothing matches.
- if (len === 0)
- return cb()
+function _load_promise() {
+ return _promise = _interopRequireWildcard(__webpack_require__(40));
+}
- // 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.
+var _promise2;
- if (remain.length === 1 && !this.mark && !this.stat) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
+function _load_promise2() {
+ return _promise2 = __webpack_require__(40);
+}
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- if (prefix) {
- if (prefix !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
+var _map;
- 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()
- }
+function _load_map() {
+ return _map = _interopRequireDefault(__webpack_require__(20));
+}
- // 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()
+var _fsNormalized;
+
+function _load_fsNormalized() {
+ return _fsNormalized = __webpack_require__(164);
}
-Glob.prototype._emitMatch = function (index, e) {
- if (this.aborted)
- return
+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; } }
- if (isIgnored(this, e))
- return
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- if (this.paused) {
- this._emitQueue.push([index, e])
- return
- }
+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
+};
- var abs = isAbsolute(e) ? e : this._makeAbs(e)
+const lockQueue = exports.lockQueue = new (_blockingQueue || _load_blockingQueue()).default('fs lock');
- if (this.mark)
- e = this._mark(e)
+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 (this.absolute)
- e = abs
+// 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.
- if (this.matches[index][e])
- return
+const CONCURRENT_QUEUE_ITEMS = (_fs || _load_fs()).default.copyFile ? 128 : 4;
- if (this.nodir) {
- var c = this.cache[abs]
- if (c === 'DIR' || Array.isArray(c))
- return
- }
+const fsSymlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.symlink);
+const invariant = __webpack_require__(7);
+const stripBOM = __webpack_require__(122);
- this.matches[index][e] = true
+const noop = () => {};
- var st = this.statCache[abs]
- if (st)
- this.emit('stat', e, st)
+function copy(src, dest, reporter) {
+ return copyBulk([{ src, dest }], reporter);
+}
- this.emit('match', e)
+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);
+ }
+ });
+ });
}
-Glob.prototype._readdirInGlobStar = function (abs, cb) {
- if (this.aborted)
- return
+function readFile(loc) {
+ return _readFile(loc, 'utf8').then(normalizeOS);
+}
- // follow all symlinked directories forever
- // just proceed as if this is a non-globstar situation
- if (this.follow)
- return this._readdir(abs, false, cb)
+function readFileRaw(loc) {
+ return _readFile(loc, 'binary');
+}
- var lstatkey = 'lstat\0' + abs
- var self = this
- var lstatcb = inflight(lstatkey, lstatcb_)
+function normalizeOS(body) {
+ return body.replace(/\r\n/g, '\n');
+}
- if (lstatcb)
- fs.lstat(abs, lstatcb)
+const cr = '\r'.charCodeAt(0);
+const lf = '\n'.charCodeAt(0);
- function lstatcb_ (er, lstat) {
- if (er && er.code === 'ENOENT')
- return cb()
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
- var isSym = lstat && lstat.isSymbolicLink()
- self.symlinks[abs] = isSym
+"use strict";
- // 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)
- }
-}
-Glob.prototype._readdir = function (abs, inGlobStar, cb) {
- if (this.aborted)
- return
+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;
- cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
- if (!cb)
- return
+var _require = __webpack_require__(171);
- //console.error('RD %j %j', +inGlobStar, abs)
- if (inGlobStar && !ownProp(this.symlinks, abs))
- return this._readdirInGlobStar(abs, cb)
+const getCacheDir = _require.getCacheDir,
+ getConfigDir = _require.getConfigDir,
+ getDataDir = _require.getDataDir;
- if (ownProp(this.cache, abs)) {
- var c = this.cache[abs]
- if (!c || c === 'FILE')
- return cb()
+const isWebpackBundle = __webpack_require__(227);
- if (Array.isArray(c))
- return cb(null, c)
- }
+const DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies'];
+const RESOLUTIONS = exports.RESOLUTIONS = 'resolutions';
+const MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS, ...DEPENDENCY_TYPES];
- var self = this
- fs.readdir(abs, readdirCb(this, abs, cb))
-}
+const SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0';
-function readdirCb (self, abs, cb) {
- return function (er, entries) {
- if (er)
- self._readdirError(abs, er, cb)
- else
- self._readdirEntries(abs, entries, cb)
- }
-}
+const YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com';
-Glob.prototype._readdirEntries = function (abs, entries, cb) {
- if (this.aborted)
- return
+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';
- // 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
- }
- }
+const SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version';
- this.cache[abs] = entries
- return cb(null, entries)
-}
+// cache version, bump whenever we make backwards incompatible changes
+const CACHE_VERSION = exports.CACHE_VERSION = 2;
-Glob.prototype._readdirError = function (f, er, cb) {
- if (this.aborted)
- return
+// lockfile version, bump whenever we make backwards incompatible changes
+const LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 1;
- // 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
+// max amount of network requests to perform concurrently
+const NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8;
- case 'ENOENT': // not terribly unusual
- case 'ELOOP':
- case 'ENAMETOOLONG':
- case 'UNKNOWN':
- this.cache[this._makeAbs(f)] = false
- break
+// HTTP timeout used when downloading packages
+const NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds
- 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
+// max amount of child processes to execute concurrently
+const CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5;
+
+const REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid'];
+
+function getPreferredCacheDirectories() {
+ const preferredCacheDirectories = [getCacheDir()];
+
+ if (process.getuid) {
+ // $FlowFixMe: process.getuid exists, dammit
+ preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`));
}
- return cb()
-}
+ preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`));
-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)
- })
+ return preferredCacheDirectories;
}
+const PREFERRED_MODULE_CACHE_DIRECTORIES = exports.PREFERRED_MODULE_CACHE_DIRECTORIES = getPreferredCacheDirectories();
+const CONFIG_DIRECTORY = exports.CONFIG_DIRECTORY = getConfigDir();
+const DATA_DIRECTORY = exports.DATA_DIRECTORY = getDataDir();
+const LINK_REGISTRY_DIRECTORY = exports.LINK_REGISTRY_DIRECTORY = path.join(DATA_DIRECTORY, 'link');
+const GLOBAL_MODULE_DIRECTORY = exports.GLOBAL_MODULE_DIRECTORY = path.join(DATA_DIRECTORY, 'global');
-Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
- //console.error('pgs2', prefix, remain[0], entries)
+const NODE_BIN_PATH = exports.NODE_BIN_PATH = process.execPath;
+const YARN_BIN_PATH = exports.YARN_BIN_PATH = getYarnBinPath();
- // no entries means not a dir, so it can never have matches
- // foo.txt/** doesn't match foo.txt
- if (!entries)
- return cb()
+// Webpack needs to be configured with node.__dirname/__filename = false
+function getYarnBinPath() {
+ if (isWebpackBundle) {
+ return __filename;
+ } else {
+ return path.join(__dirname, '..', 'bin', 'yarn.js');
+ }
+}
- // 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)
+const NODE_MODULES_FOLDER = exports.NODE_MODULES_FOLDER = 'node_modules';
+const NODE_PACKAGE_JSON = exports.NODE_PACKAGE_JSON = 'package.json';
- // the noGlobStar pattern exits the inGlobStar state
- this._process(noGlobStar, index, false, cb)
+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');
- var isSym = this.symlinks[abs]
- var len = entries.length
+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';
- // If it's a symlink, and we're in a globstar, then stop
- if (isSym && inGlobStar)
- return cb()
+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';
- for (var i = 0; i < len; i++) {
- var e = entries[i]
- if (e.charAt(0) === '.' && !this.dot)
- continue
+const ENV_PATH_KEY = exports.ENV_PATH_KEY = getPathKey(process.platform, process.env);
- // these two cases enter the inGlobStar state
- var instead = gspref.concat(entries[i], remainWithoutGlobStar)
- this._process(instead, index, true, cb)
+function getPathKey(platform, env) {
+ let pathKey = 'PATH';
- var below = gspref.concat(entries[i], remain)
- this._process(below, index, true, cb)
+ // 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;
+ }
+ }
}
- cb()
+ return pathKey;
}
-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) {
+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'
+};
- //console.error('ps2', prefix, exists)
+/***/ }),
+/* 7 */
+/***/ (function(module, exports, __webpack_require__) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
+"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.
+ */
- // 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)
+
+/**
+ * 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 = "none";
+
+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 {
- prefix = path.resolve(this.root, prefix)
- if (trail)
- prefix += '/'
+ 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;
}
+};
- if (process.platform === 'win32')
- prefix = prefix.replace(/\\/g, '/')
+module.exports = invariant;
- // 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) === '/'
+/***/ }),
+/* 8 */,
+/* 9 */
+/***/ (function(module, exports) {
- if (f.length > this.maxLength)
- return cb()
+module.exports = __webpack_require__(254);
- if (!this.stat && ownProp(this.cache, abs)) {
- var c = this.cache[abs]
+/***/ }),
+/* 10 */,
+/* 11 */
+/***/ (function(module, exports) {
- if (Array.isArray(c))
- c = 'DIR'
+// 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
- // It exists, but maybe not how we need it
- if (!needDir || c === 'DIR')
- return cb(null, c)
- if (needDir && c === 'FILE')
- return cb()
+/***/ }),
+/* 12 */
+/***/ (function(module, exports, __webpack_require__) {
- // otherwise we have to stat, because maybe c=true
- // if we know it exists, but not what it is.
- }
+"use strict";
- 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)
- }
- }
- var self = this
- var statcb = inflight('stat\0' + abs, lstatcb_)
- if (statcb)
- fs.lstat(abs, statcb)
+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 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 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)
+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;
}
-Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
- if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
- this.statCache[abs] = false
- return cb()
+function entries(obj) {
+ const entries = [];
+ if (obj) {
+ for (const key in obj) {
+ entries.push([key, obj[key]]);
+ }
}
+ return entries;
+}
- var needDir = f.slice(-1) === '/'
- this.statCache[abs] = stat
-
- if (abs.slice(-1) === '/' && stat && !stat.isDirectory())
- return cb(null, false, stat)
+function removePrefix(pattern, prefix) {
+ if (pattern.startsWith(prefix)) {
+ pattern = pattern.slice(prefix.length);
+ }
- var c = true
- if (stat)
- c = stat.isDirectory() ? 'DIR' : 'FILE'
- this.cache[abs] = this.cache[abs] || c
+ return pattern;
+}
- if (needDir && c === 'FILE')
- return cb()
+function removeSuffix(pattern, suffix) {
+ if (pattern.endsWith(suffix)) {
+ return pattern.slice(0, -suffix.length);
+ }
- return cb(null, c, stat)
+ return pattern;
}
+function addSuffix(pattern, suffix) {
+ if (!pattern.endsWith(suffix)) {
+ return pattern + suffix;
+ }
-/***/ }),
-/* 76 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
+ return pattern;
+}
+function hyphenate(str) {
+ return str.replace(/[A-Z]/g, match => {
+ return '-' + match.charAt(0).toLowerCase();
+ });
+}
-function posix(path) {
- return path.charAt(0) === '/';
+function camelCase(str) {
+ if (/[A-Z]/.test(str)) {
+ return null;
+ } else {
+ return _camelCase(str);
+ }
}
-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) !== ':');
+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;
+}
- // UNC paths are always absolute
- return Boolean(result[2] || isUnc);
+function sleep(ms) {
+ return new Promise(resolve => {
+ setTimeout(resolve, ms);
+ });
}
-module.exports = process.platform === 'win32' ? win32 : posix;
-module.exports.posix = posix;
-module.exports.win32 = win32;
+/***/ }),
+/* 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));
+};
-/***/ }),
-/* 77 */,
-/* 78 */,
-/* 79 */
-/***/ (function(module, exports) {
+$exports.store = store;
-module.exports = __webpack_require__(123);
/***/ }),
-/* 80 */,
-/* 81 */
+/* 14 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -46244,459 +46033,369 @@ module.exports = __webpack_require__(123);
Object.defineProperty(exports, "__esModule", {
value: true
});
+exports.stringify = exports.parse = undefined;
-exports.default = function (str, fileLoc = 'lockfile') {
- str = (0, (_stripBom || _load_stripBom()).default)(str);
- return hasMergeConflicts(str) ? parseWithConflict(str, fileLoc) : { type: 'success', object: parse(str, fileLoc) };
-};
-
-var _util;
+var _asyncToGenerator2;
-function _load_util() {
- return _util = _interopRequireDefault(__webpack_require__(2));
+function _load_asyncToGenerator() {
+ return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1));
}
-var _invariant;
+var _parse;
-function _load_invariant() {
- return _invariant = _interopRequireDefault(__webpack_require__(7));
+function _load_parse() {
+ return _parse = __webpack_require__(81);
}
-var _stripBom;
-
-function _load_stripBom() {
- return _stripBom = _interopRequireDefault(__webpack_require__(122));
-}
+Object.defineProperty(exports, 'parse', {
+ enumerable: true,
+ get: function get() {
+ return _interopRequireDefault(_parse || _load_parse()).default;
+ }
+});
-var _constants;
+var _stringify;
-function _load_constants() {
- return _constants = __webpack_require__(6);
+function _load_stringify() {
+ return _stringify = __webpack_require__(150);
}
-var _errors;
+Object.defineProperty(exports, 'stringify', {
+ enumerable: true,
+ get: function get() {
+ return _interopRequireDefault(_stringify || _load_stringify()).default;
+ }
+});
+exports.implodeEntry = implodeEntry;
+exports.explodeEntry = explodeEntry;
-function _load_errors() {
- return _errors = __webpack_require__(4);
+var _misc;
+
+function _load_misc() {
+ return _misc = __webpack_require__(12);
}
-var _map;
+var _normalizePattern;
-function _load_map() {
- return _map = _interopRequireDefault(__webpack_require__(20));
+function _load_normalizePattern() {
+ return _normalizePattern = __webpack_require__(29);
}
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+var _parse2;
-/* eslint quotes: 0 */
+function _load_parse2() {
+ return _parse2 = _interopRequireDefault(__webpack_require__(81));
+}
-const VERSION_REGEX = /^yarn lockfile v(\d+)$/;
+var _constants;
-const TOKEN_TYPES = {
- boolean: 'BOOLEAN',
- string: 'STRING',
- identifier: 'IDENTIFIER',
- eof: 'EOF',
- colon: 'COLON',
- newline: 'NEWLINE',
- comment: 'COMMENT',
- indent: 'INDENT',
- invalid: 'INVALID',
- number: 'NUMBER',
- comma: 'COMMA'
-};
+function _load_constants() {
+ return _constants = __webpack_require__(6);
+}
-const VALID_PROP_VALUE_TOKENS = [TOKEN_TYPES.boolean, TOKEN_TYPES.string, TOKEN_TYPES.number];
+var _fs;
-function isValidPropValueToken(token) {
- return VALID_PROP_VALUE_TOKENS.indexOf(token.type) >= 0;
+function _load_fs() {
+ return _fs = _interopRequireWildcard(__webpack_require__(5));
}
-function* tokenise(input) {
- let lastNewline = false;
- let line = 1;
- let col = 0;
+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 buildToken(type, value) {
- return { line, col, type, value };
- }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- while (input.length) {
- let chop = 0;
+const invariant = __webpack_require__(7);
- if (input[0] === '\n' || input[0] === '\r') {
- chop++;
- // If this is a \r\n line, ignore both chars but only add one new line
- if (input[1] === '\n') {
- chop++;
- }
- line++;
- col = 0;
- yield buildToken(TOKEN_TYPES.newline);
- } else if (input[0] === '#') {
- chop++;
+const path = __webpack_require__(0);
+const ssri = __webpack_require__(55);
- let val = '';
- while (input[chop] !== '\n') {
- val += input[chop];
- chop++;
- }
- yield buildToken(TOKEN_TYPES.comment, val);
- } else if (input[0] === ' ') {
- if (lastNewline) {
- let indent = '';
- for (let i = 0; input[i] === ' '; i++) {
- indent += input[i];
- }
+function getName(pattern) {
+ return (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern).name;
+}
- if (indent.length % 2) {
- throw new TypeError('Invalid number of spaces');
- } else {
- chop = indent.length;
- yield buildToken(TOKEN_TYPES.indent, indent.length / 2);
- }
- } else {
- chop++;
- }
- } else if (input[0] === '"') {
- let val = '';
+function blankObjectUndefined(obj) {
+ return obj && Object.keys(obj).length ? obj : undefined;
+}
- for (let i = 0;; i++) {
- const currentChar = input[i];
- val += currentChar;
+function keyForRemote(remote) {
+ return remote.resolved || (remote.reference && remote.hash ? `${remote.reference}#${remote.hash}` : null);
+}
- if (i > 0 && currentChar === '"') {
- const isEscaped = input[i - 1] === '\\' && input[i - 2] !== '\\';
- if (!isEscaped) {
- break;
- }
- }
- }
+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(' ');
+}
- chop = val.length;
+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;
+}
- try {
- yield buildToken(TOKEN_TYPES.string, JSON.parse(val));
- } catch (err) {
- if (err instanceof SyntaxError) {
- yield buildToken(TOKEN_TYPES.invalid);
- } else {
- throw err;
- }
- }
- } else if (/^[0-9]/.test(input)) {
- let val = '';
- for (let i = 0; /^[0-9]$/.test(input[i]); i++) {
- val += input[i];
- }
- chop = val.length;
+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;
+ }
- yield buildToken(TOKEN_TYPES.number, +val);
- } else if (/^true/.test(input)) {
- yield buildToken(TOKEN_TYPES.boolean, true);
- chop = 4;
- } else if (/^false/.test(input)) {
- yield buildToken(TOKEN_TYPES.boolean, false);
- chop = 5;
- } else if (input[0] === ':') {
- yield buildToken(TOKEN_TYPES.colon);
- chop++;
- } else if (input[0] === ',') {
- yield buildToken(TOKEN_TYPES.comma);
- chop++;
- } else if (/^[a-zA-Z\/-]/g.test(input)) {
- let name = '';
- for (let i = 0; i < input.length; i++) {
- const char = input[i];
- if (char === ':' || char === ' ' || char === '\n' || char === '\r' || char === ',') {
- break;
- } else {
- name += char;
- }
- }
- chop = name.length;
+ // source string if the `cache` was parsed
- yield buildToken(TOKEN_TYPES.string, name);
- } else {
- yield buildToken(TOKEN_TYPES.invalid);
+
+ // if true, we're parsing an old yarn file and need to update integrity fields
+ hasEntriesExistWithoutIntegrity() {
+ if (!this.cache) {
+ return false;
}
- if (!chop) {
- // will trigger infinite recursion
- yield buildToken(TOKEN_TYPES.invalid);
+ 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;
+ }
}
- col += chop;
- lastNewline = input[0] === '\n' || input[0] === '\r' && input[1] === '\n';
- input = input.slice(chop);
+ return false;
}
- yield buildToken(TOKEN_TYPES.eof);
-}
+ 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);
-class Parser {
- constructor(input, fileLoc = 'lockfile') {
- this.comments = [];
- this.tokens = tokenise(input);
- this.fileLoc = fileLoc;
- }
+ let lockfile;
+ let rawLockfile = '';
+ let parseResult;
- onComment(token) {
- const value = token.value;
- (0, (_invariant || _load_invariant()).default)(typeof value === 'string', 'expected token value to be a string');
+ if (yield (_fs || _load_fs()).exists(lockfileLoc)) {
+ rawLockfile = yield (_fs || _load_fs()).readFile(lockfileLoc);
+ parseResult = (0, (_parse2 || _load_parse2()).default)(rawLockfile, lockfileLoc);
- const comment = value.trim();
+ if (reporter) {
+ if (parseResult.type === 'merge') {
+ reporter.info(reporter.lang('lockfileMerged'));
+ } else if (parseResult.type === 'conflict') {
+ reporter.warn(reporter.lang('lockfileConflict'));
+ }
+ }
- const versionMatch = comment.match(VERSION_REGEX);
- if (versionMatch) {
- const version = +versionMatch[1];
- if (version > (_constants || _load_constants()).LOCKFILE_VERSION) {
- throw new (_errors || _load_errors()).MessageError(`Can't install from a lockfile of version ${version} as you're on an old yarn version that only supports ` + `versions up to ${(_constants || _load_constants()).LOCKFILE_VERSION}. Run \`$ yarn self-update\` to upgrade to the latest version.`);
+ lockfile = parseResult.object;
+ } else if (reporter) {
+ reporter.info(reporter.lang('noLockfileFound'));
}
- }
- this.comments.push(comment);
+ return new Lockfile({ cache: lockfile, source: rawLockfile, parseResultType: parseResult && parseResult.type });
+ })();
}
- next() {
- const item = this.tokens.next();
- (0, (_invariant || _load_invariant()).default)(item, 'expected a token');
-
- const done = item.done,
- value = item.value;
-
- if (done || !value) {
- throw new Error('No more tokens');
- } else if (value.type === TOKEN_TYPES.comment) {
- this.onComment(value);
- return this.next();
- } else {
- return this.token = value;
+ getLocked(pattern) {
+ const cache = this.cache;
+ if (!cache) {
+ return undefined;
}
- }
- unexpected(msg = 'Unexpected token') {
- throw new SyntaxError(`${msg} ${this.token.line}:${this.token.col} in ${this.fileLoc}`);
- }
+ const shrunk = pattern in cache && cache[pattern];
- expect(tokType) {
- if (this.token.type === tokType) {
- this.next();
- } else {
- this.unexpected();
+ if (typeof shrunk === 'string') {
+ return this.getLocked(shrunk);
+ } else if (shrunk) {
+ explodeEntry(pattern, shrunk);
+ return shrunk;
}
+
+ return undefined;
}
- eat(tokType) {
- if (this.token.type === tokType) {
- this.next();
- return true;
- } else {
- return false;
+ removePattern(pattern) {
+ const cache = this.cache;
+ if (!cache) {
+ return;
}
+ delete cache[pattern];
}
- parse(indent = 0) {
- const obj = (0, (_map || _load_map()).default)();
+ getLockfile(patterns) {
+ const lockfile = {};
+ const seen = new Map();
- while (true) {
- const propToken = this.token;
+ // 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);
- if (propToken.type === TOKEN_TYPES.newline) {
- const nextToken = this.next();
- if (!indent) {
- // if we have 0 indentation then the next token doesn't matter
- continue;
- }
+ for (var _iterator = sortedPatternsKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
+ var _ref;
- if (nextToken.type !== TOKEN_TYPES.indent) {
- // if we have no indentation after a newline then we've gone down a level
- break;
- }
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
- if (nextToken.value === indent) {
- // all is good, the indent is on our level
- this.next();
- } else {
- // the indentation is less than our level
- break;
- }
- } else if (propToken.type === TOKEN_TYPES.indent) {
- if (propToken.value === indent) {
- this.next();
- } else {
- break;
- }
- } else if (propToken.type === TOKEN_TYPES.eof) {
- break;
- } else if (propToken.type === TOKEN_TYPES.string) {
- // property key
- const key = propToken.value;
- (0, (_invariant || _load_invariant()).default)(key, 'Expected a key');
+ const pattern = _ref;
- const keys = [key];
- this.next();
+ const pkg = patterns[pattern];
+ const remote = pkg._remote,
+ ref = pkg._reference;
- // support multiple keys
- while (this.token.type === TOKEN_TYPES.comma) {
- this.next(); // skip comma
+ invariant(ref, 'Package is missing a reference');
+ invariant(remote, 'Package is missing a remote');
- const keyToken = this.token;
- if (keyToken.type !== TOKEN_TYPES.string) {
- this.unexpected('Expected string');
- }
+ const remoteKey = keyForRemote(remote);
+ const seenPattern = remoteKey && seen.get(remoteKey);
+ if (seenPattern) {
+ // no point in duplicating it
+ lockfile[pattern] = seenPattern;
- const key = keyToken.value;
- (0, (_invariant || _load_invariant()).default)(key, 'Expected a key');
- keys.push(key);
- this.next();
+ // if we're relying on our name being inferred and two of the patterns have
+ // different inferred names then we need to set it
+ if (!seenPattern.name && getName(pattern) !== pkg.name) {
+ seenPattern.name = pkg.name;
}
+ continue;
+ }
+ const obj = implodeEntry(pattern, {
+ name: pkg.name,
+ version: pkg.version,
+ uid: pkg._uid,
+ resolved: remote.resolved,
+ integrity: remote.integrity,
+ registry: remote.registry,
+ dependencies: pkg.dependencies,
+ peerDependencies: pkg.peerDependencies,
+ optionalDependencies: pkg.optionalDependencies,
+ permissions: ref.permissions,
+ prebuiltVariants: pkg.prebuiltVariants
+ });
- const valToken = this.token;
-
- if (valToken.type === TOKEN_TYPES.colon) {
- // object
- this.next();
-
- // parse object
- const val = this.parse(indent + 1);
+ lockfile[pattern] = obj;
- for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
+ if (remoteKey) {
+ seen.set(remoteKey, obj);
+ }
+ }
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
+ return lockfile;
+ }
+}
+exports.default = Lockfile;
- const key = _ref;
+/***/ }),
+/* 15 */,
+/* 16 */,
+/* 17 */
+/***/ (function(module, exports) {
- obj[key] = val;
- }
+module.exports = __webpack_require__(294);
- if (indent && this.token.type !== TOKEN_TYPES.indent) {
- break;
- }
- } else if (isValidPropValueToken(valToken)) {
- // plain value
- for (var _iterator2 = keys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
+/***/ }),
+/* 18 */,
+/* 19 */,
+/* 20 */
+/***/ (function(module, exports, __webpack_require__) {
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref2 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref2 = _i2.value;
- }
+"use strict";
- const key = _ref2;
- obj[key] = valToken.value;
- }
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = nullify;
+function nullify(obj = {}) {
+ if (Array.isArray(obj)) {
+ for (var _iterator = obj, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
+ var _ref;
- this.next();
- } else {
- this.unexpected('Invalid value type');
- }
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
} else {
- this.unexpected(`Unknown token: ${(_util || _load_util()).default.inspect(propToken)}`);
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
}
+
+ const item = _ref;
+
+ nullify(item);
}
+ } else if (obj !== null && typeof obj === 'object' || typeof obj === 'function') {
+ Object.setPrototypeOf(obj, null);
- return obj;
+ // for..in can only be applied to 'object', not 'function'
+ if (typeof obj === 'object') {
+ for (const key in obj) {
+ nullify(obj[key]);
+ }
+ }
}
+
+ return obj;
}
-const MERGE_CONFLICT_ANCESTOR = '|||||||';
-const MERGE_CONFLICT_END = '>>>>>>>';
-const MERGE_CONFLICT_SEP = '=======';
-const MERGE_CONFLICT_START = '<<<<<<<';
+/***/ }),
+/* 21 */,
+/* 22 */
+/***/ (function(module, exports) {
-/**
- * Extract the two versions of the lockfile from a merge conflict.
- */
-function extractConflictVariants(str) {
- const variants = [[], []];
- const lines = str.split(/\r?\n/g);
- let skip = false;
+module.exports = __webpack_require__(283);
- while (lines.length) {
- const line = lines.shift();
- if (line.startsWith(MERGE_CONFLICT_START)) {
- // get the first variant
- while (lines.length) {
- const conflictLine = lines.shift();
- if (conflictLine === MERGE_CONFLICT_SEP) {
- skip = false;
- break;
- } else if (skip || conflictLine.startsWith(MERGE_CONFLICT_ANCESTOR)) {
- skip = true;
- continue;
- } else {
- variants[0].push(conflictLine);
- }
- }
+/***/ }),
+/* 23 */
+/***/ (function(module, exports) {
- // get the second variant
- while (lines.length) {
- const conflictLine = lines.shift();
- if (conflictLine.startsWith(MERGE_CONFLICT_END)) {
- break;
- } else {
- variants[1].push(conflictLine);
- }
- }
- } else {
- variants[0].push(line);
- variants[1].push(line);
- }
- }
+var core = module.exports = { version: '2.5.7' };
+if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
- return [variants[0].join('\n'), variants[1].join('\n')];
-}
-/**
- * Check if a lockfile has merge conflicts.
- */
-function hasMergeConflicts(str) {
- return str.includes(MERGE_CONFLICT_START) && str.includes(MERGE_CONFLICT_SEP) && str.includes(MERGE_CONFLICT_END);
-}
+/***/ }),
+/* 24 */,
+/* 25 */,
+/* 26 */,
+/* 27 */
+/***/ (function(module, exports, __webpack_require__) {
-/**
- * Parse the lockfile.
- */
-function parse(str, fileLoc) {
- const parser = new Parser(str, fileLoc);
- parser.next();
- return parser.parse();
-}
+var isObject = __webpack_require__(34);
+module.exports = function (it) {
+ if (!isObject(it)) throw TypeError(it + ' is not an object!');
+ return it;
+};
-/**
- * Parse and merge the two variants in a conflicted lockfile.
- */
-function parseWithConflict(str, fileLoc) {
- const variants = extractConflictVariants(str);
- try {
- return { type: 'merge', object: Object.assign({}, parse(variants[0], fileLoc), parse(variants[1], fileLoc)) };
- } catch (err) {
- if (err instanceof SyntaxError) {
- return { type: 'conflict', object: {} };
- } else {
- throw err;
- }
- }
-}
/***/ }),
-/* 82 */,
-/* 83 */,
-/* 84 */
+/* 28 */,
+/* 29 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -46705,12303 +46404,9998 @@ function parseWithConflict(str, fileLoc) {
Object.defineProperty(exports, "__esModule", {
value: true
});
+exports.normalizePattern = normalizePattern;
-var _map;
-
-function _load_map() {
- return _map = _interopRequireDefault(__webpack_require__(20));
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const debug = __webpack_require__(212)('yarn');
-
-class BlockingQueue {
- constructor(alias, maxConcurrency = Infinity) {
- this.concurrencyQueue = [];
- this.maxConcurrency = maxConcurrency;
- this.runningCount = 0;
- this.warnedStuck = false;
- this.alias = alias;
- this.first = true;
-
- this.running = (0, (_map || _load_map()).default)();
- this.queue = (0, (_map || _load_map()).default)();
-
- this.stuckTick = this.stuckTick.bind(this);
- }
-
- stillActive() {
- if (this.stuckTimer) {
- clearTimeout(this.stuckTimer);
- }
+/**
+ * Explode and normalize a pattern into its name and range.
+ */
- this.stuckTimer = setTimeout(this.stuckTick, 5000);
+function normalizePattern(pattern) {
+ let hasVersion = false;
+ let range = 'latest';
+ let name = pattern;
- // We need to check the existence of unref because of https://github.com/facebook/jest/issues/4559
- // $FlowFixMe: Node's setInterval returns a Timeout, not a Number
- this.stuckTimer.unref && this.stuckTimer.unref();
+ // if we're a scope then remove the @ and add it back later
+ let isScoped = false;
+ if (name[0] === '@') {
+ isScoped = true;
+ name = name.slice(1);
}
- stuckTick() {
- if (this.runningCount === 1) {
- this.warnedStuck = true;
- debug(`The ${JSON.stringify(this.alias)} blocking queue may be stuck. 5 seconds ` + `without any activity with 1 worker: ${Object.keys(this.running)[0]}`);
- }
- }
+ // take first part as the name
+ const parts = name.split('@');
+ if (parts.length > 1) {
+ name = parts.shift();
+ range = parts.join('@');
- push(key, factory) {
- if (this.first) {
- this.first = false;
+ if (range) {
+ hasVersion = true;
} else {
- this.stillActive();
+ range = '*';
}
-
- return new Promise((resolve, reject) => {
- // we're already running so push ourselves to the queue
- const queue = this.queue[key] = this.queue[key] || [];
- queue.push({ factory, resolve, reject });
-
- if (!this.running[key]) {
- this.shift(key);
- }
- });
}
- shift(key) {
- if (this.running[key]) {
- delete this.running[key];
- this.runningCount--;
-
- if (this.stuckTimer) {
- clearTimeout(this.stuckTimer);
- this.stuckTimer = null;
- }
+ // add back @ scope suffix
+ if (isScoped) {
+ name = `@${name}`;
+ }
- if (this.warnedStuck) {
- this.warnedStuck = false;
- debug(`${JSON.stringify(this.alias)} blocking queue finally resolved. Nothing to worry about.`);
- }
- }
+ return { name, range, hasVersion };
+}
- const queue = this.queue[key];
- if (!queue) {
- return;
- }
+/***/ }),
+/* 30 */,
+/* 31 */
+/***/ (function(module, exports, __webpack_require__) {
- var _queue$shift = queue.shift();
+var dP = __webpack_require__(50);
+var createDesc = __webpack_require__(106);
+module.exports = __webpack_require__(33) ? function (object, key, value) {
+ return dP.f(object, key, createDesc(1, value));
+} : function (object, key, value) {
+ object[key] = value;
+ return object;
+};
- const resolve = _queue$shift.resolve,
- reject = _queue$shift.reject,
- factory = _queue$shift.factory;
- if (!queue.length) {
- delete this.queue[key];
- }
+/***/ }),
+/* 32 */
+/***/ (function(module, exports, __webpack_require__) {
- const next = () => {
- this.shift(key);
- this.shiftConcurrencyQueue();
- };
+/* eslint-disable node/no-deprecated-api */
+var buffer = __webpack_require__(63)
+var Buffer = buffer.Buffer
- const run = () => {
- this.running[key] = true;
- this.runningCount++;
+// alternative to using Object.keys for old browsers
+function copyProps (src, dst) {
+ for (var key in src) {
+ dst[key] = src[key]
+ }
+}
+if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
+ module.exports = buffer
+} else {
+ // Copy properties from require('buffer')
+ copyProps(buffer, exports)
+ exports.Buffer = SafeBuffer
+}
- factory().then(function (val) {
- resolve(val);
- next();
- return null;
- }).catch(function (err) {
- reject(err);
- next();
- });
- };
+function SafeBuffer (arg, encodingOrOffset, length) {
+ return Buffer(arg, encodingOrOffset, length)
+}
- this.maybePushConcurrencyQueue(run);
+// Copy static methods from Buffer
+copyProps(Buffer, SafeBuffer)
+
+SafeBuffer.from = function (arg, encodingOrOffset, length) {
+ if (typeof arg === 'number') {
+ throw new TypeError('Argument must not be a number')
}
+ return Buffer(arg, encodingOrOffset, length)
+}
- maybePushConcurrencyQueue(run) {
- if (this.runningCount < this.maxConcurrency) {
- run();
+SafeBuffer.alloc = function (size, fill, encoding) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
+ }
+ var buf = Buffer(size)
+ if (fill !== undefined) {
+ if (typeof encoding === 'string') {
+ buf.fill(fill, encoding)
} else {
- this.concurrencyQueue.push(run);
+ buf.fill(fill)
}
+ } else {
+ buf.fill(0)
}
+ return buf
+}
- shiftConcurrencyQueue() {
- if (this.runningCount < this.maxConcurrency) {
- const fn = this.concurrencyQueue.shift();
- if (fn) {
- fn();
- }
- }
+SafeBuffer.allocUnsafe = function (size) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
}
+ return Buffer(size)
}
-exports.default = BlockingQueue;
-
-/***/ }),
-/* 85 */
-/***/ (function(module, exports) {
-module.exports = function (exec) {
- try {
- return !!exec();
- } catch (e) {
- return true;
+SafeBuffer.allocUnsafeSlow = function (size) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
}
-};
+ return buffer.SlowBuffer(size)
+}
/***/ }),
-/* 86 */,
-/* 87 */,
-/* 88 */,
-/* 89 */,
-/* 90 */,
-/* 91 */,
-/* 92 */,
-/* 93 */,
-/* 94 */,
-/* 95 */,
-/* 96 */,
-/* 97 */,
-/* 98 */,
-/* 99 */,
-/* 100 */
+/* 33 */
/***/ (function(module, exports, __webpack_require__) {
-// getting tag from 19.1.3.6 Object.prototype.toString()
-var cof = __webpack_require__(47);
-var TAG = __webpack_require__(13)('toStringTag');
-// ES3 wrong here
-var ARG = cof(function () { return arguments; }()) == 'Arguments';
+// Thank's IE8 for his funny defineProperty
+module.exports = !__webpack_require__(85)(function () {
+ return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
+});
-// fallback for IE11 Script Access Denied error
-var tryGet = function (it, key) {
- try {
- return it[key];
- } catch (e) { /* empty */ }
-};
+
+/***/ }),
+/* 34 */
+/***/ (function(module, exports) {
module.exports = function (it) {
- var O, T, B;
- return it === undefined ? 'Undefined' : it === null ? 'Null'
- // @@toStringTag case
- : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
- // builtinTag case
- : ARG ? cof(O)
- // ES3 arguments fallback
- : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
};
/***/ }),
-/* 101 */
+/* 35 */
/***/ (function(module, exports) {
-// IE 8- don't enum bug keys
-module.exports = (
- 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
-).split(',');
+module.exports = {};
/***/ }),
-/* 102 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var document = __webpack_require__(11).document;
-module.exports = document && document.documentElement;
+/* 36 */
+/***/ (function(module, exports) {
+module.exports = __webpack_require__(243);
/***/ }),
-/* 103 */
+/* 37 */,
+/* 38 */,
+/* 39 */,
+/* 40 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var LIBRARY = __webpack_require__(69);
-var $export = __webpack_require__(41);
-var redefine = __webpack_require__(197);
-var hide = __webpack_require__(31);
-var Iterators = __webpack_require__(35);
-var $iterCreate = __webpack_require__(188);
-var setToStringTag = __webpack_require__(71);
-var getPrototypeOf = __webpack_require__(194);
-var ITERATOR = __webpack_require__(13)('iterator');
-var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
-var FF_ITERATOR = '@@iterator';
-var KEYS = 'keys';
-var VALUES = 'values';
-var returnThis = function () { return this; };
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.wait = wait;
+exports.promisify = promisify;
+exports.queue = queue;
+function wait(delay) {
+ return new Promise(resolve => {
+ setTimeout(resolve, delay);
+ });
+}
-module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
- $iterCreate(Constructor, NAME, next);
- var getMethod = function (kind) {
- if (!BUGGY && kind in proto) return proto[kind];
- switch (kind) {
- case KEYS: return function keys() { return new Constructor(this, kind); };
- case VALUES: return function values() { return new Constructor(this, kind); };
- } return function entries() { return new Constructor(this, kind); };
- };
- var TAG = NAME + ' Iterator';
- var DEF_VALUES = DEFAULT == VALUES;
- var VALUES_BUG = false;
- var proto = Base.prototype;
- var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
- var $default = $native || getMethod(DEFAULT);
- var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
- var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
- var methods, key, IteratorPrototype;
- // Fix native
- if ($anyNative) {
- IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
- if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
- // Set @@toStringTag to native iterators
- setToStringTag(IteratorPrototype, TAG, true);
- // fix for some old engines
- if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
- }
- }
- // fix Array#{values, @@iterator}.name in V8 / FF
- if (DEF_VALUES && $native && $native.name !== VALUES) {
- VALUES_BUG = true;
- $default = function values() { return $native.call(this); };
- }
- // Define iterator
- if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
- hide(proto, ITERATOR, $default);
- }
- // Plug for library
- Iterators[NAME] = $default;
- Iterators[TAG] = returnThis;
- if (DEFAULT) {
- methods = {
- values: DEF_VALUES ? $default : getMethod(VALUES),
- keys: IS_SET ? $default : getMethod(KEYS),
- entries: $entries
- };
- if (FORCED) for (key in methods) {
- if (!(key in proto)) redefine(proto, key, methods[key]);
- } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
- }
- return methods;
-};
+function promisify(fn, firstData) {
+ return function (...args) {
+ return new Promise(function (resolve, reject) {
+ args.push(function (err, ...result) {
+ let res = result;
+ if (result.length <= 1) {
+ res = result[0];
+ }
-/***/ }),
-/* 104 */
-/***/ (function(module, exports) {
+ if (firstData) {
+ res = err;
+ err = null;
+ }
-module.exports = function (exec) {
- try {
- return { e: false, v: exec() };
- } catch (e) {
- return { e: true, v: e };
- }
-};
+ if (err) {
+ reject(err);
+ } else {
+ resolve(res);
+ }
+ });
+ fn.apply(null, args);
+ });
+ };
+}
-/***/ }),
-/* 105 */
-/***/ (function(module, exports, __webpack_require__) {
+function queue(arr, promiseProducer, concurrency = Infinity) {
+ concurrency = Math.min(concurrency, arr.length);
-var anObject = __webpack_require__(27);
-var isObject = __webpack_require__(34);
-var newPromiseCapability = __webpack_require__(70);
+ // clone
+ arr = arr.slice();
-module.exports = function (C, x) {
- anObject(C);
- if (isObject(x) && x.constructor === C) return x;
- var promiseCapability = newPromiseCapability.f(C);
- var resolve = promiseCapability.resolve;
- resolve(x);
- return promiseCapability.promise;
-};
+ const results = [];
+ let total = arr.length;
+ if (!total) {
+ return Promise.resolve(results);
+ }
+ return new Promise((resolve, reject) => {
+ for (let i = 0; i < concurrency; i++) {
+ next();
+ }
-/***/ }),
-/* 106 */
-/***/ (function(module, exports) {
+ function next() {
+ const item = arr.shift();
+ const promise = promiseProducer(item);
-module.exports = function (bitmap, value) {
- return {
- enumerable: !(bitmap & 1),
- configurable: !(bitmap & 2),
- writable: !(bitmap & 4),
- value: value
- };
-};
+ promise.then(function (result) {
+ results.push(result);
+ total--;
+ if (total === 0) {
+ resolve(results);
+ } else {
+ if (arr.length) {
+ next();
+ }
+ }
+ }, reject);
+ }
+ });
+}
/***/ }),
-/* 107 */
+/* 41 */
/***/ (function(module, exports, __webpack_require__) {
-var core = __webpack_require__(23);
var global = __webpack_require__(11);
-var SHARED = '__core-js_shared__';
-var store = global[SHARED] || (global[SHARED] = {});
-
-(module.exports = function (key, value) {
- return store[key] || (store[key] = value !== undefined ? value : {});
-})('versions', []).push({
- version: core.version,
- mode: __webpack_require__(69) ? 'pure' : 'global',
- copyright: '© 2018 Denis Pushkarev (zloirock.ru)'
-});
-
-
-/***/ }),
-/* 108 */
-/***/ (function(module, exports, __webpack_require__) {
+var core = __webpack_require__(23);
+var ctx = __webpack_require__(48);
+var hide = __webpack_require__(31);
+var has = __webpack_require__(49);
+var PROTOTYPE = 'prototype';
-// 7.3.20 SpeciesConstructor(O, defaultConstructor)
-var anObject = __webpack_require__(27);
-var aFunction = __webpack_require__(46);
-var SPECIES = __webpack_require__(13)('species');
-module.exports = function (O, D) {
- var C = anObject(O).constructor;
- var S;
- return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
+var $export = function (type, name, source) {
+ var IS_FORCED = type & $export.F;
+ var IS_GLOBAL = type & $export.G;
+ var IS_STATIC = type & $export.S;
+ var IS_PROTO = type & $export.P;
+ var IS_BIND = type & $export.B;
+ var IS_WRAP = type & $export.W;
+ var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
+ var expProto = exports[PROTOTYPE];
+ var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
+ var key, own, out;
+ if (IS_GLOBAL) source = name;
+ for (key in source) {
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ if (own && has(exports, key)) continue;
+ // export native or passed
+ out = own ? target[key] : source[key];
+ // prevent global pollution for namespaces
+ exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+ // bind timers to global for call from export context
+ : IS_BIND && own ? ctx(out, global)
+ // wrap global constructors for prevent change them in library
+ : IS_WRAP && target[key] == out ? (function (C) {
+ var F = function (a, b, c) {
+ if (this instanceof C) {
+ switch (arguments.length) {
+ case 0: return new C();
+ case 1: return new C(a);
+ case 2: return new C(a, b);
+ } return new C(a, b, c);
+ } return C.apply(this, arguments);
+ };
+ F[PROTOTYPE] = C[PROTOTYPE];
+ return F;
+ // make static versions for prototype methods
+ })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+ if (IS_PROTO) {
+ (exports.virtual || (exports.virtual = {}))[key] = out;
+ // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+ if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
+ }
+ }
};
+// type bitmap
+$export.F = 1; // forced
+$export.G = 2; // global
+$export.S = 4; // static
+$export.P = 8; // proto
+$export.B = 16; // bind
+$export.W = 32; // wrap
+$export.U = 64; // safe
+$export.R = 128; // real proto method for `library`
+module.exports = $export;
/***/ }),
-/* 109 */
+/* 42 */
/***/ (function(module, exports, __webpack_require__) {
-var ctx = __webpack_require__(48);
-var invoke = __webpack_require__(185);
-var html = __webpack_require__(102);
-var cel = __webpack_require__(68);
-var global = __webpack_require__(11);
-var process = global.process;
-var setTask = global.setImmediate;
-var clearTask = global.clearImmediate;
-var MessageChannel = global.MessageChannel;
-var Dispatch = global.Dispatch;
-var counter = 0;
-var queue = {};
-var ONREADYSTATECHANGE = 'onreadystatechange';
-var defer, channel, port;
-var run = function () {
- var id = +this;
- // eslint-disable-next-line no-prototype-builtins
- if (queue.hasOwnProperty(id)) {
- var fn = queue[id];
- delete queue[id];
- fn();
- }
-};
-var listener = function (event) {
- run.call(event.data);
-};
-// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
-if (!setTask || !clearTask) {
- setTask = function setImmediate(fn) {
- var args = [];
- var i = 1;
- while (arguments.length > i) args.push(arguments[i++]);
- queue[++counter] = function () {
- // eslint-disable-next-line no-new-func
- invoke(typeof fn == 'function' ? fn : Function(fn), args);
- };
- defer(counter);
- return counter;
- };
- clearTask = function clearImmediate(id) {
- delete queue[id];
- };
- // Node.js 0.8-
- if (__webpack_require__(47)(process) == 'process') {
- defer = function (id) {
- process.nextTick(ctx(run, id, 1));
- };
- // Sphere (JS game engine) Dispatch API
- } else if (Dispatch && Dispatch.now) {
- defer = function (id) {
- Dispatch.now(ctx(run, id, 1));
- };
- // Browsers with MessageChannel, includes WebWorkers
- } else if (MessageChannel) {
- channel = new MessageChannel();
- port = channel.port2;
- channel.port1.onmessage = listener;
- defer = ctx(port.postMessage, port, 1);
- // Browsers with postMessage, skip WebWorkers
- // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
- } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
- defer = function (id) {
- global.postMessage(id + '', '*');
- };
- global.addEventListener('message', listener, false);
- // IE8-
- } else if (ONREADYSTATECHANGE in cel('script')) {
- defer = function (id) {
- html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
- html.removeChild(this);
- run.call(id);
- };
- };
- // Rest old browsers
- } else {
- defer = function (id) {
- setTimeout(ctx(run, id, 1), 0);
- };
- }
+try {
+ var util = __webpack_require__(2);
+ if (typeof util.inherits !== 'function') throw '';
+ module.exports = util.inherits;
+} catch (e) {
+ module.exports = __webpack_require__(224);
}
-module.exports = {
- set: setTask,
- clear: clearTask
-};
/***/ }),
-/* 110 */
+/* 43 */,
+/* 44 */,
+/* 45 */
/***/ (function(module, exports, __webpack_require__) {
-// 7.1.15 ToLength
-var toInteger = __webpack_require__(73);
-var min = Math.min;
-module.exports = function (it) {
- return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
-};
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.home = undefined;
+
+var _rootUser;
+
+function _load_rootUser() {
+ return _rootUser = _interopRequireDefault(__webpack_require__(169));
+}
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+const path = __webpack_require__(0);
+
+const home = exports.home = __webpack_require__(36).homedir();
+
+const userHomeDir = (_rootUser || _load_rootUser()).default ? path.resolve('/usr/local/share') : home;
+
+exports.default = userHomeDir;
/***/ }),
-/* 111 */
+/* 46 */
/***/ (function(module, exports) {
-var id = 0;
-var px = Math.random();
-module.exports = function (key) {
- return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+module.exports = function (it) {
+ if (typeof it != 'function') throw TypeError(it + ' is not a function!');
+ return it;
};
/***/ }),
-/* 112 */
-/***/ (function(module, exports, __webpack_require__) {
-
+/* 47 */
+/***/ (function(module, exports) {
-/**
- * This is the common logic for both the Node.js and web browser
- * implementations of `debug()`.
- *
- * Expose `debug()` as the module.
- */
+var toString = {}.toString;
-exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
-exports.coerce = coerce;
-exports.disable = disable;
-exports.enable = enable;
-exports.enabled = enabled;
-exports.humanize = __webpack_require__(229);
+module.exports = function (it) {
+ return toString.call(it).slice(8, -1);
+};
-/**
- * Active `debug` instances.
- */
-exports.instances = [];
-/**
- * The currently active debug mode names, and names to skip.
- */
+/***/ }),
+/* 48 */
+/***/ (function(module, exports, __webpack_require__) {
-exports.names = [];
-exports.skips = [];
+// optional / simple context binding
+var aFunction = __webpack_require__(46);
+module.exports = function (fn, that, length) {
+ aFunction(fn);
+ if (that === undefined) return fn;
+ switch (length) {
+ case 1: return function (a) {
+ return fn.call(that, a);
+ };
+ case 2: return function (a, b) {
+ return fn.call(that, a, b);
+ };
+ case 3: return function (a, b, c) {
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function (/* ...args */) {
+ return fn.apply(that, arguments);
+ };
+};
-/**
- * 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 = {};
+/***/ }),
+/* 49 */
+/***/ (function(module, exports) {
-/**
- * Select a color.
- * @param {String} namespace
- * @return {Number}
- * @api private
- */
+var hasOwnProperty = {}.hasOwnProperty;
+module.exports = function (it, key) {
+ return hasOwnProperty.call(it, key);
+};
-function selectColor(namespace) {
- var hash = 0, i;
- for (i in namespace) {
- hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
- hash |= 0; // Convert to 32bit integer
- }
+/***/ }),
+/* 50 */
+/***/ (function(module, exports, __webpack_require__) {
- return exports.colors[Math.abs(hash) % exports.colors.length];
-}
+var anObject = __webpack_require__(27);
+var IE8_DOM_DEFINE = __webpack_require__(184);
+var toPrimitive = __webpack_require__(201);
+var dP = Object.defineProperty;
-/**
- * Create a debugger with the given `namespace`.
- *
- * @param {String} namespace
- * @return {Function}
- * @api public
- */
+exports.f = __webpack_require__(33) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
+ anObject(O);
+ P = toPrimitive(P, true);
+ anObject(Attributes);
+ if (IE8_DOM_DEFINE) try {
+ return dP(O, P, Attributes);
+ } catch (e) { /* empty */ }
+ if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
+ if ('value' in Attributes) O[P] = Attributes.value;
+ return O;
+};
-function createDebug(namespace) {
- var prevTime;
+/***/ }),
+/* 51 */,
+/* 52 */,
+/* 53 */,
+/* 54 */
+/***/ (function(module, exports) {
- function debug() {
- // disabled?
- if (!debug.enabled) return;
+module.exports = __webpack_require__(285);
- var self = debug;
+/***/ }),
+/* 55 */
+/***/ (function(module, exports, __webpack_require__) {
- // set `diff` timestamp
- var curr = +new Date();
- var ms = curr - (prevTime || curr);
- self.diff = ms;
- self.prev = prevTime;
- self.curr = curr;
- prevTime = curr;
+"use strict";
- // 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];
- }
- args[0] = exports.coerce(args[0]);
+const Buffer = __webpack_require__(32).Buffer
- if ('string' !== typeof args[0]) {
- // anything else let's inspect with %O
- args.unshift('%O');
- }
+const crypto = __webpack_require__(9)
+const Transform = __webpack_require__(17).Transform
- // 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 SPEC_ALGORITHMS = ['sha256', 'sha384', 'sha512']
- // now we need to remove `args[index]` since it's inlined in the `format`
- args.splice(index, 1);
- index--;
- }
- return match;
- });
+const BASE64_REGEX = /^[a-z0-9+/]+(?:=?=?)$/i
+const SRI_REGEX = /^([^-]+)-([^?]+)([?\S*]*)$/
+const STRICT_SRI_REGEX = /^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/
+const VCHAR_REGEX = /^[\x21-\x7E]+$/
- // apply env-specific formatting (colors, etc.)
- exports.formatArgs.call(self, args);
+class Hash {
+ get isHash () { return true }
+ constructor (hash, opts) {
+ const strict = !!(opts && opts.strict)
+ this.source = hash.trim()
+ // 3.1. Integrity metadata (called "Hash" by ssri)
+ // https://w3c.github.io/webappsec-subresource-integrity/#integrity-metadata-description
+ const match = this.source.match(
+ strict
+ ? STRICT_SRI_REGEX
+ : SRI_REGEX
+ )
+ if (!match) { return }
+ if (strict && !SPEC_ALGORITHMS.some(a => a === match[1])) { return }
+ this.algorithm = match[1]
+ this.digest = match[2]
- var logFn = debug.log || exports.log || console.log.bind(console);
- logFn.apply(self, args);
+ const rawOpts = match[3]
+ this.options = rawOpts ? rawOpts.slice(1).split('?') : []
}
+ hexDigest () {
+ return this.digest && Buffer.from(this.digest, 'base64').toString('hex')
+ }
+ toJSON () {
+ return this.toString()
+ }
+ toString (opts) {
+ if (opts && opts.strict) {
+ // Strict mode enforces the standard as close to the foot of the
+ // letter as it can.
+ if (!(
+ // The spec has very restricted productions for algorithms.
+ // https://www.w3.org/TR/CSP2/#source-list-syntax
+ SPEC_ALGORITHMS.some(x => x === this.algorithm) &&
+ // Usually, if someone insists on using a "different" base64, we
+ // leave it as-is, since there's multiple standards, and the
+ // specified is not a URL-safe variant.
+ // https://www.w3.org/TR/CSP2/#base64_value
+ this.digest.match(BASE64_REGEX) &&
+ // Option syntax is strictly visual chars.
+ // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-option-expression
+ // https://tools.ietf.org/html/rfc5234#appendix-B.1
+ (this.options || []).every(opt => opt.match(VCHAR_REGEX))
+ )) {
+ return ''
+ }
+ }
+ const options = this.options && this.options.length
+ ? `?${this.options.join('?')}`
+ : ''
+ return `${this.algorithm}-${this.digest}${options}`
+ }
+}
- debug.namespace = namespace;
- debug.enabled = exports.enabled(namespace);
- debug.useColors = exports.useColors();
- debug.color = selectColor(namespace);
- debug.destroy = destroy;
-
- // env-specific initialization logic for debug instances
- if ('function' === typeof exports.init) {
- exports.init(debug);
+class Integrity {
+ get isIntegrity () { return true }
+ toJSON () {
+ return this.toString()
+ }
+ toString (opts) {
+ opts = opts || {}
+ let sep = opts.sep || ' '
+ if (opts.strict) {
+ // Entries must be separated by whitespace, according to spec.
+ sep = sep.replace(/\S+/g, ' ')
+ }
+ return Object.keys(this).map(k => {
+ return this[k].map(hash => {
+ return Hash.prototype.toString.call(hash, opts)
+ }).filter(x => x.length).join(sep)
+ }).filter(x => x.length).join(sep)
+ }
+ concat (integrity, opts) {
+ const other = typeof integrity === 'string'
+ ? integrity
+ : stringify(integrity, opts)
+ return parse(`${this.toString(opts)} ${other}`, opts)
+ }
+ hexDigest () {
+ return parse(this, {single: true}).hexDigest()
+ }
+ match (integrity, opts) {
+ const other = parse(integrity, opts)
+ const algo = other.pickAlgorithm(opts)
+ return (
+ this[algo] &&
+ other[algo] &&
+ this[algo].find(hash =>
+ other[algo].find(otherhash =>
+ hash.digest === otherhash.digest
+ )
+ )
+ ) || false
+ }
+ pickAlgorithm (opts) {
+ const pickAlgorithm = (opts && opts.pickAlgorithm) || getPrioritizedHash
+ const keys = Object.keys(this)
+ if (!keys.length) {
+ throw new Error(`No algorithms available for ${
+ JSON.stringify(this.toString())
+ }`)
+ }
+ return keys.reduce((acc, algo) => {
+ return pickAlgorithm(acc, algo) || acc
+ })
}
+}
- exports.instances.push(debug);
+module.exports.parse = parse
+function parse (sri, opts) {
+ opts = opts || {}
+ if (typeof sri === 'string') {
+ return _parse(sri, opts)
+ } else if (sri.algorithm && sri.digest) {
+ const fullSri = new Integrity()
+ fullSri[sri.algorithm] = [sri]
+ return _parse(stringify(fullSri, opts), opts)
+ } else {
+ return _parse(stringify(sri, opts), opts)
+ }
+}
- return debug;
+function _parse (integrity, opts) {
+ // 3.4.3. Parse metadata
+ // https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
+ if (opts.single) {
+ return new Hash(integrity, opts)
+ }
+ return integrity.trim().split(/\s+/).reduce((acc, string) => {
+ const hash = new Hash(string, opts)
+ if (hash.algorithm && hash.digest) {
+ const algo = hash.algorithm
+ if (!acc[algo]) { acc[algo] = [] }
+ acc[algo].push(hash)
+ }
+ return acc
+ }, new Integrity())
}
-function destroy () {
- var index = exports.instances.indexOf(this);
- if (index !== -1) {
- exports.instances.splice(index, 1);
- return true;
+module.exports.stringify = stringify
+function stringify (obj, opts) {
+ if (obj.algorithm && obj.digest) {
+ return Hash.prototype.toString.call(obj, opts)
+ } else if (typeof obj === 'string') {
+ return stringify(parse(obj, opts), opts)
} else {
- return false;
+ return Integrity.prototype.toString.call(obj, opts)
}
}
-/**
- * Enables a debug mode by namespaces. This can include modes
- * separated by a colon and wildcards.
- *
- * @param {String} namespaces
- * @api public
- */
+module.exports.fromHex = fromHex
+function fromHex (hexDigest, algorithm, opts) {
+ const optString = (opts && opts.options && opts.options.length)
+ ? `?${opts.options.join('?')}`
+ : ''
+ return parse(
+ `${algorithm}-${
+ Buffer.from(hexDigest, 'hex').toString('base64')
+ }${optString}`, opts
+ )
+}
-function enable(namespaces) {
- exports.save(namespaces);
+module.exports.fromData = fromData
+function fromData (data, opts) {
+ opts = opts || {}
+ const algorithms = opts.algorithms || ['sha512']
+ const optString = opts.options && opts.options.length
+ ? `?${opts.options.join('?')}`
+ : ''
+ return algorithms.reduce((acc, algo) => {
+ const digest = crypto.createHash(algo).update(data).digest('base64')
+ const hash = new Hash(
+ `${algo}-${digest}${optString}`,
+ opts
+ )
+ if (hash.algorithm && hash.digest) {
+ const algo = hash.algorithm
+ if (!acc[algo]) { acc[algo] = [] }
+ acc[algo].push(hash)
+ }
+ return acc
+ }, new Integrity())
+}
- exports.names = [];
- exports.skips = [];
+module.exports.fromStream = fromStream
+function fromStream (stream, opts) {
+ opts = opts || {}
+ const P = opts.Promise || Promise
+ const istream = integrityStream(opts)
+ return new P((resolve, reject) => {
+ stream.pipe(istream)
+ stream.on('error', reject)
+ istream.on('error', reject)
+ let sri
+ istream.on('integrity', s => { sri = s })
+ istream.on('end', () => resolve(sri))
+ istream.on('data', () => {})
+ })
+}
- var i;
- var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
- var len = split.length;
+module.exports.checkData = checkData
+function checkData (data, sri, opts) {
+ opts = opts || {}
+ sri = parse(sri, opts)
+ if (!Object.keys(sri).length) {
+ if (opts.error) {
+ throw Object.assign(
+ new Error('No valid integrity hashes to check against'), {
+ code: 'EINTEGRITY'
+ }
+ )
+ } else {
+ return false
+ }
+ }
+ const algorithm = sri.pickAlgorithm(opts)
+ const digest = crypto.createHash(algorithm).update(data).digest('base64')
+ const newSri = parse({algorithm, digest})
+ const match = newSri.match(sri, opts)
+ if (match || !opts.error) {
+ return match
+ } else if (typeof opts.size === 'number' && (data.length !== opts.size)) {
+ const err = new Error(`data size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${data.length}`)
+ err.code = 'EBADSIZE'
+ err.found = data.length
+ err.expected = opts.size
+ err.sri = sri
+ throw err
+ } else {
+ const err = new Error(`Integrity checksum failed when using ${algorithm}: Wanted ${sri}, but got ${newSri}. (${data.length} bytes)`)
+ err.code = 'EINTEGRITY'
+ err.found = newSri
+ err.expected = sri
+ err.algorithm = algorithm
+ err.sri = sri
+ throw err
+ }
+}
- for (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) + '$'));
+module.exports.checkStream = checkStream
+function checkStream (stream, sri, opts) {
+ opts = opts || {}
+ const P = opts.Promise || Promise
+ const checker = integrityStream(Object.assign({}, opts, {
+ integrity: sri
+ }))
+ return new P((resolve, reject) => {
+ stream.pipe(checker)
+ stream.on('error', reject)
+ checker.on('error', reject)
+ let sri
+ checker.on('verified', s => { sri = s })
+ checker.on('end', () => resolve(sri))
+ checker.on('data', () => {})
+ })
+}
+
+module.exports.integrityStream = integrityStream
+function integrityStream (opts) {
+ opts = opts || {}
+ // For verification
+ const sri = opts.integrity && parse(opts.integrity, opts)
+ const goodSri = sri && Object.keys(sri).length
+ const algorithm = goodSri && sri.pickAlgorithm(opts)
+ const digests = goodSri && sri[algorithm]
+ // Calculating stream
+ const algorithms = Array.from(
+ new Set(
+ (opts.algorithms || ['sha512'])
+ .concat(algorithm ? [algorithm] : [])
+ )
+ )
+ const hashes = algorithms.map(crypto.createHash)
+ let streamSize = 0
+ const stream = new Transform({
+ transform (chunk, enc, cb) {
+ streamSize += chunk.length
+ hashes.forEach(h => h.update(chunk, enc))
+ cb(null, chunk, enc)
+ }
+ }).on('end', () => {
+ const optString = (opts.options && opts.options.length)
+ ? `?${opts.options.join('?')}`
+ : ''
+ const newSri = parse(hashes.map((h, i) => {
+ return `${algorithms[i]}-${h.digest('base64')}${optString}`
+ }).join(' '), opts)
+ // Integrity verification mode
+ const match = goodSri && newSri.match(sri, opts)
+ if (typeof opts.size === 'number' && streamSize !== opts.size) {
+ const err = new Error(`stream size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${streamSize}`)
+ err.code = 'EBADSIZE'
+ err.found = streamSize
+ err.expected = opts.size
+ err.sri = sri
+ stream.emit('error', err)
+ } else if (opts.integrity && !match) {
+ const err = new Error(`${sri} integrity checksum failed when using ${algorithm}: wanted ${digests} but got ${newSri}. (${streamSize} bytes)`)
+ err.code = 'EINTEGRITY'
+ err.found = newSri
+ err.expected = digests
+ err.algorithm = algorithm
+ err.sri = sri
+ stream.emit('error', err)
} else {
- exports.names.push(new RegExp('^' + namespaces + '$'));
+ stream.emit('size', streamSize)
+ stream.emit('integrity', newSri)
+ match && stream.emit('verified', match)
}
- }
-
- for (i = 0; i < exports.instances.length; i++) {
- var instance = exports.instances[i];
- instance.enabled = exports.enabled(instance.namespace);
- }
+ })
+ return stream
}
-/**
- * Disable debug output.
- *
- * @api public
- */
+module.exports.create = createIntegrity
+function createIntegrity (opts) {
+ opts = opts || {}
+ const algorithms = opts.algorithms || ['sha512']
+ const optString = opts.options && opts.options.length
+ ? `?${opts.options.join('?')}`
+ : ''
-function disable() {
- exports.enable('');
-}
+ const hashes = algorithms.map(crypto.createHash)
-/**
- * Returns true if the given mode name is enabled, false otherwise.
- *
- * @param {String} name
- * @return {Boolean}
- * @api public
- */
+ return {
+ update: function (chunk, enc) {
+ hashes.forEach(h => h.update(chunk, enc))
+ return this
+ },
+ digest: function (enc) {
+ const integrity = algorithms.reduce((acc, algo) => {
+ const digest = hashes.shift().digest('base64')
+ const hash = new Hash(
+ `${algo}-${digest}${optString}`,
+ opts
+ )
+ if (hash.algorithm && hash.digest) {
+ const algo = hash.algorithm
+ if (!acc[algo]) { acc[algo] = [] }
+ acc[algo].push(hash)
+ }
+ return acc
+ }, new Integrity())
-function enabled(name) {
- if (name[name.length - 1] === '*') {
- return true;
- }
- 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 integrity
}
}
- return false;
}
-/**
- * Coerce `val`.
- *
- * @param {Mixed} val
- * @return {Mixed}
- * @api private
- */
+const NODE_HASHES = new Set(crypto.getHashes())
-function coerce(val) {
- if (val instanceof Error) return val.stack || val.message;
- return val;
+// This is a Best Effort™ at a reasonable priority for hash algos
+const DEFAULT_PRIORITY = [
+ 'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',
+ // TODO - it's unclear _which_ of these Node will actually use as its name
+ // for the algorithm, so we guesswork it based on the OpenSSL names.
+ 'sha3',
+ 'sha3-256', 'sha3-384', 'sha3-512',
+ 'sha3_256', 'sha3_384', 'sha3_512'
+].filter(algo => NODE_HASHES.has(algo))
+
+function getPrioritizedHash (algo1, algo2) {
+ return DEFAULT_PRIORITY.indexOf(algo1.toLowerCase()) >= DEFAULT_PRIORITY.indexOf(algo2.toLowerCase())
+ ? algo1
+ : algo2
}
/***/ }),
-/* 113 */,
-/* 114 */
+/* 56 */,
+/* 57 */,
+/* 58 */,
+/* 59 */,
+/* 60 */
/***/ (function(module, exports, __webpack_require__) {
-module.exports = realpath
-realpath.realpath = realpath
-realpath.sync = realpathSync
-realpath.realpathSync = realpathSync
-realpath.monkeypatch = monkeypatch
-realpath.unmonkeypatch = unmonkeypatch
+module.exports = minimatch
+minimatch.Minimatch = Minimatch
-var fs = __webpack_require__(3)
-var origRealpath = fs.realpath
-var origRealpathSync = fs.realpathSync
+var path = { sep: '/' }
+try {
+ path = __webpack_require__(0)
+} catch (er) {}
-var version = process.version
-var ok = /^v[0-5]\./.test(version)
-var old = __webpack_require__(217)
+var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
+var expand = __webpack_require__(175)
-function newError (er) {
- return er && er.syscall === 'realpath' && (
- er.code === 'ELOOP' ||
- er.code === 'ENOMEM' ||
- er.code === 'ENAMETOOLONG'
- )
+var plTypes = {
+ '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},
+ '?': { open: '(?:', close: ')?' },
+ '+': { open: '(?:', close: ')+' },
+ '*': { open: '(?:', close: ')*' },
+ '@': { open: '(?:', close: ')' }
}
-function realpath (p, cache, cb) {
- if (ok) {
- return origRealpath(p, cache, cb)
- }
+// any single thing other than /
+// don't need to escape / when using new RegExp()
+var qmark = '[^/]'
- 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)
- }
- })
-}
+// * => any number of characters
+var star = qmark + '*?'
-function realpathSync (p, cache) {
- if (ok) {
- return origRealpathSync(p, cache)
- }
+// ** 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})($|\\\/)).)*?'
- try {
- return origRealpathSync(p, cache)
- } catch (er) {
- if (newError(er)) {
- return old.realpathSync(p, cache)
- } else {
- throw er
- }
- }
-}
+// not a ^ or / followed by a dot,
+// followed by anything, any number of times.
+var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
-function monkeypatch () {
- fs.realpath = realpath
- fs.realpathSync = realpathSync
-}
+// characters that need to be escaped in RegExp.
+var reSpecials = charSet('().*{}+?[]^$\\!')
-function unmonkeypatch () {
- fs.realpath = origRealpath
- fs.realpathSync = origRealpathSync
+// "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 = /\/+/
-/***/ }),
-/* 115 */
-/***/ (function(module, exports, __webpack_require__) {
-
-exports.alphasort = alphasort
-exports.alphasorti = alphasorti
-exports.setopts = setopts
-exports.ownProp = ownProp
-exports.makeAbs = makeAbs
-exports.finish = finish
-exports.mark = mark
-exports.isIgnored = isIgnored
-exports.childrenIgnored = childrenIgnored
-
-function ownProp (obj, field) {
- return Object.prototype.hasOwnProperty.call(obj, field)
+minimatch.filter = filter
+function filter (pattern, options) {
+ options = options || {}
+ return function (p, i, list) {
+ return minimatch(p, pattern, options)
+ }
}
-var path = __webpack_require__(0)
-var minimatch = __webpack_require__(60)
-var isAbsolute = __webpack_require__(76)
-var Minimatch = minimatch.Minimatch
-
-function alphasorti (a, b) {
- return a.toLowerCase().localeCompare(b.toLowerCase())
+function ext (a, b) {
+ a = a || {}
+ b = b || {}
+ var t = {}
+ Object.keys(b).forEach(function (k) {
+ t[k] = b[k]
+ })
+ Object.keys(a).forEach(function (k) {
+ t[k] = a[k]
+ })
+ return t
}
-function alphasort (a, b) {
- return a.localeCompare(b)
-}
+minimatch.defaults = function (def) {
+ if (!def || !Object.keys(def).length) return minimatch
-function setupIgnores (self, options) {
- self.ignore = options.ignore || []
+ var orig = minimatch
- if (!Array.isArray(self.ignore))
- self.ignore = [self.ignore]
+ var m = function minimatch (p, pattern, options) {
+ return orig.minimatch(p, pattern, ext(def, options))
+ }
- if (self.ignore.length) {
- self.ignore = self.ignore.map(ignoreMap)
+ m.Minimatch = function Minimatch (pattern, options) {
+ return new orig.Minimatch(pattern, ext(def, options))
}
+
+ return m
}
-// 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 })
- }
+Minimatch.defaults = function (def) {
+ if (!def || !Object.keys(def).length) return Minimatch
+ return minimatch.defaults(def).Minimatch
+}
- return {
- matcher: new Minimatch(pattern, { dot: true }),
- gmatcher: gmatcher
+function minimatch (p, pattern, options) {
+ if (typeof pattern !== 'string') {
+ throw new TypeError('glob pattern string required')
}
-}
-function setopts (self, pattern, options) {
- if (!options)
- options = {}
+ if (!options) options = {}
- // 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
+ // shortcut: comments match nothing.
+ if (!options.nocomment && pattern.charAt(0) === '#') {
+ return false
}
- 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
+ // "" only matches ""
+ if (pattern.trim() === '') return p === ''
- 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 new Minimatch(pattern, options).match(p)
+}
- setupIgnores(self, options)
+function Minimatch (pattern, options) {
+ if (!(this instanceof Minimatch)) {
+ return new Minimatch(pattern, options)
+ }
- 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
+ if (typeof pattern !== 'string') {
+ throw new TypeError('glob pattern string required')
}
- 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 (!options) options = {}
+ pattern = pattern.trim()
- // 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
+ // windows support: need to use /, not \
+ if (path.sep !== '/') {
+ pattern = pattern.split(path.sep).join('/')
+ }
- // disable comments and negation in Minimatch.
- // Note that they are not supported in Glob itself anyway.
- options.nonegate = true
- options.nocomment = true
+ this.options = options
+ this.set = []
+ this.pattern = pattern
+ this.regexp = null
+ this.negate = false
+ this.comment = false
+ this.empty = false
- self.minimatch = new Minimatch(pattern, options)
- self.options = self.minimatch.options
+ // make the set of regexps etc.
+ this.make()
}
-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
- })
- }
- }
+Minimatch.prototype.debug = function () {}
- if (!nou)
- all = Object.keys(all)
+Minimatch.prototype.make = make
+function make () {
+ // don't do it more than once.
+ if (this._made) return
- if (!self.nosort)
- all = all.sort(self.nocase ? alphasorti : alphasort)
+ var pattern = this.pattern
+ var options = this.options
- // 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
- })
- }
+ // empty patterns and comments match nothing.
+ if (!options.nocomment && pattern.charAt(0) === '#') {
+ this.comment = true
+ return
+ }
+ if (!pattern) {
+ this.empty = true
+ return
}
- if (self.ignore.length)
- all = all.filter(function(m) {
- return !isIgnored(self, m)
- })
+ // step 1: figure out negation, etc.
+ this.parseNegate()
- self.found = all
-}
+ // step 2: expand braces
+ var set = this.globSet = this.braceExpand()
-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 (options.debug) this.debug = console.error
- if (isDir && !slash)
- m += '/'
- else if (!isDir && slash)
- m = m.slice(0, -1)
+ this.debug(this.pattern, set)
- if (m !== p) {
- var mabs = makeAbs(self, m)
- self.statCache[mabs] = self.statCache[abs]
- self.cache[mabs] = self.cache[abs]
- }
- }
+ // 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)
+ })
- return m
-}
+ this.debug(this.pattern, set)
-// 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)
- }
+ // glob --> regexps
+ set = set.map(function (s, si, set) {
+ return s.map(this.parse, this)
+ }, this)
- if (process.platform === 'win32')
- abs = abs.replace(/\\/g, '/')
+ this.debug(this.pattern, set)
- return abs
+ // 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
-// 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
+ for (var i = 0, l = pattern.length
+ ; i < l && pattern.charAt(i) === '!'
+ ; i++) {
+ negate = !negate
+ negateOffset++
+ }
- return self.ignore.some(function(item) {
- return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
- })
+ if (negateOffset) this.pattern = pattern.substr(negateOffset)
+ this.negate = negate
}
-function childrenIgnored (self, path) {
- if (!self.ignore.length)
- return false
-
- return self.ignore.some(function(item) {
- return !!(item.gmatcher && item.gmatcher.match(path))
- })
+// 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
-/***/ }),
-/* 116 */
-/***/ (function(module, exports, __webpack_require__) {
+function braceExpand (pattern, options) {
+ if (!options) {
+ if (this instanceof Minimatch) {
+ options = this.options
+ } else {
+ options = {}
+ }
+ }
-var path = __webpack_require__(0);
-var fs = __webpack_require__(3);
-var _0777 = parseInt('0777', 8);
+ pattern = typeof pattern === 'undefined'
+ ? this.pattern : pattern
-module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
+ if (typeof pattern === 'undefined') {
+ throw new TypeError('undefined pattern')
+ }
-function mkdirP (p, opts, f, made) {
- if (typeof opts === 'function') {
- f = opts;
- opts = {};
- }
- else if (!opts || typeof opts !== 'object') {
- opts = { mode: opts };
- }
-
- var mode = opts.mode;
- var xfs = opts.fs || fs;
-
- if (mode === undefined) {
- mode = _0777 & (~process.umask());
- }
- if (!made) made = null;
-
- var cb = f || function () {};
- p = path.resolve(p);
-
- xfs.mkdir(p, mode, function (er) {
- if (!er) {
- made = made || p;
- return cb(null, made);
- }
- switch (er.code) {
- case 'ENOENT':
- mkdirP(path.dirname(p), opts, function (er, made) {
- if (er) cb(er, made);
- else mkdirP(p, opts, cb, made);
- });
- break;
+ if (options.nobrace ||
+ !pattern.match(/\{.*\}/)) {
+ // shortcut. no need to expand.
+ return [pattern]
+ }
- // In the case of any other error, just see if there's a dir
- // there already. If so, then hooray! If not, then something
- // is borked.
- default:
- xfs.stat(p, function (er2, stat) {
- // if the stat fails, then that's super weird.
- // let the original error be the failure reason.
- if (er2 || !stat.isDirectory()) cb(er, made)
- else cb(null, made);
- });
- break;
- }
- });
+ return expand(pattern)
}
-mkdirP.sync = function sync (p, opts, made) {
- if (!opts || typeof opts !== 'object') {
- opts = { mode: opts };
- }
-
- var mode = opts.mode;
- var xfs = opts.fs || fs;
-
- if (mode === undefined) {
- mode = _0777 & (~process.umask());
- }
- if (!made) made = null;
-
- p = path.resolve(p);
+// 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) {
+ if (pattern.length > 1024 * 64) {
+ throw new TypeError('pattern is too long')
+ }
- try {
- xfs.mkdirSync(p, mode);
- made = made || p;
- }
- catch (err0) {
- switch (err0.code) {
- case 'ENOENT' :
- made = sync(path.dirname(p), opts, made);
- sync(p, opts, made);
- break;
+ var options = this.options
- // In the case of any other error, just see if there's a dir
- // there already. If so, then hooray! If not, then something
- // is borked.
- default:
- var stat;
- try {
- stat = xfs.statSync(p);
- }
- catch (err1) {
- throw err0;
- }
- if (!stat.isDirectory()) throw err0;
- break;
- }
- }
+ // shortcuts
+ if (!options.noglobstar && pattern === '**') return GLOBSTAR
+ if (pattern === '') return ''
- return made;
-};
+ 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
+ }
+ }
-/***/ }),
-/* 117 */,
-/* 118 */,
-/* 119 */,
-/* 120 */,
-/* 121 */,
-/* 122 */
-/***/ (function(module, exports, __webpack_require__) {
+ 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)
-"use strict";
+ // skip over any that are escaped.
+ if (escaping && reSpecials[c]) {
+ re += '\\' + c
+ escaping = false
+ continue
+ }
-module.exports = x => {
- if (typeof x !== 'string') {
- throw new TypeError('Expected a string, got ' + typeof x);
- }
+ switch (c) {
+ case '/':
+ // completely not allowed, even escaped.
+ // Should already be path-split by now.
+ return false
- // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string
- // conversion translates it to FEFF (UTF-16 BOM)
- if (x.charCodeAt(0) === 0xFEFF) {
- return x.slice(1);
- }
+ case '\\':
+ clearStateChar()
+ escaping = true
+ continue
- return x;
-};
+ // 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
+ }
-/***/ }),
-/* 123 */
-/***/ (function(module, exports) {
+ // 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 a wrapper function that returns a wrapped callback
-// The wrapper function should do some stuff, and return a
-// presumably different callback function.
-// This makes sure that own properties are retained, so that
-// decorations and such are not lost along the way.
-module.exports = wrappy
-function wrappy (fn, cb) {
- if (fn && cb) return wrappy(fn)(cb)
+ case '(':
+ if (inClass) {
+ re += '('
+ continue
+ }
- if (typeof fn !== 'function')
- throw new TypeError('need wrapper function')
+ if (!stateChar) {
+ re += '\\('
+ continue
+ }
- Object.keys(fn).forEach(function (k) {
- wrapper[k] = fn[k]
- })
+ 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
- return wrapper
+ case ')':
+ if (inClass || !patternListStack.length) {
+ re += '\\)'
+ continue
+ }
- function wrapper() {
- var args = new Array(arguments.length)
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i]
- }
- var ret = fn.apply(this, args)
- var cb = args[args.length-1]
- if (typeof ret === 'function' && ret !== cb) {
- Object.keys(cb).forEach(function (k) {
- ret[k] = cb[k]
- })
- }
- return ret
- }
-}
+ 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
+ }
-/***/ }),
-/* 124 */,
-/* 125 */,
-/* 126 */,
-/* 127 */,
-/* 128 */,
-/* 129 */,
-/* 130 */,
-/* 131 */
-/***/ (function(module, exports, __webpack_require__) {
+ clearStateChar()
+ re += '|'
+ continue
-// fallback for non-array-like ES3 and non-enumerable old V8 strings
-var cof = __webpack_require__(47);
-// eslint-disable-next-line no-prototype-builtins
-module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
- return cof(it) == 'String' ? it.split('') : Object(it);
-};
+ // these are mostly the same in regexp and glob
+ case '[':
+ // swallow any state-tracking char before the [
+ clearStateChar()
+ if (inClass) {
+ re += '\\' + c
+ continue
+ }
-/***/ }),
-/* 132 */
-/***/ (function(module, exports, __webpack_require__) {
+ inClass = true
+ classStart = i
+ reClassStart = re.length
+ re += c
+ continue
-// 19.1.2.14 / 15.2.3.14 Object.keys(O)
-var $keys = __webpack_require__(195);
-var enumBugKeys = __webpack_require__(101);
+ 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
+ }
-module.exports = Object.keys || function keys(O) {
- return $keys(O, enumBugKeys);
-};
+ // handle the case where we left a class open.
+ // "[z-a]" is valid, equivalent to "\[z-a\]"
+ if (inClass) {
+ // 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
-/***/ }),
-/* 133 */
-/***/ (function(module, exports, __webpack_require__) {
+ default:
+ // swallow any state char that wasn't consumed
+ clearStateChar()
-// 7.1.13 ToObject(argument)
-var defined = __webpack_require__(67);
-module.exports = function (it) {
- return Object(defined(it));
-};
+ if (escaping) {
+ // no need
+ escaping = false
+ } else if (reSpecials[c]
+ && !(c === '^' && inClass)) {
+ re += '\\'
+ }
+ re += c
-/***/ }),
-/* 134 */,
-/* 135 */,
-/* 136 */,
-/* 137 */,
-/* 138 */,
-/* 139 */,
-/* 140 */,
-/* 141 */,
-/* 142 */,
-/* 143 */,
-/* 144 */,
-/* 145 */
-/***/ (function(module, exports) {
+ } // switch
+ } // for
-module.exports = {"name":"yarn","installationMethod":"unknown","version":"1.10.0-0","license":"BSD-2-Clause","preferGlobal":true,"description":"📦🐈 Fast, reliable, and secure dependency management.","dependencies":{"@zkochan/cmd-shim":"^2.2.4","babel-runtime":"^6.26.0","bytes":"^3.0.0","camelcase":"^4.0.0","chalk":"^2.1.0","commander":"^2.9.0","death":"^1.0.0","debug":"^3.0.0","deep-equal":"^1.0.1","detect-indent":"^5.0.0","dnscache":"^1.0.1","glob":"^7.1.1","gunzip-maybe":"^1.4.0","hash-for-dep":"^1.2.3","imports-loader":"^0.8.0","ini":"^1.3.4","inquirer":"^3.0.1","invariant":"^2.2.0","is-builtin-module":"^2.0.0","is-ci":"^1.0.10","is-webpack-bundle":"^1.0.0","leven":"^2.0.0","loud-rejection":"^1.2.0","micromatch":"^2.3.11","mkdirp":"^0.5.1","node-emoji":"^1.6.1","normalize-url":"^2.0.0","npm-logical-tree":"^1.2.1","object-path":"^0.11.2","proper-lockfile":"^2.0.0","puka":"^1.0.0","read":"^1.0.7","request":"^2.87.0","request-capture-har":"^1.2.2","rimraf":"^2.5.0","semver":"^5.1.0","ssri":"^5.3.0","strip-ansi":"^4.0.0","strip-bom":"^3.0.0","tar-fs":"^1.16.0","tar-stream":"^1.6.1","uuid":"^3.0.1","v8-compile-cache":"^2.0.0","validate-npm-package-license":"^3.0.3","yn":"^2.0.0"},"devDependencies":{"babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-loader":"^6.2.5","babel-plugin-array-includes":"^2.0.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-inline-imports-commonjs":"^1.0.0","babel-plugin-transform-runtime":"^6.4.3","babel-preset-env":"^1.6.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.0.0","babylon":"^6.5.0","commitizen":"^2.9.6","cz-conventional-changelog":"^2.0.0","eslint":"^4.3.0","eslint-config-fb-strict":"^22.0.0","eslint-plugin-babel":"^5.0.0","eslint-plugin-flowtype":"^2.35.0","eslint-plugin-jasmine":"^2.6.2","eslint-plugin-jest":"^21.0.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-prefer-object-spread":"^1.2.1","eslint-plugin-prettier":"^2.1.2","eslint-plugin-react":"^7.1.0","eslint-plugin-relay":"^0.0.24","eslint-plugin-yarn-internal":"file:scripts/eslint-rules","execa":"^0.10.0","flow-bin":"^0.66.0","git-release-notes":"^3.0.0","gulp":"^3.9.0","gulp-babel":"^7.0.0","gulp-if":"^2.0.1","gulp-newer":"^1.0.0","gulp-plumber":"^1.0.1","gulp-sourcemaps":"^2.2.0","gulp-util":"^3.0.7","gulp-watch":"^5.0.0","jest":"^22.4.4","jsinspect":"^0.12.6","minimatch":"^3.0.4","mock-stdin":"^0.3.0","prettier":"^1.5.2","temp":"^0.8.3","webpack":"^2.1.0-beta.25","yargs":"^6.3.0"},"resolutions":{"sshpk":"^1.14.2"},"engines":{"node":">=4.0.0"},"repository":"yarnpkg/yarn","bin":{"yarn":"./bin/yarn.js","yarnpkg":"./bin/yarn.js"},"scripts":{"build":"gulp build","build-bundle":"node ./scripts/build-webpack.js","build-chocolatey":"powershell ./scripts/build-chocolatey.ps1","build-deb":"./scripts/build-deb.sh","build-dist":"bash ./scripts/build-dist.sh","build-win-installer":"scripts\\build-windows-installer.bat","changelog":"git-release-notes $(git describe --tags --abbrev=0 $(git describe --tags --abbrev=0)^)..$(git describe --tags --abbrev=0) scripts/changelog.md","dupe-check":"yarn jsinspect ./src","lint":"eslint . && flow check","pkg-tests":"yarn --cwd packages/pkg-tests jest yarn.test.js","prettier":"eslint src __tests__ --fix","release-branch":"./scripts/release-branch.sh","test":"yarn lint && yarn test-only","test-only":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --verbose","test-only-debug":"node --inspect-brk --max_old_space_size=4096 node_modules/jest/bin/jest.js --runInBand --verbose","test-coverage":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --coverage --verbose","watch":"gulp watch","commit":"git-cz"},"jest":{"collectCoverageFrom":["src/**/*.js"],"testEnvironment":"node","modulePathIgnorePatterns":["__tests__/fixtures/","packages/pkg-tests/pkg-tests-fixtures","dist/"],"testPathIgnorePatterns":["__tests__/(fixtures|__mocks__)/","updates/","_(temp|mock|install|init|helpers).js$","packages/pkg-tests"]},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}}}
+ // 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]
+ }
-/***/ }),
-/* 146 */,
-/* 147 */,
-/* 148 */,
-/* 149 */,
-/* 150 */
-/***/ (function(module, exports, __webpack_require__) {
+ // 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 = '\\'
+ }
-"use strict";
+ // 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
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = stringify;
+ hasMagic = true
+ re = re.slice(0, pl.reStart) + t + '\\(' + tail
+ }
-var _misc;
+ // handle trailing things that only matter at the very end.
+ clearStateChar()
+ if (escaping) {
+ // trailing \\
+ re += '\\\\'
+ }
-function _load_misc() {
- return _misc = __webpack_require__(12);
-}
+ // 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
+ }
-var _constants;
+ // 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]
-function _load_constants() {
- return _constants = __webpack_require__(6);
-}
+ 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)
-var _package;
+ nlLast += nlAfter
-function _load_package() {
- return _package = __webpack_require__(145);
-}
+ // 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
-const NODE_VERSION = process.version;
+ var dollar = ''
+ if (nlAfter === '' && isSub !== SUBPARSE) {
+ dollar = '$'
+ }
+ var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
+ re = newRe
+ }
-function shouldWrapKey(str) {
- return str.indexOf('true') === 0 || str.indexOf('false') === 0 || /[:\s\n\\",\[\]]/g.test(str) || /^[0-9]/g.test(str) || !/^[a-zA-Z]/g.test(str);
-}
+ // 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
+ }
-function maybeWrap(str) {
- if (typeof str === 'boolean' || typeof str === 'number' || shouldWrapKey(str)) {
- return JSON.stringify(str);
- } else {
- return str;
+ if (addPatternStart) {
+ re = patternStart + re
}
-}
-const priorities = {
- name: 1,
- version: 2,
- uid: 3,
- resolved: 4,
- integrity: 5,
- registry: 6,
- dependencies: 7
-};
+ // parsing just a piece of a larger pattern.
+ if (isSub === SUBPARSE) {
+ return [re, hasMagic]
+ }
-function priorityThenAlphaSort(a, b) {
- if (priorities[a] || priorities[b]) {
- return (priorities[a] || 100) > (priorities[b] || 100) ? 1 : -1;
- } else {
- return (0, (_misc || _load_misc()).sortAlpha)(a, b);
+ // 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)
}
-}
-function _stringify(obj, options) {
- if (typeof obj !== 'object') {
- throw new TypeError();
+ var flags = options.nocase ? 'i' : ''
+ try {
+ var regExp = new RegExp('^' + re + '$', flags)
+ } catch (er) {
+ // 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('$.')
}
- const indent = options.indent;
- const lines = [];
+ regExp._glob = pattern
+ regExp._src = re
- // Sorting order needs to be consistent between runs, we run native sort by name because there are no
- // problems with it being unstable because there are no to keys the same
- // However priorities can be duplicated and native sort can shuffle things from run to run
- const keys = Object.keys(obj).sort(priorityThenAlphaSort);
+ return regExp
+}
- let addedKeys = [];
+minimatch.makeRe = function (pattern, options) {
+ return new Minimatch(pattern, options || {}).makeRe()
+}
- for (let i = 0; i < keys.length; i++) {
- const key = keys[i];
- const val = obj[key];
- if (val == null || addedKeys.indexOf(key) >= 0) {
- continue;
- }
+Minimatch.prototype.makeRe = makeRe
+function makeRe () {
+ if (this.regexp || this.regexp === false) return this.regexp
- const valKeys = [key];
+ // 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
- // get all keys that have the same value equality, we only want this for objects
- if (typeof val === 'object') {
- for (let j = i + 1; j < keys.length; j++) {
- const key = keys[j];
- if (val === obj[key]) {
- valKeys.push(key);
- }
- }
- }
+ if (!set.length) {
+ this.regexp = false
+ return this.regexp
+ }
+ var options = this.options
- const keyLine = valKeys.sort((_misc || _load_misc()).sortAlpha).map(maybeWrap).join(', ');
+ var twoStar = options.noglobstar ? star
+ : options.dot ? twoStarDot
+ : twoStarNoDot
+ var flags = options.nocase ? 'i' : ''
- if (typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number') {
- lines.push(`${keyLine} ${maybeWrap(val)}`);
- } else if (typeof val === 'object') {
- lines.push(`${keyLine}:\n${_stringify(val, { indent: indent + ' ' })}` + (options.topLevel ? '\n' : ''));
- } else {
- throw new TypeError();
- }
+ var re = set.map(function (pattern) {
+ return pattern.map(function (p) {
+ return (p === GLOBSTAR) ? twoStar
+ : (typeof p === 'string') ? regExpEscape(p)
+ : p._src
+ }).join('\\\/')
+ }).join('|')
- addedKeys = addedKeys.concat(valKeys);
- }
+ // must match entire pattern
+ // ending in a * or ** will make it less strict.
+ re = '^(?:' + re + ')$'
- return indent + lines.join(`\n${indent}`);
-}
+ // can match anything, as long as it's not this.
+ if (this.negate) re = '^(?!' + re + ').*$'
-function stringify(obj, noHeader, enableVersions) {
- const val = _stringify(obj, {
- indent: '',
- topLevel: true
- });
- if (noHeader) {
- return val;
+ try {
+ this.regexp = new RegExp(re, flags)
+ } catch (ex) {
+ this.regexp = false
}
+ return this.regexp
+}
- const lines = [];
- lines.push('# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.');
- lines.push(`# yarn lockfile v${(_constants || _load_constants()).LOCKFILE_VERSION}`);
- if (enableVersions) {
- lines.push(`# yarn v${(_package || _load_package()).version}`);
- lines.push(`# node ${NODE_VERSION}`);
+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)
}
- lines.push('\n');
- lines.push(val);
-
- return lines.join('\n');
+ return list
}
-/***/ }),
-/* 151 */,
-/* 152 */,
-/* 153 */,
-/* 154 */,
-/* 155 */,
-/* 156 */,
-/* 157 */,
-/* 158 */,
-/* 159 */,
-/* 160 */,
-/* 161 */,
-/* 162 */,
-/* 163 */,
-/* 164 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
+Minimatch.prototype.match = match
+function match (f, 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
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.fileDatesEqual = exports.copyFile = exports.unlink = undefined;
+ var options = this.options
-var _asyncToGenerator2;
+ // windows: need to use /, not \
+ if (path.sep !== '/') {
+ f = f.split(path.sep).join('/')
+ }
-function _load_asyncToGenerator() {
- return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1));
-}
+ // treat the test path as a set of pathparts.
+ f = f.split(slashSplit)
+ this.debug(this.pattern, 'split', f)
-// We want to preserve file timestamps when copying a file, since yarn uses them to decide if a file has
-// changed compared to the cache.
-// There are some OS specific cases here:
-// * On linux, fs.copyFile does not preserve timestamps, but does on OSX and Win.
-// * On windows, you must open a file with write permissions to call `fs.futimes`.
-// * On OSX you can open with read permissions and still call `fs.futimes`.
-let fixTimes = (() => {
- var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (fd, dest, data) {
- const doOpen = fd === undefined;
- let openfd = fd ? fd : -1;
+ // 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.
- if (disableTimestampCorrection === undefined) {
- // if timestamps match already, no correction is needed.
- // the need to correct timestamps varies based on OS and node versions.
- const destStat = yield lstat(dest);
- disableTimestampCorrection = fileDatesEqual(destStat.mtime, data.mtime);
- }
+ var set = this.set
+ this.debug(this.pattern, 'set', set)
- if (disableTimestampCorrection) {
- return;
- }
+ // 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
+ }
- if (doOpen) {
- try {
- openfd = yield open(dest, 'a', data.mode);
- } catch (er) {
- // file is likely read-only
- try {
- openfd = yield open(dest, 'r', data.mode);
- } catch (err) {
- // We can't even open this file for reading.
- return;
- }
- }
+ for (i = 0; i < set.length; i++) {
+ var pattern = set[i]
+ var file = f
+ if (options.matchBase && pattern.length === 1) {
+ file = [filename]
}
-
- try {
- if (openfd) {
- yield futimes(openfd, data.atime, data.mtime);
- }
- } catch (er) {
- // If `futimes` throws an exception, we probably have a case of a read-only file on Windows.
- // In this case we can just return. The incorrect timestamp will just cause that file to be recopied
- // on subsequent installs, which will effect yarn performance but not break anything.
- } finally {
- if (doOpen && openfd) {
- yield close(openfd);
- }
+ var hit = this.matchOne(file, pattern, partial)
+ if (hit) {
+ if (options.flipNegate) return true
+ return !this.negate
}
- });
-
- return function fixTimes(_x7, _x8, _x9) {
- return _ref3.apply(this, arguments);
- };
-})();
+ }
-// Compare file timestamps.
-// Some versions of Node on windows zero the milliseconds when utime is used.
+ // 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
-var _fs;
+ this.debug('matchOne',
+ { 'this': this, file: file, pattern: pattern })
-function _load_fs() {
- return _fs = _interopRequireDefault(__webpack_require__(3));
-}
+ this.debug('matchOne', file.length, pattern.length)
-var _promise;
+ 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]
-function _load_promise() {
- return _promise = __webpack_require__(40);
-}
+ this.debug(pattern, p, f)
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+ // should be impossible.
+ // some invalid regexp stuff in the set.
+ if (p === false) return false
-// This module serves as a wrapper for file operations that are inconsistant across node and OS versions.
+ if (p === GLOBSTAR) {
+ this.debug('GLOBSTAR', [pattern, p, f])
-let disableTimestampCorrection = undefined; // OS dependent. will be detected on first file copy.
+ // "**"
+ // 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
+ }
-const readFileBuffer = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.readFile);
-const close = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.close);
-const lstat = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.lstat);
-const open = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.open);
-const futimes = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.futimes);
+ // ok, let's see if we can swallow whatever we can.
+ while (fr < fl) {
+ var swallowee = file[fr]
-const write = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.write);
+ this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
-const unlink = exports.unlink = (0, (_promise || _load_promise()).promisify)(__webpack_require__(233));
+ // 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
+ }
-/**
- * Unlinks the destination to force a recreation. This is needed on case-insensitive file systems
- * to force the correct naming when the filename has changed only in character-casing. (Jest -> jest).
- */
-const copyFile = exports.copyFile = (() => {
- var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data, cleanup) {
- try {
- yield unlink(data.dest);
- yield copyFilePoly(data.src, data.dest, 0, data);
- } finally {
- if (cleanup) {
- cleanup();
+ // ** swallows a segment, and continue.
+ this.debug('globstar swallow a segment, and continue')
+ fr++
+ }
}
- }
- });
-
- return function copyFile(_x, _x2) {
- return _ref.apply(this, arguments);
- };
-})();
-// Node 8.5.0 introduced `fs.copyFile` which is much faster, so use that when available.
-// Otherwise we fall back to reading and writing files as buffers.
-const copyFilePoly = (src, dest, flags, data) => {
- if ((_fs || _load_fs()).default.copyFile) {
- return new Promise((resolve, reject) => (_fs || _load_fs()).default.copyFile(src, dest, flags, err => {
- if (err) {
- reject(err);
- } else {
- fixTimes(undefined, dest, data).then(() => resolve()).catch(ex => reject(ex));
+ // no match was found.
+ // However, in partial mode, we can't say this is necessarily over.
+ // If there's more *pattern* left, then
+ if (partial) {
+ // ran out of file
+ this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
+ if (fr === fl) return true
}
- }));
- } else {
- return copyWithBuffer(src, dest, flags, data);
- }
-};
-
-const copyWithBuffer = (() => {
- var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest, flags, data) {
- // Use open -> write -> futimes -> close sequence to avoid opening the file twice:
- // one with writeFile and one with utimes
- const fd = yield open(dest, 'w', data.mode);
- try {
- const buffer = yield readFileBuffer(src);
- yield write(fd, buffer, 0, buffer.length);
- yield fixTimes(fd, dest, data);
- } finally {
- yield close(fd);
+ return false
}
- });
- return function copyWithBuffer(_x3, _x4, _x5, _x6) {
- return _ref2.apply(this, arguments);
- };
-})();const fileDatesEqual = exports.fileDatesEqual = (a, b) => {
- const aTime = a.getTime();
- const bTime = b.getTime();
+ // 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') {
+ if (options.nocase) {
+ hit = f.toLowerCase() === p.toLowerCase()
+ } else {
+ hit = f === p
+ }
+ this.debug('string match', p, f, hit)
+ } else {
+ hit = f.match(p)
+ this.debug('pattern match', p, f, hit)
+ }
- if (process.platform !== 'win32') {
- return aTime === bTime;
+ if (!hit) return false
}
- // See https://github.com/nodejs/node/pull/12607
- // Submillisecond times from stat and utimes are truncated on Windows,
- // causing a file with mtime 8.0079998 and 8.0081144 to become 8.007 and 8.008
- // and making it impossible to update these files to their correct timestamps.
- if (Math.abs(aTime - bTime) <= 1) {
- return true;
+ // 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 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/
+ var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')
+ return emptyFileEnd
}
- const aTimeSec = Math.floor(aTime / 1000);
- const bTimeSec = Math.floor(bTime / 1000);
+ // should be unreachable.
+ throw new Error('wtf?')
+}
- // See https://github.com/nodejs/node/issues/2069
- // Some versions of Node on windows zero the milliseconds when utime is used
- // So if any of the time has a milliseconds part of zero we suspect that the
- // bug is present and compare only seconds.
- if (aTime - aTimeSec * 1000 === 0 || bTime - bTimeSec * 1000 === 0) {
- return aTimeSec === bTimeSec;
- }
+// replace stuff like \* with *
+function globUnescape (s) {
+ return s.replace(/\\(.)/g, '$1')
+}
+
+function regExpEscape (s) {
+ return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
+}
- return aTime === bTime;
-};
/***/ }),
-/* 165 */,
-/* 166 */,
-/* 167 */,
-/* 168 */,
-/* 169 */
+/* 61 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
+var wrappy = __webpack_require__(123)
+module.exports = wrappy(once)
+module.exports.strict = wrappy(onceStrict)
+once.proto = once(function () {
+ Object.defineProperty(Function.prototype, 'once', {
+ value: function () {
+ return once(this)
+ },
+ configurable: true
+ })
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.isFakeRoot = isFakeRoot;
-exports.isRootUser = isRootUser;
-function getUid() {
- if (process.platform !== 'win32' && process.getuid) {
- return process.getuid();
+ 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)
}
- return null;
+ f.called = false
+ return f
}
-exports.default = isRootUser(getUid()) && !isFakeRoot();
-function isFakeRoot() {
- return Boolean(process.env.FAKEROOTKEY);
+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 isRootUser(uid) {
- return uid === 0;
-}
/***/ }),
-/* 170 */,
-/* 171 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
+/* 62 */,
+/* 63 */
+/***/ (function(module, exports) {
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getDataDir = getDataDir;
-exports.getCacheDir = getCacheDir;
-exports.getConfigDir = getConfigDir;
-const path = __webpack_require__(0);
-const userHome = __webpack_require__(45).default;
+module.exports = __webpack_require__(532);
-const FALLBACK_CONFIG_DIR = path.join(userHome, '.config', 'yarn');
-const FALLBACK_CACHE_DIR = path.join(userHome, '.cache', 'yarn');
+/***/ }),
+/* 64 */,
+/* 65 */,
+/* 66 */,
+/* 67 */
+/***/ (function(module, exports) {
-function getDataDir() {
- if (process.platform === 'win32') {
- const WIN32_APPDATA_DIR = getLocalAppDataDir();
- return WIN32_APPDATA_DIR == null ? FALLBACK_CONFIG_DIR : path.join(WIN32_APPDATA_DIR, 'Data');
- } else if (process.env.XDG_DATA_HOME) {
- return path.join(process.env.XDG_DATA_HOME, 'yarn');
- } else {
- // This could arguably be ~/Library/Application Support/Yarn on Macs,
- // but that feels unintuitive for a cli tool
+// 7.2.1 RequireObjectCoercible(argument)
+module.exports = function (it) {
+ if (it == undefined) throw TypeError("Can't call method on " + it);
+ return it;
+};
- // Instead, use our prior fallback. Some day this could be
- // path.join(userHome, '.local', 'share', 'yarn')
- // or return path.join(WIN32_APPDATA_DIR, 'Data') on win32
- return FALLBACK_CONFIG_DIR;
- }
-}
-function getCacheDir() {
- if (process.platform === 'win32') {
- // process.env.TEMP also exists, but most apps put caches here
- return path.join(getLocalAppDataDir() || path.join(userHome, 'AppData', 'Local', 'Yarn'), 'Cache');
- } else if (process.env.XDG_CACHE_HOME) {
- return path.join(process.env.XDG_CACHE_HOME, 'yarn');
- } else if (process.platform === 'darwin') {
- return path.join(userHome, 'Library', 'Caches', 'Yarn');
- } else {
- return FALLBACK_CACHE_DIR;
- }
-}
+/***/ }),
+/* 68 */
+/***/ (function(module, exports, __webpack_require__) {
-function getConfigDir() {
- if (process.platform === 'win32') {
- // Use our prior fallback. Some day this could be
- // return path.join(WIN32_APPDATA_DIR, 'Config')
- const WIN32_APPDATA_DIR = getLocalAppDataDir();
- return WIN32_APPDATA_DIR == null ? FALLBACK_CONFIG_DIR : path.join(WIN32_APPDATA_DIR, 'Config');
- } else if (process.env.XDG_CONFIG_HOME) {
- return path.join(process.env.XDG_CONFIG_HOME, 'yarn');
- } else {
- return FALLBACK_CONFIG_DIR;
- }
-}
+var isObject = __webpack_require__(34);
+var document = __webpack_require__(11).document;
+// typeof document.createElement is 'object' in old IE
+var is = isObject(document) && isObject(document.createElement);
+module.exports = function (it) {
+ return is ? document.createElement(it) : {};
+};
-function getLocalAppDataDir() {
- return process.env.LOCALAPPDATA ? path.join(process.env.LOCALAPPDATA, 'Yarn') : null;
-}
/***/ }),
-/* 172 */,
-/* 173 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 69 */
+/***/ (function(module, exports) {
+
+module.exports = true;
-module.exports = { "default": __webpack_require__(179), __esModule: true };
/***/ }),
-/* 174 */
+/* 70 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-module.exports = balanced;
-function balanced(a, b, str) {
- if (a instanceof RegExp) a = maybeMatch(a, str);
- if (b instanceof RegExp) b = maybeMatch(b, str);
-
- var r = range(a, b, str);
+// 25.4.1.5 NewPromiseCapability(C)
+var aFunction = __webpack_require__(46);
- return r && {
- start: r[0],
- end: r[1],
- pre: str.slice(0, r[0]),
- body: str.slice(r[0] + a.length, r[1]),
- post: str.slice(r[1] + b.length)
- };
+function PromiseCapability(C) {
+ var resolve, reject;
+ this.promise = new C(function ($$resolve, $$reject) {
+ if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
+ resolve = $$resolve;
+ reject = $$reject;
+ });
+ this.resolve = aFunction(resolve);
+ this.reject = aFunction(reject);
}
-function maybeMatch(reg, str) {
- var m = str.match(reg);
- return m ? m[0] : null;
-}
+module.exports.f = function (C) {
+ return new PromiseCapability(C);
+};
-balanced.range = range;
-function range(a, b, str) {
- var begs, beg, left, right, result;
- var ai = str.indexOf(a);
- var bi = str.indexOf(b, ai + 1);
- var i = ai;
- if (ai >= 0 && bi > 0) {
- begs = [];
- left = str.length;
+/***/ }),
+/* 71 */
+/***/ (function(module, exports, __webpack_require__) {
- while (i >= 0 && !result) {
- if (i == ai) {
- begs.push(i);
- ai = str.indexOf(a, i + 1);
- } else if (begs.length == 1) {
- result = [ begs.pop(), bi ];
- } else {
- beg = begs.pop();
- if (beg < left) {
- left = beg;
- right = bi;
- }
+var def = __webpack_require__(50).f;
+var has = __webpack_require__(49);
+var TAG = __webpack_require__(13)('toStringTag');
- bi = str.indexOf(b, i + 1);
- }
+module.exports = function (it, tag, stat) {
+ if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
+};
- i = ai < bi && ai >= 0 ? ai : bi;
- }
- if (begs.length) {
- result = [ left, right ];
- }
- }
+/***/ }),
+/* 72 */
+/***/ (function(module, exports, __webpack_require__) {
- return result;
-}
+var shared = __webpack_require__(107)('keys');
+var uid = __webpack_require__(111);
+module.exports = function (key) {
+ return shared[key] || (shared[key] = uid(key));
+};
/***/ }),
-/* 175 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 73 */
+/***/ (function(module, exports) {
-var concatMap = __webpack_require__(178);
-var balanced = __webpack_require__(174);
+// 7.1.4 ToInteger
+var ceil = Math.ceil;
+var floor = Math.floor;
+module.exports = function (it) {
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+};
-module.exports = expandTop;
-var escSlash = '\0SLASH'+Math.random()+'\0';
-var escOpen = '\0OPEN'+Math.random()+'\0';
-var escClose = '\0CLOSE'+Math.random()+'\0';
-var escComma = '\0COMMA'+Math.random()+'\0';
-var escPeriod = '\0PERIOD'+Math.random()+'\0';
+/***/ }),
+/* 74 */
+/***/ (function(module, exports, __webpack_require__) {
-function numeric(str) {
- return parseInt(str, 10) == str
- ? parseInt(str, 10)
- : str.charCodeAt(0);
-}
+// to indexed object, toObject with fallback for non-array-like ES3 strings
+var IObject = __webpack_require__(131);
+var defined = __webpack_require__(67);
+module.exports = function (it) {
+ return IObject(defined(it));
+};
-function escapeBraces(str) {
- return str.split('\\\\').join(escSlash)
- .split('\\{').join(escOpen)
- .split('\\}').join(escClose)
- .split('\\,').join(escComma)
- .split('\\.').join(escPeriod);
-}
-function unescapeBraces(str) {
- return str.split(escSlash).join('\\')
- .split(escOpen).join('{')
- .split(escClose).join('}')
- .split(escComma).join(',')
- .split(escPeriod).join('.');
-}
+/***/ }),
+/* 75 */
+/***/ (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.
-// Basically just str.split(","), but handling cases
-// where we have nested braced sections, which should be
-// treated as individual members, like {a,{b,c},d}
-function parseCommaParts(str) {
- if (!str)
- return [''];
+module.exports = glob
- var parts = [];
- var m = balanced('{', '}', str);
+var fs = __webpack_require__(3)
+var rp = __webpack_require__(114)
+var minimatch = __webpack_require__(60)
+var Minimatch = minimatch.Minimatch
+var inherits = __webpack_require__(42)
+var EE = __webpack_require__(54).EventEmitter
+var path = __webpack_require__(0)
+var assert = __webpack_require__(22)
+var isAbsolute = __webpack_require__(76)
+var globSync = __webpack_require__(218)
+var common = __webpack_require__(115)
+var alphasort = common.alphasort
+var alphasorti = common.alphasorti
+var setopts = common.setopts
+var ownProp = common.ownProp
+var inflight = __webpack_require__(223)
+var util = __webpack_require__(2)
+var childrenIgnored = common.childrenIgnored
+var isIgnored = common.isIgnored
- if (!m)
- return str.split(',');
+var once = __webpack_require__(61)
- var pre = m.pre;
- var body = m.body;
- var post = m.post;
- var p = pre.split(',');
+function glob (pattern, options, cb) {
+ if (typeof options === 'function') cb = options, options = {}
+ if (!options) options = {}
- p[p.length-1] += '{' + body + '}';
- var postParts = parseCommaParts(post);
- if (post.length) {
- p[p.length-1] += postParts.shift();
- p.push.apply(p, postParts);
+ if (options.sync) {
+ if (cb)
+ throw new TypeError('callback provided to sync glob')
+ return globSync(pattern, options)
}
- parts.push.apply(parts, p);
-
- return parts;
+ return new Glob(pattern, options, cb)
}
-function expandTop(str) {
- if (!str)
- return [];
+glob.sync = globSync
+var GlobSync = glob.GlobSync = globSync.GlobSync
- // I don't know why Bash 4.3 does this, but it does.
- // Anything starting with {} will have the first two bytes preserved
- // but *only* at the top level, so {},a}b will not expand to anything,
- // but a{},b}c will be expanded to [a}c,abc].
- // One could argue that this is a bug in Bash, but since the goal of
- // this module is to match Bash's rules, we escape a leading {}
- if (str.substr(0, 2) === '{}') {
- str = '\\{\\}' + str.substr(2);
+// old api surface
+glob.glob = glob
+
+function extend (origin, add) {
+ if (add === null || typeof add !== 'object') {
+ return origin
}
- return expand(escapeBraces(str), true).map(unescapeBraces);
+ var keys = Object.keys(add)
+ var i = keys.length
+ while (i--) {
+ origin[keys[i]] = add[keys[i]]
+ }
+ return origin
}
-function identity(e) {
- return e;
-}
+glob.hasMagic = function (pattern, options_) {
+ var options = extend({}, options_)
+ options.noprocess = true
-function embrace(str) {
- return '{' + str + '}';
-}
-function isPadded(el) {
- return /^-?0\d/.test(el);
-}
+ var g = new Glob(pattern, options)
+ var set = g.minimatch.set
-function lte(i, y) {
- return i <= y;
-}
-function gte(i, y) {
- return i >= y;
+ if (!pattern)
+ return false
+
+ if (set.length > 1)
+ return true
+
+ for (var j = 0; j < set[0].length; j++) {
+ if (typeof set[0][j] !== 'string')
+ return true
+ }
+
+ return false
}
-function expand(str, isTop) {
- var expansions = [];
+glob.Glob = Glob
+inherits(Glob, EE)
+function Glob (pattern, options, cb) {
+ if (typeof options === 'function') {
+ cb = options
+ options = null
+ }
+
+ 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
- var m = balanced('{', '}', str);
- if (!m || /\$$/.test(m.pre)) return [str];
+ // process each pattern in the minimatch set
+ var n = this.minimatch.set.length
- var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
- var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
- var isSequence = isNumericSequence || isAlphaSequence;
- var isOptions = m.body.indexOf(',') >= 0;
- if (!isSequence && !isOptions) {
- // {a},b}
- if (m.post.match(/,.*\}/)) {
- str = m.pre + '{' + m.body + escClose + m.post;
- return expand(str);
- }
- return [str];
- }
+ // 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)
- var n;
- if (isSequence) {
- n = m.body.split(/\.\./);
- } else {
- n = parseCommaParts(m.body);
- if (n.length === 1) {
- // x{{a,b}}y ==> x{a}y x{b}y
- n = expand(n[0], false).map(embrace);
- if (n.length === 1) {
- var post = m.post.length
- ? expand(m.post, false)
- : [''];
- return post.map(function(p) {
- return m.pre + n[0] + p;
- });
- }
- }
+ if (typeof cb === 'function') {
+ cb = once(cb)
+ this.on('error', cb)
+ this.on('end', function (matches) {
+ cb(null, matches)
+ })
}
- // at this point, n is the parts, and we know it's not a comma set
- // with a single entry.
+ var self = this
+ this._processing = 0
- // no need to expand pre, since it is guaranteed to be free of brace-sets
- var pre = m.pre;
- var post = m.post.length
- ? expand(m.post, false)
- : [''];
+ this._emitQueue = []
+ this._processQueue = []
+ this.paused = false
- var N;
+ if (this.noprocess)
+ return this
- if (isSequence) {
- var x = numeric(n[0]);
- var y = numeric(n[1]);
- var width = Math.max(n[0].length, n[1].length)
- var incr = n.length == 3
- ? Math.abs(numeric(n[2]))
- : 1;
- var test = lte;
- var reverse = y < x;
- if (reverse) {
- incr *= -1;
- test = gte;
- }
- var pad = n.some(isPadded);
+ if (n === 0)
+ return done()
- N = [];
+ var sync = true
+ for (var i = 0; i < n; i ++) {
+ this._process(this.minimatch.set[i], i, false, done)
+ }
+ sync = false
- for (var i = x; test(i, y); i += incr) {
- var c;
- if (isAlphaSequence) {
- c = String.fromCharCode(i);
- if (c === '\\')
- c = '';
+ function done () {
+ --self._processing
+ if (self._processing <= 0) {
+ if (sync) {
+ process.nextTick(function () {
+ self._finish()
+ })
} else {
- c = String(i);
- if (pad) {
- var need = width - c.length;
- if (need > 0) {
- var z = new Array(need + 1).join('0');
- if (i < 0)
- c = '-' + z + c.slice(1);
- else
- c = z + c;
- }
- }
+ self._finish()
}
- N.push(c);
- }
- } else {
- N = concatMap(n, function(el) { return expand(el, false) });
- }
-
- for (var j = 0; j < N.length; j++) {
- for (var k = 0; k < post.length; k++) {
- var expansion = pre + N[j] + post[k];
- if (!isTop || isSequence || expansion)
- expansions.push(expansion);
}
}
-
- return expansions;
}
+Glob.prototype._finish = function () {
+ assert(this instanceof Glob)
+ if (this.aborted)
+ return
+ if (this.realpath && !this._didRealpath)
+ return this._realpath()
-/***/ }),
-/* 176 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
+ common.finish(this)
+ this.emit('end', this.found)
+}
+Glob.prototype._realpath = function () {
+ if (this._didRealpath)
+ return
-function preserveCamelCase(str) {
- let isLastCharLower = false;
- let isLastCharUpper = false;
- let isLastLastCharUpper = false;
+ this._didRealpath = true
- for (let i = 0; i < str.length; i++) {
- const c = str[i];
+ var n = this.matches.length
+ if (n === 0)
+ return this._finish()
- if (isLastCharLower && /[a-zA-Z]/.test(c) && c.toUpperCase() === c) {
- str = str.substr(0, i) + '-' + str.substr(i);
- isLastCharLower = false;
- isLastLastCharUpper = isLastCharUpper;
- isLastCharUpper = true;
- i++;
- } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(c) && c.toLowerCase() === c) {
- str = str.substr(0, i - 1) + '-' + str.substr(i - 1);
- isLastLastCharUpper = isLastCharUpper;
- isLastCharUpper = false;
- isLastCharLower = true;
- } else {
- isLastCharLower = c.toLowerCase() === c;
- isLastLastCharUpper = isLastCharUpper;
- isLastCharUpper = c.toUpperCase() === c;
- }
- }
+ var self = this
+ for (var i = 0; i < this.matches.length; i++)
+ this._realpathSet(i, next)
- return str;
+ function next () {
+ if (--n === 0)
+ self._finish()
+ }
}
-module.exports = function (str) {
- if (arguments.length > 1) {
- str = Array.from(arguments)
- .map(x => x.trim())
- .filter(x => x.length)
- .join('-');
- } else {
- str = str.trim();
- }
+Glob.prototype._realpathSet = function (index, cb) {
+ var matchset = this.matches[index]
+ if (!matchset)
+ return cb()
- if (str.length === 0) {
- return '';
- }
+ var found = Object.keys(matchset)
+ var self = this
+ var n = found.length
- if (str.length === 1) {
- return str.toLowerCase();
- }
+ if (n === 0)
+ return cb()
- if (/^[a-z0-9]+$/.test(str)) {
- return 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
- const hasUpperCase = str !== str.toLowerCase();
+ if (--n === 0) {
+ self.matches[index] = set
+ cb()
+ }
+ })
+ })
+}
- if (hasUpperCase) {
- str = preserveCamelCase(str);
- }
+Glob.prototype._mark = function (p) {
+ return common.mark(this, p)
+}
- return str
- .replace(/^[_.\- ]+/, '')
- .toLowerCase()
- .replace(/[_.\- ]+(\w|$)/g, (m, p1) => p1.toUpperCase());
-};
+Glob.prototype._makeAbs = function (f) {
+ return common.makeAbs(this, f)
+}
+Glob.prototype.abort = function () {
+ this.aborted = true
+ this.emit('abort')
+}
-/***/ }),
-/* 177 */,
-/* 178 */
-/***/ (function(module, exports) {
+Glob.prototype.pause = function () {
+ if (!this.paused) {
+ this.paused = true
+ this.emit('pause')
+ }
+}
-module.exports = function (xs, fn) {
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- var x = fn(xs[i], i);
- if (isArray(x)) res.push.apply(res, x);
- else res.push(x);
+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])
+ }
}
- return res;
-};
-
-var isArray = Array.isArray || function (xs) {
- return Object.prototype.toString.call(xs) === '[object Array]';
-};
+ 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])
+ }
+ }
+ }
+}
+Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
+ assert(this instanceof Glob)
+ assert(typeof cb === 'function')
-/***/ }),
-/* 179 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (this.aborted)
+ return
-__webpack_require__(205);
-__webpack_require__(207);
-__webpack_require__(210);
-__webpack_require__(206);
-__webpack_require__(208);
-__webpack_require__(209);
-module.exports = __webpack_require__(23).Promise;
+ this._processing++
+ if (this.paused) {
+ this._processQueue.push([pattern, index, inGlobStar, cb])
+ return
+ }
+ //console.error('PROCESS %d', this._processing, pattern)
-/***/ }),
-/* 180 */
-/***/ (function(module, exports) {
+ // 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.
-module.exports = function () { /* empty */ };
+ // 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
+ case 0:
+ // pattern *starts* with some non-trivial item.
+ // going to readdir(cwd), but not include the prefix in matches.
+ prefix = null
+ break
-/***/ }),
-/* 181 */
-/***/ (function(module, exports) {
+ 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
+ }
-module.exports = function (it, Constructor, name, forbiddenField) {
- if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
- throw TypeError(name + ': incorrect invocation!');
- } return it;
-};
+ var remain = pattern.slice(n)
+ // 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
-/***/ }),
-/* 182 */
-/***/ (function(module, exports, __webpack_require__) {
+ var abs = this._makeAbs(read)
-// false -> Array#indexOf
-// true -> Array#includes
-var toIObject = __webpack_require__(74);
-var toLength = __webpack_require__(110);
-var toAbsoluteIndex = __webpack_require__(200);
-module.exports = function (IS_INCLUDES) {
- return function ($this, el, fromIndex) {
- var O = toIObject($this);
- var length = toLength(O.length);
- var index = toAbsoluteIndex(fromIndex, length);
- var value;
- // Array#includes uses SameValueZero equality algorithm
- // eslint-disable-next-line no-self-compare
- if (IS_INCLUDES && el != el) while (length > index) {
- value = O[index++];
- // eslint-disable-next-line no-self-compare
- if (value != value) return true;
- // Array#indexOf ignores holes, Array#includes - not
- } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
- if (O[index] === el) return IS_INCLUDES || index || 0;
- } return !IS_INCLUDES && -1;
- };
-};
+ //if ignored, skip _processing
+ if (childrenIgnored(this, read))
+ return cb()
+ 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)
+}
-/***/ }),
-/* 183 */
-/***/ (function(module, exports, __webpack_require__) {
+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)
+ })
+}
-var ctx = __webpack_require__(48);
-var call = __webpack_require__(187);
-var isArrayIter = __webpack_require__(186);
-var anObject = __webpack_require__(27);
-var toLength = __webpack_require__(110);
-var getIterFn = __webpack_require__(203);
-var BREAK = {};
-var RETURN = {};
-var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
- var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
- var f = ctx(fn, that, entries ? 2 : 1);
- var index = 0;
- var length, step, iterator, result;
- if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
- // fast case for arrays with default iterator
- if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
- result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
- if (result === BREAK || result === RETURN) return result;
- } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
- result = call(iterator, f, step.value, entries);
- if (result === BREAK || result === RETURN) return result;
- }
-};
-exports.BREAK = BREAK;
-exports.RETURN = RETURN;
+Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+ // if the abs isn't a dir, then nothing can match!
+ if (!entries)
+ return cb()
-/***/ }),
-/* 184 */
-/***/ (function(module, exports, __webpack_require__) {
+ // 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) === '.'
-module.exports = !__webpack_require__(33) && !__webpack_require__(85)(function () {
- return Object.defineProperty(__webpack_require__(68)('div'), 'a', { get: function () { return 7; } }).a != 7;
-});
+ 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)
+ }
+ }
+ //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
-/***/ }),
-/* 185 */
-/***/ (function(module, exports) {
+ var len = matchedEntries.length
+ // If there are no matched entries, then nothing matches.
+ if (len === 0)
+ return cb()
-// fast apply, http://jsperf.lnkit.com/fast-apply/5
-module.exports = function (fn, args, that) {
- var un = that === undefined;
- switch (args.length) {
- case 0: return un ? fn()
- : fn.call(that);
- case 1: return un ? fn(args[0])
- : fn.call(that, args[0]);
- case 2: return un ? fn(args[0], args[1])
- : fn.call(that, args[0], args[1]);
- case 3: return un ? fn(args[0], args[1], args[2])
- : fn.call(that, args[0], args[1], args[2]);
- case 4: return un ? fn(args[0], args[1], args[2], args[3])
- : fn.call(that, args[0], args[1], args[2], args[3]);
- } return fn.apply(that, args);
-};
+ // 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 (remain.length === 1 && !this.mark && !this.stat) {
+ if (!this.matches[index])
+ this.matches[index] = Object.create(null)
-/***/ }),
-/* 186 */
-/***/ (function(module, exports, __webpack_require__) {
+ for (var i = 0; i < len; i ++) {
+ var e = matchedEntries[i]
+ if (prefix) {
+ if (prefix !== '/')
+ e = prefix + '/' + e
+ else
+ e = prefix + e
+ }
-// check on default Array iterator
-var Iterators = __webpack_require__(35);
-var ITERATOR = __webpack_require__(13)('iterator');
-var ArrayProto = Array.prototype;
+ 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()
+ }
-module.exports = function (it) {
- return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
-};
+ // 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
-/***/ }),
-/* 187 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (isIgnored(this, e))
+ return
-// call something on iterator step with safe closing on error
-var anObject = __webpack_require__(27);
-module.exports = function (iterator, fn, value, entries) {
- try {
- return entries ? fn(anObject(value)[0], value[1]) : fn(value);
- // 7.4.6 IteratorClose(iterator, completion)
- } catch (e) {
- var ret = iterator['return'];
- if (ret !== undefined) anObject(ret.call(iterator));
- throw e;
+ if (this.paused) {
+ this._emitQueue.push([index, e])
+ return
}
-};
+ var abs = isAbsolute(e) ? e : this._makeAbs(e)
-/***/ }),
-/* 188 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (this.mark)
+ e = this._mark(e)
-"use strict";
+ if (this.absolute)
+ e = abs
-var create = __webpack_require__(192);
-var descriptor = __webpack_require__(106);
-var setToStringTag = __webpack_require__(71);
-var IteratorPrototype = {};
+ if (this.matches[index][e])
+ return
-// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
-__webpack_require__(31)(IteratorPrototype, __webpack_require__(13)('iterator'), function () { return this; });
+ if (this.nodir) {
+ var c = this.cache[abs]
+ if (c === 'DIR' || Array.isArray(c))
+ return
+ }
-module.exports = function (Constructor, NAME, next) {
- Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
- setToStringTag(Constructor, NAME + ' Iterator');
-};
+ this.matches[index][e] = true
+ var st = this.statCache[abs]
+ if (st)
+ this.emit('stat', e, st)
-/***/ }),
-/* 189 */
-/***/ (function(module, exports, __webpack_require__) {
+ this.emit('match', e)
+}
-var ITERATOR = __webpack_require__(13)('iterator');
-var SAFE_CLOSING = false;
+Glob.prototype._readdirInGlobStar = function (abs, cb) {
+ if (this.aborted)
+ return
-try {
- var riter = [7][ITERATOR]();
- riter['return'] = function () { SAFE_CLOSING = true; };
- // eslint-disable-next-line no-throw-literal
- Array.from(riter, function () { throw 2; });
-} catch (e) { /* empty */ }
+ // follow all symlinked directories forever
+ // just proceed as if this is a non-globstar situation
+ if (this.follow)
+ return this._readdir(abs, false, cb)
-module.exports = function (exec, skipClosing) {
- if (!skipClosing && !SAFE_CLOSING) return false;
- var safe = false;
- try {
- var arr = [7];
- var iter = arr[ITERATOR]();
- iter.next = function () { return { done: safe = true }; };
- arr[ITERATOR] = function () { return iter; };
- exec(arr);
- } catch (e) { /* empty */ }
- return safe;
-};
+ var lstatkey = 'lstat\0' + abs
+ var self = this
+ var lstatcb = inflight(lstatkey, lstatcb_)
+ if (lstatcb)
+ fs.lstat(abs, lstatcb)
-/***/ }),
-/* 190 */
-/***/ (function(module, exports) {
+ function lstatcb_ (er, lstat) {
+ if (er && er.code === 'ENOENT')
+ return cb()
-module.exports = function (done, value) {
- return { value: value, done: !!done };
-};
+ var isSym = lstat && lstat.isSymbolicLink()
+ self.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()) {
+ self.cache[abs] = 'FILE'
+ cb()
+ } else
+ self._readdir(abs, false, cb)
+ }
+}
-/***/ }),
-/* 191 */
-/***/ (function(module, exports, __webpack_require__) {
+Glob.prototype._readdir = function (abs, inGlobStar, cb) {
+ if (this.aborted)
+ return
-var global = __webpack_require__(11);
-var macrotask = __webpack_require__(109).set;
-var Observer = global.MutationObserver || global.WebKitMutationObserver;
-var process = global.process;
-var Promise = global.Promise;
-var isNode = __webpack_require__(47)(process) == 'process';
+ cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
+ if (!cb)
+ return
-module.exports = function () {
- var head, last, notify;
+ //console.error('RD %j %j', +inGlobStar, abs)
+ if (inGlobStar && !ownProp(this.symlinks, abs))
+ return this._readdirInGlobStar(abs, cb)
- var flush = function () {
- var parent, fn;
- if (isNode && (parent = process.domain)) parent.exit();
- while (head) {
- fn = head.fn;
- head = head.next;
- try {
- fn();
- } catch (e) {
- if (head) notify();
- else last = undefined;
- throw e;
- }
- } last = undefined;
- if (parent) parent.enter();
- };
+ if (ownProp(this.cache, abs)) {
+ var c = this.cache[abs]
+ if (!c || c === 'FILE')
+ return cb()
- // Node.js
- if (isNode) {
- notify = function () {
- process.nextTick(flush);
- };
- // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
- } else if (Observer && !(global.navigator && global.navigator.standalone)) {
- var toggle = true;
- var node = document.createTextNode('');
- new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
- notify = function () {
- node.data = toggle = !toggle;
- };
- // environments with maybe non-completely correct, but existent Promise
- } else if (Promise && Promise.resolve) {
- // Promise.resolve without an argument throws an error in LG WebOS 2
- var promise = Promise.resolve(undefined);
- notify = function () {
- promise.then(flush);
- };
- // for other environments - macrotask based on:
- // - setImmediate
- // - MessageChannel
- // - window.postMessag
- // - onreadystatechange
- // - setTimeout
- } else {
- notify = function () {
- // strange IE + webpack dev server bug - use .call(global)
- macrotask.call(global, flush);
- };
+ if (Array.isArray(c))
+ return cb(null, c)
}
- return function (fn) {
- var task = { fn: fn, next: undefined };
- if (last) last.next = task;
- if (!head) {
- head = task;
- notify();
- } last = task;
- };
-};
+ var self = this
+ fs.readdir(abs, readdirCb(this, abs, cb))
+}
+function readdirCb (self, abs, cb) {
+ return function (er, entries) {
+ if (er)
+ self._readdirError(abs, er, cb)
+ else
+ self._readdirEntries(abs, entries, cb)
+ }
+}
-/***/ }),
-/* 192 */
-/***/ (function(module, exports, __webpack_require__) {
+Glob.prototype._readdirEntries = function (abs, entries, cb) {
+ if (this.aborted)
+ return
-// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
-var anObject = __webpack_require__(27);
-var dPs = __webpack_require__(193);
-var enumBugKeys = __webpack_require__(101);
-var IE_PROTO = __webpack_require__(72)('IE_PROTO');
-var Empty = function () { /* empty */ };
-var PROTOTYPE = 'prototype';
+ // 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
+ }
+ }
-// Create object with fake `null` prototype: use iframe Object with cleared prototype
-var createDict = function () {
- // Thrash, waste and sodomy: IE GC bug
- var iframe = __webpack_require__(68)('iframe');
- var i = enumBugKeys.length;
- var lt = '<';
- var gt = '>';
- var iframeDocument;
- iframe.style.display = 'none';
- __webpack_require__(102).appendChild(iframe);
- iframe.src = 'javascript:'; // eslint-disable-line no-script-url
- // createDict = iframe.contentWindow.Object;
- // html.removeChild(iframe);
- iframeDocument = iframe.contentWindow.document;
- iframeDocument.open();
- iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
- iframeDocument.close();
- createDict = iframeDocument.F;
- while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
- return createDict();
-};
+ this.cache[abs] = entries
+ return cb(null, entries)
+}
-module.exports = Object.create || function create(O, Properties) {
- var result;
- if (O !== null) {
- Empty[PROTOTYPE] = anObject(O);
- result = new Empty();
- Empty[PROTOTYPE] = null;
- // add "__proto__" for Object.getPrototypeOf polyfill
- result[IE_PROTO] = O;
- } else result = createDict();
- return Properties === undefined ? result : dPs(result, Properties);
-};
+Glob.prototype._readdirError = function (f, er, cb) {
+ if (this.aborted)
+ return
+ // 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
-/***/ }),
-/* 193 */
-/***/ (function(module, exports, __webpack_require__) {
+ case 'ENOENT': // not terribly unusual
+ case 'ELOOP':
+ case 'ENAMETOOLONG':
+ case 'UNKNOWN':
+ this.cache[this._makeAbs(f)] = false
+ break
-var dP = __webpack_require__(50);
-var anObject = __webpack_require__(27);
-var getKeys = __webpack_require__(132);
+ 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
+ }
-module.exports = __webpack_require__(33) ? Object.defineProperties : function defineProperties(O, Properties) {
- anObject(O);
- var keys = getKeys(Properties);
- var length = keys.length;
- var i = 0;
- var P;
- while (length > i) dP.f(O, P = keys[i++], Properties[P]);
- return O;
-};
+ return cb()
+}
+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)
+ })
+}
-/***/ }),
-/* 194 */
-/***/ (function(module, exports, __webpack_require__) {
-// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
-var has = __webpack_require__(49);
-var toObject = __webpack_require__(133);
-var IE_PROTO = __webpack_require__(72)('IE_PROTO');
-var ObjectProto = Object.prototype;
+Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+ //console.error('pgs2', prefix, remain[0], entries)
-module.exports = Object.getPrototypeOf || function (O) {
- O = toObject(O);
- if (has(O, IE_PROTO)) return O[IE_PROTO];
- if (typeof O.constructor == 'function' && O instanceof O.constructor) {
- return O.constructor.prototype;
- } return O instanceof Object ? ObjectProto : null;
-};
+ // no entries means not a dir, so it can never have matches
+ // foo.txt/** doesn't match foo.txt
+ if (!entries)
+ return cb()
+ // 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)
-/***/ }),
-/* 195 */
-/***/ (function(module, exports, __webpack_require__) {
+ // the noGlobStar pattern exits the inGlobStar state
+ this._process(noGlobStar, index, false, cb)
-var has = __webpack_require__(49);
-var toIObject = __webpack_require__(74);
-var arrayIndexOf = __webpack_require__(182)(false);
-var IE_PROTO = __webpack_require__(72)('IE_PROTO');
+ var isSym = this.symlinks[abs]
+ var len = entries.length
-module.exports = function (object, names) {
- var O = toIObject(object);
- var i = 0;
- var result = [];
- var key;
- for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
- // Don't enum bug & hidden keys
- while (names.length > i) if (has(O, key = names[i++])) {
- ~arrayIndexOf(result, key) || result.push(key);
- }
- return result;
-};
+ // If it's a symlink, and we're in a globstar, then stop
+ if (isSym && inGlobStar)
+ return cb()
+ for (var i = 0; i < len; i++) {
+ var e = entries[i]
+ if (e.charAt(0) === '.' && !this.dot)
+ continue
-/***/ }),
-/* 196 */
-/***/ (function(module, exports, __webpack_require__) {
+ // these two cases enter the inGlobStar state
+ var instead = gspref.concat(entries[i], remainWithoutGlobStar)
+ this._process(instead, index, true, cb)
-var hide = __webpack_require__(31);
-module.exports = function (target, src, safe) {
- for (var key in src) {
- if (safe && target[key]) target[key] = src[key];
- else hide(target, key, src[key]);
- } return target;
-};
+ var below = gspref.concat(entries[i], remain)
+ this._process(below, index, true, cb)
+ }
+ cb()
+}
-/***/ }),
-/* 197 */
-/***/ (function(module, exports, __webpack_require__) {
+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) {
-module.exports = __webpack_require__(31);
+ //console.error('ps2', prefix, exists)
+ if (!this.matches[index])
+ this.matches[index] = Object.create(null)
-/***/ }),
-/* 198 */
-/***/ (function(module, exports, __webpack_require__) {
+ // If it doesn't exist, then just mark the lack of results
+ if (!exists)
+ return cb()
-"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 += '/'
+ }
+ }
-var global = __webpack_require__(11);
-var core = __webpack_require__(23);
-var dP = __webpack_require__(50);
-var DESCRIPTORS = __webpack_require__(33);
-var SPECIES = __webpack_require__(13)('species');
+ if (process.platform === 'win32')
+ prefix = prefix.replace(/\\/g, '/')
-module.exports = function (KEY) {
- var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
- if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
- configurable: true,
- get: function () { return this; }
- });
-};
+ // 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) === '/'
-/***/ }),
-/* 199 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (f.length > this.maxLength)
+ return cb()
-var toInteger = __webpack_require__(73);
-var defined = __webpack_require__(67);
-// true -> String#at
-// false -> String#codePointAt
-module.exports = function (TO_STRING) {
- return function (that, pos) {
- var s = String(defined(that));
- var i = toInteger(pos);
- var l = s.length;
- var a, b;
- if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
- a = s.charCodeAt(i);
- return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
- ? TO_STRING ? s.charAt(i) : a
- : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
- };
-};
+ if (!this.stat && ownProp(this.cache, abs)) {
+ var c = this.cache[abs]
+ if (Array.isArray(c))
+ c = 'DIR'
-/***/ }),
-/* 200 */
-/***/ (function(module, exports, __webpack_require__) {
+ // It exists, but maybe not how we need it
+ if (!needDir || c === 'DIR')
+ return cb(null, c)
-var toInteger = __webpack_require__(73);
-var max = Math.max;
-var min = Math.min;
-module.exports = function (index, length) {
- index = toInteger(index);
- return index < 0 ? max(index + length, 0) : min(index, length);
-};
+ if (needDir && c === 'FILE')
+ return cb()
+ // otherwise we have to stat, because maybe c=true
+ // if we know it exists, but not what it is.
+ }
-/***/ }),
-/* 201 */
-/***/ (function(module, exports, __webpack_require__) {
+ 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)
+ }
+ }
-// 7.1.1 ToPrimitive(input [, PreferredType])
-var isObject = __webpack_require__(34);
-// instead of the ES6 spec version, we didn't implement @@toPrimitive case
-// and the second argument - flag - preferred type is a string
-module.exports = function (it, S) {
- if (!isObject(it)) return it;
- var fn, val;
- if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
- if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
- if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
- throw TypeError("Can't convert object to primitive value");
-};
+ var self = this
+ var statcb = inflight('stat\0' + abs, lstatcb_)
+ if (statcb)
+ 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 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)
+ }
+ }
+}
-/***/ }),
-/* 202 */
-/***/ (function(module, exports, __webpack_require__) {
+Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
+ if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
+ this.statCache[abs] = false
+ return cb()
+ }
-var global = __webpack_require__(11);
-var navigator = global.navigator;
+ var needDir = f.slice(-1) === '/'
+ this.statCache[abs] = stat
-module.exports = navigator && navigator.userAgent || '';
+ 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
-/***/ }),
-/* 203 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (needDir && c === 'FILE')
+ return cb()
-var classof = __webpack_require__(100);
-var ITERATOR = __webpack_require__(13)('iterator');
-var Iterators = __webpack_require__(35);
-module.exports = __webpack_require__(23).getIteratorMethod = function (it) {
- if (it != undefined) return it[ITERATOR]
- || it['@@iterator']
- || Iterators[classof(it)];
-};
+ return cb(null, c, stat)
+}
/***/ }),
-/* 204 */
+/* 76 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var addToUnscopables = __webpack_require__(180);
-var step = __webpack_require__(190);
-var Iterators = __webpack_require__(35);
-var toIObject = __webpack_require__(74);
-// 22.1.3.4 Array.prototype.entries()
-// 22.1.3.13 Array.prototype.keys()
-// 22.1.3.29 Array.prototype.values()
-// 22.1.3.30 Array.prototype[@@iterator]()
-module.exports = __webpack_require__(103)(Array, 'Array', function (iterated, kind) {
- this._t = toIObject(iterated); // target
- this._i = 0; // next index
- this._k = kind; // kind
-// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
-}, function () {
- var O = this._t;
- var kind = this._k;
- var index = this._i++;
- if (!O || index >= O.length) {
- this._t = undefined;
- return step(1);
- }
- if (kind == 'keys') return step(0, index);
- if (kind == 'values') return step(0, O[index]);
- return step(0, [index, O[index]]);
-}, 'values');
+function posix(path) {
+ return path.charAt(0) === '/';
+}
-// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
-Iterators.Arguments = Iterators.Array;
+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) !== ':');
-addToUnscopables('keys');
-addToUnscopables('values');
-addToUnscopables('entries');
+ // UNC paths are always absolute
+ return Boolean(result[2] || isUnc);
+}
+
+module.exports = process.platform === 'win32' ? win32 : posix;
+module.exports.posix = posix;
+module.exports.win32 = win32;
/***/ }),
-/* 205 */
+/* 77 */,
+/* 78 */,
+/* 79 */
/***/ (function(module, exports) {
-
+module.exports = __webpack_require__(244);
/***/ }),
-/* 206 */
+/* 80 */,
+/* 81 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var LIBRARY = __webpack_require__(69);
-var global = __webpack_require__(11);
-var ctx = __webpack_require__(48);
-var classof = __webpack_require__(100);
-var $export = __webpack_require__(41);
-var isObject = __webpack_require__(34);
-var aFunction = __webpack_require__(46);
-var anInstance = __webpack_require__(181);
-var forOf = __webpack_require__(183);
-var speciesConstructor = __webpack_require__(108);
-var task = __webpack_require__(109).set;
-var microtask = __webpack_require__(191)();
-var newPromiseCapabilityModule = __webpack_require__(70);
-var perform = __webpack_require__(104);
-var userAgent = __webpack_require__(202);
-var promiseResolve = __webpack_require__(105);
-var PROMISE = 'Promise';
-var TypeError = global.TypeError;
-var process = global.process;
-var versions = process && process.versions;
-var v8 = versions && versions.v8 || '';
-var $Promise = global[PROMISE];
-var isNode = classof(process) == 'process';
-var empty = function () { /* empty */ };
-var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
-var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
-var USE_NATIVE = !!function () {
- try {
- // correct subclassing with @@species support
- var promise = $Promise.resolve(1);
- var FakePromise = (promise.constructor = {})[__webpack_require__(13)('species')] = function (exec) {
- exec(empty, empty);
- };
- // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
- return (isNode || typeof PromiseRejectionEvent == 'function')
- && promise.then(empty) instanceof FakePromise
- // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
- // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
- // we can't detect it synchronously, so just check versions
- && v8.indexOf('6.6') !== 0
- && userAgent.indexOf('Chrome/66') === -1;
- } catch (e) { /* empty */ }
-}();
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
-// helpers
-var isThenable = function (it) {
- var then;
- return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
-};
-var notify = function (promise, isReject) {
- if (promise._n) return;
- promise._n = true;
- var chain = promise._c;
- microtask(function () {
- var value = promise._v;
- var ok = promise._s == 1;
- var i = 0;
- var run = function (reaction) {
- var handler = ok ? reaction.ok : reaction.fail;
- var resolve = reaction.resolve;
- var reject = reaction.reject;
- var domain = reaction.domain;
- var result, then, exited;
- try {
- if (handler) {
- if (!ok) {
- if (promise._h == 2) onHandleUnhandled(promise);
- promise._h = 1;
- }
- if (handler === true) result = value;
- else {
- if (domain) domain.enter();
- result = handler(value); // may throw
- if (domain) {
- domain.exit();
- exited = true;
- }
- }
- if (result === reaction.promise) {
- reject(TypeError('Promise-chain cycle'));
- } else if (then = isThenable(result)) {
- then.call(result, resolve, reject);
- } else resolve(result);
- } else reject(value);
- } catch (e) {
- if (domain && !exited) domain.exit();
- reject(e);
- }
- };
- while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
- promise._c = [];
- promise._n = false;
- if (isReject && !promise._h) onUnhandled(promise);
- });
-};
-var onUnhandled = function (promise) {
- task.call(global, function () {
- var value = promise._v;
- var unhandled = isUnhandled(promise);
- var result, handler, console;
- if (unhandled) {
- result = perform(function () {
- if (isNode) {
- process.emit('unhandledRejection', value, promise);
- } else if (handler = global.onunhandledrejection) {
- handler({ promise: promise, reason: value });
- } else if ((console = global.console) && console.error) {
- console.error('Unhandled promise rejection', value);
- }
- });
- // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
- promise._h = isNode || isUnhandled(promise) ? 2 : 1;
- } promise._a = undefined;
- if (unhandled && result.e) throw result.v;
- });
-};
-var isUnhandled = function (promise) {
- return promise._h !== 1 && (promise._a || promise._c).length === 0;
-};
-var onHandleUnhandled = function (promise) {
- task.call(global, function () {
- var handler;
- if (isNode) {
- process.emit('rejectionHandled', promise);
- } else if (handler = global.onrejectionhandled) {
- handler({ promise: promise, reason: promise._v });
- }
- });
-};
-var $reject = function (value) {
- var promise = this;
- if (promise._d) return;
- promise._d = true;
- promise = promise._w || promise; // unwrap
- promise._v = value;
- promise._s = 2;
- if (!promise._a) promise._a = promise._c.slice();
- notify(promise, true);
-};
-var $resolve = function (value) {
- var promise = this;
- var then;
- if (promise._d) return;
- promise._d = true;
- promise = promise._w || promise; // unwrap
- try {
- if (promise === value) throw TypeError("Promise can't be resolved itself");
- if (then = isThenable(value)) {
- microtask(function () {
- var wrapper = { _w: promise, _d: false }; // wrap
- try {
- then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
- } catch (e) {
- $reject.call(wrapper, e);
- }
- });
- } else {
- promise._v = value;
- promise._s = 1;
- notify(promise, false);
- }
- } catch (e) {
- $reject.call({ _w: promise, _d: false }, e); // wrap
- }
+exports.default = function (str, fileLoc = 'lockfile') {
+ str = (0, (_stripBom || _load_stripBom()).default)(str);
+ return hasMergeConflicts(str) ? parseWithConflict(str, fileLoc) : { type: 'success', object: parse(str, fileLoc) };
};
-// constructor polyfill
-if (!USE_NATIVE) {
- // 25.4.3.1 Promise(executor)
- $Promise = function Promise(executor) {
- anInstance(this, $Promise, PROMISE, '_h');
- aFunction(executor);
- Internal.call(this);
- try {
- executor(ctx($resolve, this, 1), ctx($reject, this, 1));
- } catch (err) {
- $reject.call(this, err);
- }
- };
- // eslint-disable-next-line no-unused-vars
- Internal = function Promise(executor) {
- this._c = []; // <- awaiting reactions
- this._a = undefined; // <- checked in isUnhandled reactions
- this._s = 0; // <- state
- this._d = false; // <- done
- this._v = undefined; // <- value
- this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
- this._n = false; // <- notify
- };
- Internal.prototype = __webpack_require__(196)($Promise.prototype, {
- // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
- then: function then(onFulfilled, onRejected) {
- var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
- reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
- reaction.fail = typeof onRejected == 'function' && onRejected;
- reaction.domain = isNode ? process.domain : undefined;
- this._c.push(reaction);
- if (this._a) this._a.push(reaction);
- if (this._s) notify(this, false);
- return reaction.promise;
- },
- // 25.4.5.1 Promise.prototype.catch(onRejected)
- 'catch': function (onRejected) {
- return this.then(undefined, onRejected);
- }
- });
- OwnPromiseCapability = function () {
- var promise = new Internal();
- this.promise = promise;
- this.resolve = ctx($resolve, promise, 1);
- this.reject = ctx($reject, promise, 1);
- };
- newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
- return C === $Promise || C === Wrapper
- ? new OwnPromiseCapability(C)
- : newGenericPromiseCapability(C);
- };
-}
+var _util;
-$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
-__webpack_require__(71)($Promise, PROMISE);
-__webpack_require__(198)(PROMISE);
-Wrapper = __webpack_require__(23)[PROMISE];
+function _load_util() {
+ return _util = _interopRequireDefault(__webpack_require__(2));
+}
-// statics
-$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
- // 25.4.4.5 Promise.reject(r)
- reject: function reject(r) {
- var capability = newPromiseCapability(this);
- var $$reject = capability.reject;
- $$reject(r);
- return capability.promise;
- }
-});
-$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
- // 25.4.4.6 Promise.resolve(x)
- resolve: function resolve(x) {
- return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
- }
-});
-$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(189)(function (iter) {
- $Promise.all(iter)['catch'](empty);
-})), PROMISE, {
- // 25.4.4.1 Promise.all(iterable)
- all: function all(iterable) {
- var C = this;
- var capability = newPromiseCapability(C);
- var resolve = capability.resolve;
- var reject = capability.reject;
- var result = perform(function () {
- var values = [];
- var index = 0;
- var remaining = 1;
- forOf(iterable, false, function (promise) {
- var $index = index++;
- var alreadyCalled = false;
- values.push(undefined);
- remaining++;
- C.resolve(promise).then(function (value) {
- if (alreadyCalled) return;
- alreadyCalled = true;
- values[$index] = value;
- --remaining || resolve(values);
- }, reject);
- });
- --remaining || resolve(values);
- });
- if (result.e) reject(result.v);
- return capability.promise;
- },
- // 25.4.4.4 Promise.race(iterable)
- race: function race(iterable) {
- var C = this;
- var capability = newPromiseCapability(C);
- var reject = capability.reject;
- var result = perform(function () {
- forOf(iterable, false, function (promise) {
- C.resolve(promise).then(capability.resolve, reject);
- });
- });
- if (result.e) reject(result.v);
- return capability.promise;
- }
-});
+var _invariant;
+function _load_invariant() {
+ return _invariant = _interopRequireDefault(__webpack_require__(7));
+}
-/***/ }),
-/* 207 */
-/***/ (function(module, exports, __webpack_require__) {
+var _stripBom;
-"use strict";
+function _load_stripBom() {
+ return _stripBom = _interopRequireDefault(__webpack_require__(122));
+}
-var $at = __webpack_require__(199)(true);
+var _constants;
-// 21.1.3.27 String.prototype[@@iterator]()
-__webpack_require__(103)(String, 'String', function (iterated) {
- this._t = String(iterated); // target
- this._i = 0; // next index
-// 21.1.5.2.1 %StringIteratorPrototype%.next()
-}, function () {
- var O = this._t;
- var index = this._i;
- var point;
- if (index >= O.length) return { value: undefined, done: true };
- point = $at(O, index);
- this._i += point.length;
- return { value: point, done: false };
-});
+function _load_constants() {
+ return _constants = __webpack_require__(6);
+}
+var _errors;
-/***/ }),
-/* 208 */
-/***/ (function(module, exports, __webpack_require__) {
+function _load_errors() {
+ return _errors = __webpack_require__(4);
+}
-"use strict";
-// https://github.com/tc39/proposal-promise-finally
+var _map;
-var $export = __webpack_require__(41);
-var core = __webpack_require__(23);
-var global = __webpack_require__(11);
-var speciesConstructor = __webpack_require__(108);
-var promiseResolve = __webpack_require__(105);
+function _load_map() {
+ return _map = _interopRequireDefault(__webpack_require__(20));
+}
-$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
- var C = speciesConstructor(this, core.Promise || global.Promise);
- var isFunction = typeof onFinally == 'function';
- return this.then(
- isFunction ? function (x) {
- return promiseResolve(C, onFinally()).then(function () { return x; });
- } : onFinally,
- isFunction ? function (e) {
- return promiseResolve(C, onFinally()).then(function () { throw e; });
- } : onFinally
- );
-} });
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+/* eslint quotes: 0 */
-/***/ }),
-/* 209 */
-/***/ (function(module, exports, __webpack_require__) {
+const VERSION_REGEX = /^yarn lockfile v(\d+)$/;
-"use strict";
+const TOKEN_TYPES = {
+ boolean: 'BOOLEAN',
+ string: 'STRING',
+ identifier: 'IDENTIFIER',
+ eof: 'EOF',
+ colon: 'COLON',
+ newline: 'NEWLINE',
+ comment: 'COMMENT',
+ indent: 'INDENT',
+ invalid: 'INVALID',
+ number: 'NUMBER',
+ comma: 'COMMA'
+};
-// https://github.com/tc39/proposal-promise-try
-var $export = __webpack_require__(41);
-var newPromiseCapability = __webpack_require__(70);
-var perform = __webpack_require__(104);
+const VALID_PROP_VALUE_TOKENS = [TOKEN_TYPES.boolean, TOKEN_TYPES.string, TOKEN_TYPES.number];
-$export($export.S, 'Promise', { 'try': function (callbackfn) {
- var promiseCapability = newPromiseCapability.f(this);
- var result = perform(callbackfn);
- (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
- return promiseCapability.promise;
-} });
+function isValidPropValueToken(token) {
+ return VALID_PROP_VALUE_TOKENS.indexOf(token.type) >= 0;
+}
+function* tokenise(input) {
+ let lastNewline = false;
+ let line = 1;
+ let col = 0;
-/***/ }),
-/* 210 */
-/***/ (function(module, exports, __webpack_require__) {
+ function buildToken(type, value) {
+ return { line, col, type, value };
+ }
-__webpack_require__(204);
-var global = __webpack_require__(11);
-var hide = __webpack_require__(31);
-var Iterators = __webpack_require__(35);
-var TO_STRING_TAG = __webpack_require__(13)('toStringTag');
+ while (input.length) {
+ let chop = 0;
-var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
- 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
- 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
- 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
- 'TextTrackList,TouchList').split(',');
+ if (input[0] === '\n' || input[0] === '\r') {
+ chop++;
+ // If this is a \r\n line, ignore both chars but only add one new line
+ if (input[1] === '\n') {
+ chop++;
+ }
+ line++;
+ col = 0;
+ yield buildToken(TOKEN_TYPES.newline);
+ } else if (input[0] === '#') {
+ chop++;
-for (var i = 0; i < DOMIterables.length; i++) {
- var NAME = DOMIterables[i];
- var Collection = global[NAME];
- var proto = Collection && Collection.prototype;
- if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
- Iterators[NAME] = Iterators.Array;
-}
+ let val = '';
+ while (input[chop] !== '\n') {
+ val += input[chop];
+ chop++;
+ }
+ yield buildToken(TOKEN_TYPES.comment, val);
+ } else if (input[0] === ' ') {
+ if (lastNewline) {
+ let indent = '';
+ for (let i = 0; input[i] === ' '; i++) {
+ indent += input[i];
+ }
+ if (indent.length % 2) {
+ throw new TypeError('Invalid number of spaces');
+ } else {
+ chop = indent.length;
+ yield buildToken(TOKEN_TYPES.indent, indent.length / 2);
+ }
+ } else {
+ chop++;
+ }
+ } else if (input[0] === '"') {
+ let val = '';
-/***/ }),
-/* 211 */
-/***/ (function(module, exports, __webpack_require__) {
+ for (let i = 0;; i++) {
+ const currentChar = input[i];
+ val += currentChar;
-/**
- * This is the web browser implementation of `debug()`.
- *
- * Expose `debug()` as the module.
- */
+ if (i > 0 && currentChar === '"') {
+ const isEscaped = input[i - 1] === '\\' && input[i - 2] !== '\\';
+ if (!isEscaped) {
+ break;
+ }
+ }
+ }
-exports = module.exports = __webpack_require__(112);
-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();
+ chop = val.length;
-/**
- * Colors.
- */
+ try {
+ yield buildToken(TOKEN_TYPES.string, JSON.parse(val));
+ } catch (err) {
+ if (err instanceof SyntaxError) {
+ yield buildToken(TOKEN_TYPES.invalid);
+ } else {
+ throw err;
+ }
+ }
+ } else if (/^[0-9]/.test(input)) {
+ let val = '';
+ for (let i = 0; /^[0-9]$/.test(input[i]); i++) {
+ val += input[i];
+ }
+ chop = val.length;
-exports.colors = [
- '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',
- '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',
- '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',
- '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',
- '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',
- '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',
- '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',
- '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',
- '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',
- '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',
- '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'
-];
+ yield buildToken(TOKEN_TYPES.number, +val);
+ } else if (/^true/.test(input)) {
+ yield buildToken(TOKEN_TYPES.boolean, true);
+ chop = 4;
+ } else if (/^false/.test(input)) {
+ yield buildToken(TOKEN_TYPES.boolean, false);
+ chop = 5;
+ } else if (input[0] === ':') {
+ yield buildToken(TOKEN_TYPES.colon);
+ chop++;
+ } else if (input[0] === ',') {
+ yield buildToken(TOKEN_TYPES.comma);
+ chop++;
+ } else if (/^[a-zA-Z\/-]/g.test(input)) {
+ let name = '';
+ for (let i = 0; i < input.length; i++) {
+ const char = input[i];
+ if (char === ':' || char === ' ' || char === '\n' || char === '\r' || char === ',') {
+ break;
+ } else {
+ name += char;
+ }
+ }
+ chop = name.length;
-/**
- * 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
- */
+ yield buildToken(TOKEN_TYPES.string, name);
+ } else {
+ yield buildToken(TOKEN_TYPES.invalid);
+ }
-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 (!chop) {
+ // will trigger infinite recursion
+ yield buildToken(TOKEN_TYPES.invalid);
+ }
- // Internet Explorer and Edge do not support colors.
- if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
- return false;
+ col += chop;
+ lastNewline = input[0] === '\n' || input[0] === '\r' && input[1] === '\n';
+ input = input.slice(chop);
}
- // 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+)/));
+ yield buildToken(TOKEN_TYPES.eof);
}
-/**
- * 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;
+class Parser {
+ constructor(input, fileLoc = 'lockfile') {
+ this.comments = [];
+ this.tokens = tokenise(input);
+ this.fileLoc = fileLoc;
}
-};
+ onComment(token) {
+ const value = token.value;
+ (0, (_invariant || _load_invariant()).default)(typeof value === 'string', 'expected token value to be a string');
-/**
- * Colorize log arguments if enabled.
- *
- * @api public
- */
+ const comment = value.trim();
-function formatArgs(args) {
- var useColors = this.useColors;
+ const versionMatch = comment.match(VERSION_REGEX);
+ if (versionMatch) {
+ const version = +versionMatch[1];
+ if (version > (_constants || _load_constants()).LOCKFILE_VERSION) {
+ throw new (_errors || _load_errors()).MessageError(`Can't install from a lockfile of version ${version} as you're on an old yarn version that only supports ` + `versions up to ${(_constants || _load_constants()).LOCKFILE_VERSION}. Run \`$ yarn self-update\` to upgrade to the latest version.`);
+ }
+ }
- args[0] = (useColors ? '%c' : '')
- + this.namespace
- + (useColors ? ' %c' : ' ')
- + args[0]
- + (useColors ? '%c ' : ' ')
- + '+' + exports.humanize(this.diff);
+ this.comments.push(comment);
+ }
- if (!useColors) return;
+ next() {
+ const item = this.tokens.next();
+ (0, (_invariant || _load_invariant()).default)(item, 'expected a token');
- var c = 'color: ' + this.color;
- args.splice(1, 0, c, 'color: inherit')
+ const done = item.done,
+ value = item.value;
- // 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;
+ if (done || !value) {
+ throw new Error('No more tokens');
+ } else if (value.type === TOKEN_TYPES.comment) {
+ this.onComment(value);
+ return this.next();
+ } else {
+ return this.token = value;
}
- });
-
- args.splice(lastC, 0, c);
-}
-
-/**
- * Invokes `console.log()` when available.
- * No-op when `console.log` is not a "function".
- *
- * @api public
- */
+ }
-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);
-}
+ unexpected(msg = 'Unexpected token') {
+ throw new SyntaxError(`${msg} ${this.token.line}:${this.token.col} in ${this.fileLoc}`);
+ }
-/**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
+ expect(tokType) {
+ if (this.token.type === tokType) {
+ this.next();
+ } else {
+ this.unexpected();
+ }
+ }
-function save(namespaces) {
- try {
- if (null == namespaces) {
- exports.storage.removeItem('debug');
+ eat(tokType) {
+ if (this.token.type === tokType) {
+ this.next();
+ return true;
} else {
- exports.storage.debug = namespaces;
+ return false;
}
- } catch(e) {}
-}
+ }
-/**
- * Load `namespaces`.
- *
- * @return {String} returns the previously persisted debug modes
- * @api private
- */
+ parse(indent = 0) {
+ const obj = (0, (_map || _load_map()).default)();
-function load() {
- var r;
- try {
- r = exports.storage.debug;
- } catch(e) {}
+ while (true) {
+ const propToken = this.token;
- // 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;
- }
+ if (propToken.type === TOKEN_TYPES.newline) {
+ const nextToken = this.next();
+ if (!indent) {
+ // if we have 0 indentation then the next token doesn't matter
+ continue;
+ }
- return r;
-}
+ if (nextToken.type !== TOKEN_TYPES.indent) {
+ // if we have no indentation after a newline then we've gone down a level
+ break;
+ }
-/**
- * Enable namespaces listed in `localStorage.debug` initially.
- */
+ if (nextToken.value === indent) {
+ // all is good, the indent is on our level
+ this.next();
+ } else {
+ // the indentation is less than our level
+ break;
+ }
+ } else if (propToken.type === TOKEN_TYPES.indent) {
+ if (propToken.value === indent) {
+ this.next();
+ } else {
+ break;
+ }
+ } else if (propToken.type === TOKEN_TYPES.eof) {
+ break;
+ } else if (propToken.type === TOKEN_TYPES.string) {
+ // property key
+ const key = propToken.value;
+ (0, (_invariant || _load_invariant()).default)(key, 'Expected a key');
-exports.enable(load());
+ const keys = [key];
+ this.next();
-/**
- * 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
- */
+ // support multiple keys
+ while (this.token.type === TOKEN_TYPES.comma) {
+ this.next(); // skip comma
-function localstorage() {
- try {
- return window.localStorage;
- } catch (e) {}
-}
+ const keyToken = this.token;
+ if (keyToken.type !== TOKEN_TYPES.string) {
+ this.unexpected('Expected string');
+ }
+
+ const key = keyToken.value;
+ (0, (_invariant || _load_invariant()).default)(key, 'Expected a key');
+ keys.push(key);
+ this.next();
+ }
+ const valToken = this.token;
-/***/ }),
-/* 212 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (valToken.type === TOKEN_TYPES.colon) {
+ // object
+ this.next();
-/**
- * Detect Electron renderer process, which is node, but we should
- * treat as a browser.
- */
+ // parse object
+ const val = this.parse(indent + 1);
-if (typeof process === 'undefined' || process.type === 'renderer') {
- module.exports = __webpack_require__(211);
-} else {
- module.exports = __webpack_require__(213);
-}
+ for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
+ var _ref;
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
-/***/ }),
-/* 213 */
-/***/ (function(module, exports, __webpack_require__) {
+ const key = _ref;
-/**
- * Module dependencies.
- */
+ obj[key] = val;
+ }
-var tty = __webpack_require__(79);
-var util = __webpack_require__(2);
+ if (indent && this.token.type !== TOKEN_TYPES.indent) {
+ break;
+ }
+ } else if (isValidPropValueToken(valToken)) {
+ // plain value
+ for (var _iterator2 = keys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
+ var _ref2;
-/**
- * This is the Node.js implementation of `debug()`.
- *
- * Expose `debug()` as the module.
- */
+ if (_isArray2) {
+ if (_i2 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i2++];
+ } else {
+ _i2 = _iterator2.next();
+ if (_i2.done) break;
+ _ref2 = _i2.value;
+ }
-exports = module.exports = __webpack_require__(112);
-exports.init = init;
-exports.log = log;
-exports.formatArgs = formatArgs;
-exports.save = save;
-exports.load = load;
-exports.useColors = useColors;
+ const key = _ref2;
+
+ obj[key] = valToken.value;
+ }
+
+ this.next();
+ } else {
+ this.unexpected('Invalid value type');
+ }
+ } else {
+ this.unexpected(`Unknown token: ${(_util || _load_util()).default.inspect(propToken)}`);
+ }
+ }
+
+ return obj;
+ }
+}
+
+const MERGE_CONFLICT_ANCESTOR = '|||||||';
+const MERGE_CONFLICT_END = '>>>>>>>';
+const MERGE_CONFLICT_SEP = '=======';
+const MERGE_CONFLICT_START = '<<<<<<<';
/**
- * Colors.
+ * Extract the two versions of the lockfile from a merge conflict.
*/
+function extractConflictVariants(str) {
+ const variants = [[], []];
+ const lines = str.split(/\r?\n/g);
+ let skip = false;
-exports.colors = [ 6, 2, 3, 4, 5, 1 ];
+ while (lines.length) {
+ const line = lines.shift();
+ if (line.startsWith(MERGE_CONFLICT_START)) {
+ // get the first variant
+ while (lines.length) {
+ const conflictLine = lines.shift();
+ if (conflictLine === MERGE_CONFLICT_SEP) {
+ skip = false;
+ break;
+ } else if (skip || conflictLine.startsWith(MERGE_CONFLICT_ANCESTOR)) {
+ skip = true;
+ continue;
+ } else {
+ variants[0].push(conflictLine);
+ }
+ }
-try {
- var supportsColor = __webpack_require__(239);
- if (supportsColor && supportsColor.level >= 2) {
- exports.colors = [
- 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68,
- 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134,
- 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 214, 215, 220, 221
- ];
+ // get the second variant
+ while (lines.length) {
+ const conflictLine = lines.shift();
+ if (conflictLine.startsWith(MERGE_CONFLICT_END)) {
+ break;
+ } else {
+ variants[1].push(conflictLine);
+ }
+ }
+ } else {
+ variants[0].push(line);
+ variants[1].push(line);
+ }
}
-} catch (err) {
- // swallow - we only care if `supports-color` is available; it doesn't have to be.
+
+ return [variants[0].join('\n'), variants[1].join('\n')];
}
/**
- * Build up the default `inspectOpts` object from the environment variables.
- *
- * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
+ * Check if a lockfile has merge conflicts.
*/
-
-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() });
-
- // 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);
-
- obj[prop] = val;
- return obj;
-}, {});
+function hasMergeConflicts(str) {
+ return str.includes(MERGE_CONFLICT_START) && str.includes(MERGE_CONFLICT_SEP) && str.includes(MERGE_CONFLICT_END);
+}
/**
- * Is stdout a TTY? Colored output is enabled when `true`.
+ * Parse the lockfile.
*/
-
-function useColors() {
- return 'colors' in exports.inspectOpts
- ? Boolean(exports.inspectOpts.colors)
- : tty.isatty(process.stderr.fd);
+function parse(str, fileLoc) {
+ const parser = new Parser(str, fileLoc);
+ parser.next();
+ return parser.parse();
}
/**
- * Map %o to `util.inspect()`, all on a single line.
+ * Parse and merge the two variants in a conflicted lockfile.
*/
+function parseWithConflict(str, fileLoc) {
+ const variants = extractConflictVariants(str);
+ try {
+ return { type: 'merge', object: Object.assign({}, parse(variants[0], fileLoc), parse(variants[1], fileLoc)) };
+ } catch (err) {
+ if (err instanceof SyntaxError) {
+ return { type: 'conflict', object: {} };
+ } else {
+ throw err;
+ }
+ }
+}
-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.
- */
+/***/ }),
+/* 82 */,
+/* 83 */,
+/* 84 */
+/***/ (function(module, exports, __webpack_require__) {
-exports.formatters.O = function(v) {
- this.inspectOpts.colors = this.useColors;
- return util.inspect(v, this.inspectOpts);
-};
+"use strict";
-/**
- * Adds ANSI color escape codes if enabled.
- *
- * @api public
- */
-function formatArgs(args) {
- var name = this.namespace;
- var useColors = this.useColors;
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
- if (useColors) {
- var c = this.color;
- var colorCode = '\u001b[3' + (c < 8 ? c : '8;5;' + c);
- var prefix = ' ' + colorCode + ';1m' + name + ' ' + '\u001b[0m';
+var _map;
- args[0] = prefix + args[0].split('\n').join('\n' + prefix);
- args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\u001b[0m');
- } else {
- args[0] = getDate() + name + ' ' + args[0];
- }
+function _load_map() {
+ return _map = _interopRequireDefault(__webpack_require__(20));
}
-function getDate() {
- if (exports.inspectOpts.hideDate) {
- return '';
- } else {
- return new Date().toISOString() + ' ';
- }
-}
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-/**
- * Invokes `util.format()` with the specified arguments and writes to stderr.
- */
+const debug = __webpack_require__(212)('yarn');
-function log() {
- return process.stderr.write(util.format.apply(util, arguments) + '\n');
-}
+class BlockingQueue {
+ constructor(alias, maxConcurrency = Infinity) {
+ this.concurrencyQueue = [];
+ this.maxConcurrency = maxConcurrency;
+ this.runningCount = 0;
+ this.warnedStuck = false;
+ this.alias = alias;
+ this.first = true;
-/**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
+ this.running = (0, (_map || _load_map()).default)();
+ this.queue = (0, (_map || _load_map()).default)();
-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;
+ this.stuckTick = this.stuckTick.bind(this);
}
-}
-/**
- * Load `namespaces`.
- *
- * @return {String} returns the previously persisted debug modes
- * @api private
- */
+ stillActive() {
+ if (this.stuckTimer) {
+ clearTimeout(this.stuckTimer);
+ }
-function load() {
- return process.env.DEBUG;
-}
+ this.stuckTimer = setTimeout(this.stuckTick, 5000);
-/**
- * Init logic for `debug` instances.
- *
- * Create a new `inspectOpts` object in case `useColors` is set
- * differently for a particular `debug` instance.
- */
+ // We need to check the existence of unref because of https://github.com/facebook/jest/issues/4559
+ // $FlowFixMe: Node's setInterval returns a Timeout, not a Number
+ this.stuckTimer.unref && this.stuckTimer.unref();
+ }
-function init (debug) {
- debug.inspectOpts = {};
+ stuckTick() {
+ if (this.runningCount === 1) {
+ this.warnedStuck = true;
+ debug(`The ${JSON.stringify(this.alias)} blocking queue may be stuck. 5 seconds ` + `without any activity with 1 worker: ${Object.keys(this.running)[0]}`);
+ }
+ }
- var keys = Object.keys(exports.inspectOpts);
- for (var i = 0; i < keys.length; i++) {
- debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
+ push(key, factory) {
+ if (this.first) {
+ this.first = false;
+ } else {
+ this.stillActive();
+ }
+
+ return new Promise((resolve, reject) => {
+ // we're already running so push ourselves to the queue
+ const queue = this.queue[key] = this.queue[key] || [];
+ queue.push({ factory, resolve, reject });
+
+ if (!this.running[key]) {
+ this.shift(key);
+ }
+ });
}
-}
-/**
- * Enable namespaces listed in `process.env.DEBUG` initially.
- */
+ shift(key) {
+ if (this.running[key]) {
+ delete this.running[key];
+ this.runningCount--;
-exports.enable(load());
+ if (this.stuckTimer) {
+ clearTimeout(this.stuckTimer);
+ this.stuckTimer = null;
+ }
+ if (this.warnedStuck) {
+ this.warnedStuck = false;
+ debug(`${JSON.stringify(this.alias)} blocking queue finally resolved. Nothing to worry about.`);
+ }
+ }
-/***/ }),
-/* 214 */,
-/* 215 */,
-/* 216 */,
-/* 217 */
-/***/ (function(module, exports, __webpack_require__) {
+ const queue = this.queue[key];
+ if (!queue) {
+ return;
+ }
-// 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 _queue$shift = queue.shift();
-var pathModule = __webpack_require__(0);
-var isWindows = process.platform === 'win32';
-var fs = __webpack_require__(3);
+ const resolve = _queue$shift.resolve,
+ reject = _queue$shift.reject,
+ factory = _queue$shift.factory;
-// JavaScript implementation of realpath, ported from node pre-v6
+ if (!queue.length) {
+ delete this.queue[key];
+ }
-var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);
+ const next = () => {
+ this.shift(key);
+ this.shiftConcurrencyQueue();
+ };
-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;
+ const run = () => {
+ this.running[key] = true;
+ this.runningCount++;
- return callback;
+ factory().then(function (val) {
+ resolve(val);
+ next();
+ return null;
+ }).catch(function (err) {
+ reject(err);
+ next();
+ });
+ };
- function debugCallback(err) {
- if (err) {
- backtrace.message = err.message;
- err = backtrace;
- missingCallback(err);
+ this.maybePushConcurrencyQueue(run);
+ }
+
+ maybePushConcurrencyQueue(run) {
+ if (this.runningCount < this.maxConcurrency) {
+ run();
+ } else {
+ this.concurrencyQueue.push(run);
}
}
- 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);
+ shiftConcurrencyQueue() {
+ if (this.runningCount < this.maxConcurrency) {
+ const fn = this.concurrencyQueue.shift();
+ if (fn) {
+ fn();
}
}
}
}
+exports.default = BlockingQueue;
-function maybeCallback(cb) {
- return typeof cb === 'function' ? cb : rethrow();
-}
+/***/ }),
+/* 85 */
+/***/ (function(module, exports) {
-var normalize = pathModule.normalize;
+module.exports = function (exec) {
+ try {
+ return !!exec();
+ } catch (e) {
+ return true;
+ }
+};
-// 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;
-}
-// Regex to find the device root, including trailing slash. E.g. 'c:\\'.
-if (isWindows) {
- var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;
-} else {
- var splitRootRe = /^[\/]*/;
-}
+/***/ }),
+/* 86 */,
+/* 87 */,
+/* 88 */,
+/* 89 */,
+/* 90 */,
+/* 91 */,
+/* 92 */,
+/* 93 */,
+/* 94 */,
+/* 95 */,
+/* 96 */,
+/* 97 */,
+/* 98 */,
+/* 99 */,
+/* 100 */
+/***/ (function(module, exports, __webpack_require__) {
-exports.realpathSync = function realpathSync(p, cache) {
- // make p is absolute
- p = pathModule.resolve(p);
+// getting tag from 19.1.3.6 Object.prototype.toString()
+var cof = __webpack_require__(47);
+var TAG = __webpack_require__(13)('toStringTag');
+// ES3 wrong here
+var ARG = cof(function () { return arguments; }()) == 'Arguments';
- if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
- return cache[p];
- }
+// fallback for IE11 Script Access Denied error
+var tryGet = function (it, key) {
+ try {
+ return it[key];
+ } catch (e) { /* empty */ }
+};
- var original = p,
- seenLinks = {},
- knownHard = {};
+module.exports = function (it) {
+ var O, T, B;
+ return it === undefined ? 'Undefined' : it === null ? 'Null'
+ // @@toStringTag case
+ : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
+ // builtinTag case
+ : ARG ? cof(O)
+ // ES3 arguments fallback
+ : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
+};
- // 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();
+/***/ }),
+/* 101 */
+/***/ (function(module, exports) {
- function start() {
- // Skip over roots
- var m = splitRootRe.exec(p);
- pos = m[0].length;
- current = m[0];
- base = m[0];
- previous = '';
+// IE 8- don't enum bug keys
+module.exports = (
+ 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
+).split(',');
- // On windows, check that the root exists. On unix there is no need.
- if (isWindows && !knownHard[base]) {
- fs.lstatSync(base);
- knownHard[base] = true;
- }
- }
- // 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;
+/***/ }),
+/* 102 */
+/***/ (function(module, exports, __webpack_require__) {
- // continue if not a symlink
- if (knownHard[base] || (cache && cache[base] === base)) {
- continue;
+var document = __webpack_require__(11).document;
+module.exports = document && document.documentElement;
+
+
+/***/ }),
+/* 103 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var LIBRARY = __webpack_require__(69);
+var $export = __webpack_require__(41);
+var redefine = __webpack_require__(197);
+var hide = __webpack_require__(31);
+var Iterators = __webpack_require__(35);
+var $iterCreate = __webpack_require__(188);
+var setToStringTag = __webpack_require__(71);
+var getPrototypeOf = __webpack_require__(194);
+var ITERATOR = __webpack_require__(13)('iterator');
+var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
+var FF_ITERATOR = '@@iterator';
+var KEYS = 'keys';
+var VALUES = 'values';
+
+var returnThis = function () { return this; };
+
+module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
+ $iterCreate(Constructor, NAME, next);
+ var getMethod = function (kind) {
+ if (!BUGGY && kind in proto) return proto[kind];
+ switch (kind) {
+ case KEYS: return function keys() { return new Constructor(this, kind); };
+ case VALUES: return function values() { return new Constructor(this, kind); };
+ } return function entries() { return new Constructor(this, kind); };
+ };
+ var TAG = NAME + ' Iterator';
+ var DEF_VALUES = DEFAULT == VALUES;
+ var VALUES_BUG = false;
+ var proto = Base.prototype;
+ var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
+ var $default = $native || getMethod(DEFAULT);
+ var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
+ var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
+ var methods, key, IteratorPrototype;
+ // Fix native
+ if ($anyNative) {
+ IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
+ if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
+ // Set @@toStringTag to native iterators
+ setToStringTag(IteratorPrototype, TAG, true);
+ // fix for some old engines
+ if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
}
+ }
+ // fix Array#{values, @@iterator}.name in V8 / FF
+ if (DEF_VALUES && $native && $native.name !== VALUES) {
+ VALUES_BUG = true;
+ $default = function values() { return $native.call(this); };
+ }
+ // Define iterator
+ if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
+ hide(proto, ITERATOR, $default);
+ }
+ // Plug for library
+ Iterators[NAME] = $default;
+ Iterators[TAG] = returnThis;
+ if (DEFAULT) {
+ methods = {
+ values: DEF_VALUES ? $default : getMethod(VALUES),
+ keys: IS_SET ? $default : getMethod(KEYS),
+ entries: $entries
+ };
+ if (FORCED) for (key in methods) {
+ if (!(key in proto)) redefine(proto, key, methods[key]);
+ } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
+ }
+ return methods;
+};
- 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;
- }
- // 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;
- }
+/***/ }),
+/* 104 */
+/***/ (function(module, exports) {
- // resolve the link, then start over
- p = pathModule.resolve(resolvedLink, p.slice(pos));
- start();
+module.exports = function (exec) {
+ try {
+ return { e: false, v: exec() };
+ } catch (e) {
+ return { e: true, v: e };
}
+};
- if (cache) cache[original] = p;
- return p;
-};
+/***/ }),
+/* 105 */
+/***/ (function(module, exports, __webpack_require__) {
+var anObject = __webpack_require__(27);
+var isObject = __webpack_require__(34);
+var newPromiseCapability = __webpack_require__(70);
-exports.realpath = function realpath(p, cache, cb) {
- if (typeof cb !== 'function') {
- cb = maybeCallback(cache);
- cache = null;
- }
+module.exports = function (C, x) {
+ anObject(C);
+ if (isObject(x) && x.constructor === C) return x;
+ var promiseCapability = newPromiseCapability.f(C);
+ var resolve = promiseCapability.resolve;
+ resolve(x);
+ return promiseCapability.promise;
+};
- // 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]));
- }
+/***/ }),
+/* 106 */
+/***/ (function(module, exports) {
- var original = p,
- seenLinks = {},
- knownHard = {};
+module.exports = function (bitmap, value) {
+ return {
+ enumerable: !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable: !(bitmap & 4),
+ value: value
+ };
+};
- // 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();
+/***/ }),
+/* 107 */
+/***/ (function(module, exports, __webpack_require__) {
- function start() {
- // Skip over roots
- var m = splitRootRe.exec(p);
- pos = m[0].length;
- current = m[0];
- base = m[0];
- previous = '';
+var core = __webpack_require__(23);
+var global = __webpack_require__(11);
+var SHARED = '__core-js_shared__';
+var store = global[SHARED] || (global[SHARED] = {});
- // 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);
- }
- }
+(module.exports = function (key, value) {
+ return store[key] || (store[key] = value !== undefined ? value : {});
+})('versions', []).push({
+ version: core.version,
+ mode: __webpack_require__(69) ? 'pure' : 'global',
+ copyright: '© 2018 Denis Pushkarev (zloirock.ru)'
+});
- // 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;
+/***/ }),
+/* 108 */
+/***/ (function(module, exports, __webpack_require__) {
- // continue if not a symlink
- if (knownHard[base] || (cache && cache[base] === base)) {
- return process.nextTick(LOOP);
- }
+// 7.3.20 SpeciesConstructor(O, defaultConstructor)
+var anObject = __webpack_require__(27);
+var aFunction = __webpack_require__(46);
+var SPECIES = __webpack_require__(13)('species');
+module.exports = function (O, D) {
+ var C = anObject(O).constructor;
+ var S;
+ return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
+};
- if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
- // known symbolic link. no need to stat again.
- return gotResolvedLink(cache[base]);
- }
- return fs.lstat(base, gotStat);
- }
+/***/ }),
+/* 109 */
+/***/ (function(module, exports, __webpack_require__) {
- function gotStat(err, stat) {
- if (err) return cb(err);
+var ctx = __webpack_require__(48);
+var invoke = __webpack_require__(185);
+var html = __webpack_require__(102);
+var cel = __webpack_require__(68);
+var global = __webpack_require__(11);
+var process = global.process;
+var setTask = global.setImmediate;
+var clearTask = global.clearImmediate;
+var MessageChannel = global.MessageChannel;
+var Dispatch = global.Dispatch;
+var counter = 0;
+var queue = {};
+var ONREADYSTATECHANGE = 'onreadystatechange';
+var defer, channel, port;
+var run = function () {
+ var id = +this;
+ // eslint-disable-next-line no-prototype-builtins
+ if (queue.hasOwnProperty(id)) {
+ var fn = queue[id];
+ delete queue[id];
+ fn();
+ }
+};
+var listener = function (event) {
+ run.call(event.data);
+};
+// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+if (!setTask || !clearTask) {
+ setTask = function setImmediate(fn) {
+ var args = [];
+ var i = 1;
+ while (arguments.length > i) args.push(arguments[i++]);
+ queue[++counter] = function () {
+ // eslint-disable-next-line no-new-func
+ invoke(typeof fn == 'function' ? fn : Function(fn), args);
+ };
+ defer(counter);
+ return counter;
+ };
+ clearTask = function clearImmediate(id) {
+ delete queue[id];
+ };
+ // Node.js 0.8-
+ if (__webpack_require__(47)(process) == 'process') {
+ defer = function (id) {
+ process.nextTick(ctx(run, id, 1));
+ };
+ // Sphere (JS game engine) Dispatch API
+ } else if (Dispatch && Dispatch.now) {
+ defer = function (id) {
+ Dispatch.now(ctx(run, id, 1));
+ };
+ // Browsers with MessageChannel, includes WebWorkers
+ } else if (MessageChannel) {
+ channel = new MessageChannel();
+ port = channel.port2;
+ channel.port1.onmessage = listener;
+ defer = ctx(port.postMessage, port, 1);
+ // Browsers with postMessage, skip WebWorkers
+ // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+ } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
+ defer = function (id) {
+ global.postMessage(id + '', '*');
+ };
+ global.addEventListener('message', listener, false);
+ // IE8-
+ } else if (ONREADYSTATECHANGE in cel('script')) {
+ defer = function (id) {
+ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
+ html.removeChild(this);
+ run.call(id);
+ };
+ };
+ // Rest old browsers
+ } else {
+ defer = function (id) {
+ setTimeout(ctx(run, id, 1), 0);
+ };
+ }
+}
+module.exports = {
+ set: setTask,
+ clear: clearTask
+};
- // 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);
- }
- // 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);
+/***/ }),
+/* 110 */
+/***/ (function(module, exports, __webpack_require__) {
- fs.readlink(base, function(err, target) {
- if (!isWindows) seenLinks[id] = target;
- gotTarget(err, target);
- });
- });
- }
+// 7.1.15 ToLength
+var toInteger = __webpack_require__(73);
+var min = Math.min;
+module.exports = function (it) {
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+};
- function gotTarget(err, target, base) {
- if (err) return cb(err);
- var resolvedLink = pathModule.resolve(previous, target);
- if (cache) cache[base] = resolvedLink;
- gotResolvedLink(resolvedLink);
- }
+/***/ }),
+/* 111 */
+/***/ (function(module, exports) {
- function gotResolvedLink(resolvedLink) {
- // resolve the link, then start over
- p = pathModule.resolve(resolvedLink, p.slice(pos));
- start();
- }
+var id = 0;
+var px = Math.random();
+module.exports = function (key) {
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};
/***/ }),
-/* 218 */
+/* 112 */
/***/ (function(module, exports, __webpack_require__) {
-module.exports = globSync
-globSync.GlobSync = GlobSync
-var fs = __webpack_require__(3)
-var rp = __webpack_require__(114)
-var minimatch = __webpack_require__(60)
-var Minimatch = minimatch.Minimatch
-var Glob = __webpack_require__(75).Glob
-var util = __webpack_require__(2)
-var path = __webpack_require__(0)
-var assert = __webpack_require__(22)
-var isAbsolute = __webpack_require__(76)
-var common = __webpack_require__(115)
-var alphasort = common.alphasort
-var alphasorti = common.alphasorti
-var setopts = common.setopts
-var ownProp = common.ownProp
-var childrenIgnored = common.childrenIgnored
-var isIgnored = common.isIgnored
+/**
+ * This is the common logic for both the Node.js and web browser
+ * implementations of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
-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')
+exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
+exports.coerce = coerce;
+exports.disable = disable;
+exports.enable = enable;
+exports.enabled = enabled;
+exports.humanize = __webpack_require__(229);
- return new GlobSync(pattern, options).found
-}
+/**
+ * Active `debug` instances.
+ */
+exports.instances = [];
-function GlobSync (pattern, options) {
- if (!pattern)
- throw new Error('must provide pattern')
+/**
+ * The currently active debug mode names, and names to skip.
+ */
- 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')
+exports.names = [];
+exports.skips = [];
- if (!(this instanceof GlobSync))
- return new GlobSync(pattern, options)
+/**
+ * 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".
+ */
- setopts(this, pattern, options)
+exports.formatters = {};
- if (this.noprocess)
- return this
+/**
+ * Select a color.
+ * @param {String} namespace
+ * @return {Number}
+ * @api private
+ */
- 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()
-}
+function selectColor(namespace) {
+ var hash = 0, i;
-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
- }
- }
- })
+ for (i in namespace) {
+ hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
+ hash |= 0; // Convert to 32bit integer
}
- common.finish(this)
+
+ return exports.colors[Math.abs(hash) % exports.colors.length];
}
+/**
+ * Create a debugger with the given `namespace`.
+ *
+ * @param {String} namespace
+ * @return {Function}
+ * @api public
+ */
-GlobSync.prototype._process = function (pattern, index, inGlobStar) {
- assert(this instanceof GlobSync)
+function createDebug(namespace) {
- // 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.
+ var prevTime;
- // 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
+ function debug() {
+ // disabled?
+ if (!debug.enabled) return;
- case 0:
- // pattern *starts* with some non-trivial item.
- // going to readdir(cwd), but not include the prefix in matches.
- prefix = null
- break
+ var self = debug;
- 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
+ // set `diff` timestamp
+ var curr = +new Date();
+ var ms = curr - (prevTime || curr);
+ self.diff = ms;
+ self.prev = prevTime;
+ self.curr = curr;
+ prevTime = curr;
+
+ // 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];
+ }
+
+ args[0] = exports.coerce(args[0]);
+
+ if ('string' !== typeof args[0]) {
+ // anything else let's inspect with %O
+ args.unshift('%O');
+ }
+
+ // 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);
+
+ // now we need to remove `args[index]` since it's inlined in the `format`
+ args.splice(index, 1);
+ index--;
+ }
+ return match;
+ });
+
+ // apply env-specific formatting (colors, etc.)
+ exports.formatArgs.call(self, args);
+
+ var logFn = debug.log || exports.log || console.log.bind(console);
+ logFn.apply(self, args);
}
- var remain = pattern.slice(n)
+ debug.namespace = namespace;
+ debug.enabled = exports.enabled(namespace);
+ debug.useColors = exports.useColors();
+ debug.color = selectColor(namespace);
+ debug.destroy = destroy;
- // 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
+ // env-specific initialization logic for debug instances
+ if ('function' === typeof exports.init) {
+ exports.init(debug);
+ }
- var abs = this._makeAbs(read)
+ exports.instances.push(debug);
- //if ignored, skip processing
- if (childrenIgnored(this, read))
- return
+ return debug;
+}
- 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 destroy () {
+ var index = exports.instances.indexOf(this);
+ if (index !== -1) {
+ exports.instances.splice(index, 1);
+ return true;
+ } else {
+ return false;
+ }
}
+/**
+ * Enables a debug mode by namespaces. This can include modes
+ * separated by a colon and wildcards.
+ *
+ * @param {String} namespaces
+ * @api public
+ */
-GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
- var entries = this._readdir(abs, inGlobStar)
+function enable(namespaces) {
+ exports.save(namespaces);
- // if the abs isn't a dir, then nothing can match!
- if (!entries)
- return
+ exports.names = [];
+ exports.skips = [];
- // 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 i;
+ var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
+ var len = split.length;
- 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)
+ for (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 + '$'));
}
}
- var len = matchedEntries.length
- // If there are no matched entries, then nothing matches.
- if (len === 0)
- return
+ for (i = 0; i < exports.instances.length; i++) {
+ var instance = exports.instances[i];
+ instance.enabled = exports.enabled(instance.namespace);
+ }
+}
- // 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.
+/**
+ * Disable debug output.
+ *
+ * @api public
+ */
- if (remain.length === 1 && !this.mark && !this.stat) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
+function disable() {
+ exports.enable('');
+}
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- if (prefix) {
- if (prefix.slice(-1) !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
+/**
+ * Returns true if the given mode name is enabled, false otherwise.
+ *
+ * @param {String} name
+ * @return {Boolean}
+ * @api public
+ */
- if (e.charAt(0) === '/' && !this.nomount) {
- e = path.join(this.root, e)
- }
- this._emitMatch(index, e)
+function enabled(name) {
+ if (name[name.length - 1] === '*') {
+ return true;
+ }
+ var i, len;
+ for (i = 0, len = exports.skips.length; i < len; i++) {
+ if (exports.skips[i].test(name)) {
+ return false;
}
- // This was the last one, and no stats were needed
- return
}
-
- // 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)
+ for (i = 0, len = exports.names.length; i < len; i++) {
+ if (exports.names[i].test(name)) {
+ return true;
+ }
}
+ return false;
}
+/**
+ * Coerce `val`.
+ *
+ * @param {Mixed} val
+ * @return {Mixed}
+ * @api private
+ */
-GlobSync.prototype._emitMatch = function (index, e) {
- if (isIgnored(this, e))
- return
-
- var abs = this._makeAbs(e)
+function coerce(val) {
+ if (val instanceof Error) return val.stack || val.message;
+ return val;
+}
- if (this.mark)
- e = this._mark(e)
- if (this.absolute) {
- e = abs
- }
+/***/ }),
+/* 113 */,
+/* 114 */
+/***/ (function(module, exports, __webpack_require__) {
- if (this.matches[index][e])
- return
+module.exports = realpath
+realpath.realpath = realpath
+realpath.sync = realpathSync
+realpath.realpathSync = realpathSync
+realpath.monkeypatch = monkeypatch
+realpath.unmonkeypatch = unmonkeypatch
- if (this.nodir) {
- var c = this.cache[abs]
- if (c === 'DIR' || Array.isArray(c))
- return
- }
+var fs = __webpack_require__(3)
+var origRealpath = fs.realpath
+var origRealpathSync = fs.realpathSync
- this.matches[index][e] = true
+var version = process.version
+var ok = /^v[0-5]\./.test(version)
+var old = __webpack_require__(217)
- if (this.stat)
- this._stat(e)
+function newError (er) {
+ return er && er.syscall === 'realpath' && (
+ er.code === 'ELOOP' ||
+ er.code === 'ENOMEM' ||
+ er.code === 'ENAMETOOLONG'
+ )
}
+function realpath (p, cache, cb) {
+ if (ok) {
+ return origRealpath(p, cache, cb)
+ }
-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)
+ 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 realpathSync (p, cache) {
+ if (ok) {
+ return origRealpathSync(p, cache)
+ }
- var entries
- var lstat
- var stat
try {
- lstat = fs.lstatSync(abs)
+ return origRealpathSync(p, cache)
} catch (er) {
- if (er.code === 'ENOENT') {
- // lstat failed, doesn't exist
- return null
+ if (newError(er)) {
+ return old.realpathSync(p, cache)
+ } else {
+ throw er
}
}
+}
- var isSym = lstat && lstat.isSymbolicLink()
- this.symlinks[abs] = isSym
+function monkeypatch () {
+ fs.realpath = realpath
+ fs.realpathSync = realpathSync
+}
- // 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)
+function unmonkeypatch () {
+ fs.realpath = origRealpath
+ fs.realpathSync = origRealpathSync
+}
- return entries
+
+/***/ }),
+/* 115 */
+/***/ (function(module, exports, __webpack_require__) {
+
+exports.alphasort = alphasort
+exports.alphasorti = alphasorti
+exports.setopts = setopts
+exports.ownProp = ownProp
+exports.makeAbs = makeAbs
+exports.finish = finish
+exports.mark = mark
+exports.isIgnored = isIgnored
+exports.childrenIgnored = childrenIgnored
+
+function ownProp (obj, field) {
+ return Object.prototype.hasOwnProperty.call(obj, field)
}
-GlobSync.prototype._readdir = function (abs, inGlobStar) {
- var entries
+var path = __webpack_require__(0)
+var minimatch = __webpack_require__(60)
+var isAbsolute = __webpack_require__(76)
+var Minimatch = minimatch.Minimatch
- if (inGlobStar && !ownProp(this.symlinks, abs))
- return this._readdirInGlobStar(abs)
+function alphasorti (a, b) {
+ return a.toLowerCase().localeCompare(b.toLowerCase())
+}
- if (ownProp(this.cache, abs)) {
- var c = this.cache[abs]
- if (!c || c === 'FILE')
- return null
+function alphasort (a, b) {
+ return a.localeCompare(b)
+}
- if (Array.isArray(c))
- return c
+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)
}
+}
- try {
- return this._readdirEntries(abs, fs.readdirSync(abs))
- } catch (er) {
- this._readdirError(abs, er)
- return null
+// 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 })
+ }
+
+ return {
+ matcher: new Minimatch(pattern, { dot: true }),
+ gmatcher: gmatcher
}
}
-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
+function setopts (self, pattern, options) {
+ if (!options)
+ options = {}
+
+ // 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
}
- this.cache[abs] = entries
-
- // mark and cache dir-ness
- return entries
-}
+ 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
-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
+ 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)
- case 'ENOENT': // not terribly unusual
- case 'ELOOP':
- case 'ENAMETOOLONG':
- case 'UNKNOWN':
- this.cache[this._makeAbs(f)] = false
- break
+ setupIgnores(self, options)
- 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
+ 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
}
-}
-
-GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
- var entries = this._readdir(abs, inGlobStar)
+ self.root = options.root || path.resolve(self.cwd, "/")
+ self.root = path.resolve(self.root)
+ if (process.platform === "win32")
+ self.root = self.root.replace(/\\/g, "/")
- // no entries means not a dir, so it can never have matches
- // foo.txt/** doesn't match foo.txt
- if (!entries)
- return
+ // 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
- // 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)
+ // disable comments and negation in Minimatch.
+ // Note that they are not supported in Glob itself anyway.
+ options.nonegate = true
+ options.nocomment = true
- // the noGlobStar pattern exits the inGlobStar state
- this._process(noGlobStar, index, false)
+ self.minimatch = new Minimatch(pattern, options)
+ self.options = self.minimatch.options
+}
- var len = entries.length
- var isSym = this.symlinks[abs]
+function finish (self) {
+ var nou = self.nounique
+ var all = nou ? [] : Object.create(null)
- // If it's a symlink, and we're in a globstar, then stop
- if (isSym && inGlobStar)
- return
+ 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
+ })
+ }
+ }
- for (var i = 0; i < len; i++) {
- var e = entries[i]
- if (e.charAt(0) === '.' && !this.dot)
- continue
+ if (!nou)
+ all = Object.keys(all)
- // these two cases enter the inGlobStar state
- var instead = gspref.concat(entries[i], remainWithoutGlobStar)
- this._process(instead, index, true)
+ if (!self.nosort)
+ all = all.sort(self.nocase ? alphasorti : alphasort)
- var below = gspref.concat(entries[i], remain)
- this._process(below, index, true)
+ // 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
+ })
+ }
}
-}
-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 (self.ignore.length)
+ all = all.filter(function(m) {
+ return !isIgnored(self, m)
+ })
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
+ self.found = all
+}
- // If it doesn't exist, then just mark the lack of results
- if (!exists)
- return
+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 (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 (isDir && !slash)
+ m += '/'
+ else if (!isDir && slash)
+ m = m.slice(0, -1)
+
+ if (m !== p) {
+ var mabs = makeAbs(self, m)
+ self.statCache[mabs] = self.statCache[abs]
+ self.cache[mabs] = self.cache[abs]
}
}
+ return m
+}
+
+// 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)
+ }
+
if (process.platform === 'win32')
- prefix = prefix.replace(/\\/g, '/')
+ abs = abs.replace(/\\/g, '/')
- // Mark this as a match
- this._emitMatch(index, prefix)
+ return abs
}
-// Returns either 'DIR', 'FILE', or false
-GlobSync.prototype._stat = function (f) {
- var abs = this._makeAbs(f)
- var needDir = f.slice(-1) === '/'
- if (f.length > this.maxLength)
+// 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 (!this.stat && ownProp(this.cache, abs)) {
- var c = this.cache[abs]
+ return self.ignore.some(function(item) {
+ return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
+ })
+}
- if (Array.isArray(c))
- c = 'DIR'
+function childrenIgnored (self, path) {
+ if (!self.ignore.length)
+ return false
- // It exists, but maybe not how we need it
- if (!needDir || c === 'DIR')
- return c
+ return self.ignore.some(function(item) {
+ return !!(item.gmatcher && item.gmatcher.match(path))
+ })
+}
- if (needDir && c === 'FILE')
- return false
- // otherwise we have to stat, because maybe c=true
- // if we know it exists, but not what it is.
- }
+/***/ }),
+/* 116 */
+/***/ (function(module, exports, __webpack_require__) {
- var exists
- var stat = this.statCache[abs]
- if (!stat) {
- var lstat
- try {
- lstat = fs.lstatSync(abs)
- } catch (er) {
- if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
- this.statCache[abs] = false
- return false
- }
- }
+var path = __webpack_require__(0);
+var fs = __webpack_require__(3);
+var _0777 = parseInt('0777', 8);
- if (lstat && lstat.isSymbolicLink()) {
- try {
- stat = fs.statSync(abs)
- } catch (er) {
- stat = lstat
- }
- } else {
- stat = lstat
- }
- }
+module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
- this.statCache[abs] = stat
+function mkdirP (p, opts, f, made) {
+ if (typeof opts === 'function') {
+ f = opts;
+ opts = {};
+ }
+ else if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts };
+ }
+
+ var mode = opts.mode;
+ var xfs = opts.fs || fs;
+
+ if (mode === undefined) {
+ mode = _0777 & (~process.umask());
+ }
+ if (!made) made = null;
+
+ var cb = f || function () {};
+ p = path.resolve(p);
+
+ xfs.mkdir(p, mode, function (er) {
+ if (!er) {
+ made = made || p;
+ return cb(null, made);
+ }
+ switch (er.code) {
+ case 'ENOENT':
+ mkdirP(path.dirname(p), opts, function (er, made) {
+ if (er) cb(er, made);
+ else mkdirP(p, opts, cb, made);
+ });
+ break;
- var c = true
- if (stat)
- c = stat.isDirectory() ? 'DIR' : 'FILE'
+ // In the case of any other error, just see if there's a dir
+ // there already. If so, then hooray! If not, then something
+ // is borked.
+ default:
+ xfs.stat(p, function (er2, stat) {
+ // if the stat fails, then that's super weird.
+ // let the original error be the failure reason.
+ if (er2 || !stat.isDirectory()) cb(er, made)
+ else cb(null, made);
+ });
+ break;
+ }
+ });
+}
- this.cache[abs] = this.cache[abs] || c
+mkdirP.sync = function sync (p, opts, made) {
+ if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts };
+ }
+
+ var mode = opts.mode;
+ var xfs = opts.fs || fs;
+
+ if (mode === undefined) {
+ mode = _0777 & (~process.umask());
+ }
+ if (!made) made = null;
- if (needDir && c === 'FILE')
- return false
+ p = path.resolve(p);
- return c
-}
+ try {
+ xfs.mkdirSync(p, mode);
+ made = made || p;
+ }
+ catch (err0) {
+ switch (err0.code) {
+ case 'ENOENT' :
+ made = sync(path.dirname(p), opts, made);
+ sync(p, opts, made);
+ break;
-GlobSync.prototype._mark = function (p) {
- return common.mark(this, p)
-}
+ // In the case of any other error, just see if there's a dir
+ // there already. If so, then hooray! If not, then something
+ // is borked.
+ default:
+ var stat;
+ try {
+ stat = xfs.statSync(p);
+ }
+ catch (err1) {
+ throw err0;
+ }
+ if (!stat.isDirectory()) throw err0;
+ break;
+ }
+ }
-GlobSync.prototype._makeAbs = function (f) {
- return common.makeAbs(this, f)
-}
+ return made;
+};
/***/ }),
-/* 219 */,
-/* 220 */,
-/* 221 */
+/* 117 */,
+/* 118 */,
+/* 119 */,
+/* 120 */,
+/* 121 */,
+/* 122 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-module.exports = function (flag, argv) {
- argv = argv || process.argv;
+module.exports = x => {
+ if (typeof x !== 'string') {
+ throw new TypeError('Expected a string, got ' + typeof x);
+ }
- var terminatorPos = argv.indexOf('--');
- var prefix = /^--/.test(flag) ? '' : '--';
- var pos = argv.indexOf(prefix + flag);
+ // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string
+ // conversion translates it to FEFF (UTF-16 BOM)
+ if (x.charCodeAt(0) === 0xFEFF) {
+ return x.slice(1);
+ }
- return pos !== -1 && (terminatorPos !== -1 ? pos < terminatorPos : true);
+ return x;
};
/***/ }),
-/* 222 */,
-/* 223 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 123 */
+/***/ (function(module, exports) {
-var wrappy = __webpack_require__(123)
-var reqs = Object.create(null)
-var once = __webpack_require__(61)
+// Returns a wrapper function that returns a wrapped callback
+// The wrapper function should do some stuff, and return a
+// presumably different callback function.
+// This makes sure that own properties are retained, so that
+// decorations and such are not lost along the way.
+module.exports = wrappy
+function wrappy (fn, cb) {
+ if (fn && cb) return wrappy(fn)(cb)
-module.exports = wrappy(inflight)
+ if (typeof fn !== 'function')
+ throw new TypeError('need wrapper function')
-function inflight (key, cb) {
- if (reqs[key]) {
- reqs[key].push(cb)
- return null
- } else {
- reqs[key] = [cb]
- return makeres(key)
- }
-}
+ Object.keys(fn).forEach(function (k) {
+ wrapper[k] = fn[k]
+ })
-function makeres (key) {
- return once(function RES () {
- var cbs = reqs[key]
- var len = cbs.length
- var args = slice(arguments)
+ return wrapper
- // 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]
- }
+ function wrapper() {
+ var args = new Array(arguments.length)
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i]
}
- })
+ var ret = fn.apply(this, args)
+ var cb = args[args.length-1]
+ if (typeof ret === 'function' && ret !== cb) {
+ Object.keys(cb).forEach(function (k) {
+ ret[k] = cb[k]
+ })
+ }
+ return ret
+ }
}
-function slice (args) {
- var length = args.length
- var array = []
- for (var i = 0; i < length; i++) array[i] = args[i]
- return array
-}
+/***/ }),
+/* 124 */,
+/* 125 */,
+/* 126 */,
+/* 127 */,
+/* 128 */,
+/* 129 */,
+/* 130 */,
+/* 131 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// fallback for non-array-like ES3 and non-enumerable old V8 strings
+var cof = __webpack_require__(47);
+// eslint-disable-next-line no-prototype-builtins
+module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
+ return cof(it) == 'String' ? it.split('') : Object(it);
+};
/***/ }),
-/* 224 */
-/***/ (function(module, exports) {
+/* 132 */
+/***/ (function(module, exports, __webpack_require__) {
-if (typeof Object.create === 'function') {
- // implementation from standard node.js 'util' module
- module.exports = function inherits(ctor, 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) {
- ctor.super_ = superCtor
- var TempCtor = function () {}
- TempCtor.prototype = superCtor.prototype
- ctor.prototype = new TempCtor()
- ctor.prototype.constructor = ctor
- }
-}
+// 19.1.2.14 / 15.2.3.14 Object.keys(O)
+var $keys = __webpack_require__(195);
+var enumBugKeys = __webpack_require__(101);
+
+module.exports = Object.keys || function keys(O) {
+ return $keys(O, enumBugKeys);
+};
/***/ }),
-/* 225 */,
-/* 226 */,
-/* 227 */
+/* 133 */
/***/ (function(module, exports, __webpack_require__) {
-// @flow
+// 7.1.13 ToObject(argument)
+var defined = __webpack_require__(67);
+module.exports = function (it) {
+ return Object(defined(it));
+};
-/*::
-declare var __webpack_require__: mixed;
-*/
-module.exports = typeof __webpack_require__ !== "undefined";
+/***/ }),
+/* 134 */,
+/* 135 */,
+/* 136 */,
+/* 137 */,
+/* 138 */,
+/* 139 */,
+/* 140 */,
+/* 141 */,
+/* 142 */,
+/* 143 */,
+/* 144 */,
+/* 145 */
+/***/ (function(module, exports) {
+module.exports = {"name":"yarn","installationMethod":"unknown","version":"1.10.0-0","license":"BSD-2-Clause","preferGlobal":true,"description":"📦🐈 Fast, reliable, and secure dependency management.","dependencies":{"@zkochan/cmd-shim":"^2.2.4","babel-runtime":"^6.26.0","bytes":"^3.0.0","camelcase":"^4.0.0","chalk":"^2.1.0","commander":"^2.9.0","death":"^1.0.0","debug":"^3.0.0","deep-equal":"^1.0.1","detect-indent":"^5.0.0","dnscache":"^1.0.1","glob":"^7.1.1","gunzip-maybe":"^1.4.0","hash-for-dep":"^1.2.3","imports-loader":"^0.8.0","ini":"^1.3.4","inquirer":"^3.0.1","invariant":"^2.2.0","is-builtin-module":"^2.0.0","is-ci":"^1.0.10","is-webpack-bundle":"^1.0.0","leven":"^2.0.0","loud-rejection":"^1.2.0","micromatch":"^2.3.11","mkdirp":"^0.5.1","node-emoji":"^1.6.1","normalize-url":"^2.0.0","npm-logical-tree":"^1.2.1","object-path":"^0.11.2","proper-lockfile":"^2.0.0","puka":"^1.0.0","read":"^1.0.7","request":"^2.87.0","request-capture-har":"^1.2.2","rimraf":"^2.5.0","semver":"^5.1.0","ssri":"^5.3.0","strip-ansi":"^4.0.0","strip-bom":"^3.0.0","tar-fs":"^1.16.0","tar-stream":"^1.6.1","uuid":"^3.0.1","v8-compile-cache":"^2.0.0","validate-npm-package-license":"^3.0.3","yn":"^2.0.0"},"devDependencies":{"babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-loader":"^6.2.5","babel-plugin-array-includes":"^2.0.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-inline-imports-commonjs":"^1.0.0","babel-plugin-transform-runtime":"^6.4.3","babel-preset-env":"^1.6.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.0.0","babylon":"^6.5.0","commitizen":"^2.9.6","cz-conventional-changelog":"^2.0.0","eslint":"^4.3.0","eslint-config-fb-strict":"^22.0.0","eslint-plugin-babel":"^5.0.0","eslint-plugin-flowtype":"^2.35.0","eslint-plugin-jasmine":"^2.6.2","eslint-plugin-jest":"^21.0.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-prefer-object-spread":"^1.2.1","eslint-plugin-prettier":"^2.1.2","eslint-plugin-react":"^7.1.0","eslint-plugin-relay":"^0.0.24","eslint-plugin-yarn-internal":"file:scripts/eslint-rules","execa":"^0.10.0","flow-bin":"^0.66.0","git-release-notes":"^3.0.0","gulp":"^3.9.0","gulp-babel":"^7.0.0","gulp-if":"^2.0.1","gulp-newer":"^1.0.0","gulp-plumber":"^1.0.1","gulp-sourcemaps":"^2.2.0","gulp-util":"^3.0.7","gulp-watch":"^5.0.0","jest":"^22.4.4","jsinspect":"^0.12.6","minimatch":"^3.0.4","mock-stdin":"^0.3.0","prettier":"^1.5.2","temp":"^0.8.3","webpack":"^2.1.0-beta.25","yargs":"^6.3.0"},"resolutions":{"sshpk":"^1.14.2"},"engines":{"node":">=4.0.0"},"repository":"yarnpkg/yarn","bin":{"yarn":"./bin/yarn.js","yarnpkg":"./bin/yarn.js"},"scripts":{"build":"gulp build","build-bundle":"node ./scripts/build-webpack.js","build-chocolatey":"powershell ./scripts/build-chocolatey.ps1","build-deb":"./scripts/build-deb.sh","build-dist":"bash ./scripts/build-dist.sh","build-win-installer":"scripts\\build-windows-installer.bat","changelog":"git-release-notes $(git describe --tags --abbrev=0 $(git describe --tags --abbrev=0)^)..$(git describe --tags --abbrev=0) scripts/changelog.md","dupe-check":"yarn jsinspect ./src","lint":"eslint . && flow check","pkg-tests":"yarn --cwd packages/pkg-tests jest yarn.test.js","prettier":"eslint src __tests__ --fix","release-branch":"./scripts/release-branch.sh","test":"yarn lint && yarn test-only","test-only":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --verbose","test-only-debug":"node --inspect-brk --max_old_space_size=4096 node_modules/jest/bin/jest.js --runInBand --verbose","test-coverage":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --coverage --verbose","watch":"gulp watch","commit":"git-cz"},"jest":{"collectCoverageFrom":["src/**/*.js"],"testEnvironment":"node","modulePathIgnorePatterns":["__tests__/fixtures/","packages/pkg-tests/pkg-tests-fixtures","dist/"],"testPathIgnorePatterns":["__tests__/(fixtures|__mocks__)/","updates/","_(temp|mock|install|init|helpers).js$","packages/pkg-tests"]},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}}}
/***/ }),
-/* 228 */,
-/* 229 */
-/***/ (function(module, exports) {
+/* 146 */,
+/* 147 */,
+/* 148 */,
+/* 149 */,
+/* 150 */
+/***/ (function(module, exports, __webpack_require__) {
-/**
- * Helpers.
- */
+"use strict";
-var s = 1000;
-var m = s * 60;
-var h = m * 60;
-var d = h * 24;
-var y = d * 365.25;
-/**
- * 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
- */
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = stringify;
-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)
- );
-};
+var _misc;
-/**
- * Parse the given `str` and return milliseconds.
- *
- * @param {String} str
- * @return {Number}
- * @api private
- */
+function _load_misc() {
+ return _misc = __webpack_require__(12);
+}
-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;
- }
+var _constants;
+
+function _load_constants() {
+ return _constants = __webpack_require__(6);
}
-/**
- * Short format for `ms`.
- *
- * @param {Number} ms
- * @return {String}
- * @api private
- */
+var _package;
-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';
+function _load_package() {
+ return _package = __webpack_require__(145);
+}
+
+const NODE_VERSION = process.version;
+
+function shouldWrapKey(str) {
+ return str.indexOf('true') === 0 || str.indexOf('false') === 0 || /[:\s\n\\",\[\]]/g.test(str) || /^[0-9]/g.test(str) || !/^[a-zA-Z]/g.test(str);
+}
+
+function maybeWrap(str) {
+ if (typeof str === 'boolean' || typeof str === 'number' || shouldWrapKey(str)) {
+ return JSON.stringify(str);
+ } else {
+ return str;
}
- return ms + 'ms';
}
-/**
- * Long format for `ms`.
- *
- * @param {Number} ms
- * @return {String}
- * @api private
- */
+const priorities = {
+ name: 1,
+ version: 2,
+ uid: 3,
+ resolved: 4,
+ integrity: 5,
+ registry: 6,
+ dependencies: 7
+};
-function fmtLong(ms) {
- return plural(ms, d, 'day') ||
- plural(ms, h, 'hour') ||
- plural(ms, m, 'minute') ||
- plural(ms, s, 'second') ||
- ms + ' ms';
+function priorityThenAlphaSort(a, b) {
+ if (priorities[a] || priorities[b]) {
+ return (priorities[a] || 100) > (priorities[b] || 100) ? 1 : -1;
+ } else {
+ return (0, (_misc || _load_misc()).sortAlpha)(a, b);
+ }
}
-/**
- * Pluralization helper.
- */
-
-function plural(ms, n, name) {
- if (ms < n) {
- return;
- }
- if (ms < n * 1.5) {
- return Math.floor(ms / n) + ' ' + name;
+function _stringify(obj, options) {
+ if (typeof obj !== 'object') {
+ throw new TypeError();
}
- return Math.ceil(ms / n) + ' ' + name + 's';
-}
+ const indent = options.indent;
+ const lines = [];
-/***/ }),
-/* 230 */,
-/* 231 */,
-/* 232 */,
-/* 233 */
-/***/ (function(module, exports, __webpack_require__) {
+ // Sorting order needs to be consistent between runs, we run native sort by name because there are no
+ // problems with it being unstable because there are no to keys the same
+ // However priorities can be duplicated and native sort can shuffle things from run to run
+ const keys = Object.keys(obj).sort(priorityThenAlphaSort);
-module.exports = rimraf
-rimraf.sync = rimrafSync
+ let addedKeys = [];
-var assert = __webpack_require__(22)
-var path = __webpack_require__(0)
-var fs = __webpack_require__(3)
-var glob = __webpack_require__(75)
-var _0666 = parseInt('666', 8)
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ const val = obj[key];
+ if (val == null || addedKeys.indexOf(key) >= 0) {
+ continue;
+ }
-var defaultGlobOpts = {
- nosort: true,
- silent: true
-}
+ const valKeys = [key];
-// for EMFILE handling
-var timeout = 0
+ // get all keys that have the same value equality, we only want this for objects
+ if (typeof val === 'object') {
+ for (let j = i + 1; j < keys.length; j++) {
+ const key = keys[j];
+ if (val === obj[key]) {
+ valKeys.push(key);
+ }
+ }
+ }
-var isWindows = (process.platform === "win32")
+ const keyLine = valKeys.sort((_misc || _load_misc()).sortAlpha).map(maybeWrap).join(', ');
-function defaults (options) {
- var methods = [
- 'unlink',
- 'chmod',
- 'stat',
- 'lstat',
- 'rmdir',
- 'readdir'
- ]
- methods.forEach(function(m) {
- options[m] = options[m] || fs[m]
- m = m + 'Sync'
- options[m] = options[m] || fs[m]
- })
+ if (typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number') {
+ lines.push(`${keyLine} ${maybeWrap(val)}`);
+ } else if (typeof val === 'object') {
+ lines.push(`${keyLine}:\n${_stringify(val, { indent: indent + ' ' })}` + (options.topLevel ? '\n' : ''));
+ } else {
+ throw new TypeError();
+ }
- options.maxBusyTries = options.maxBusyTries || 3
- options.emfileWait = options.emfileWait || 1000
- if (options.glob === false) {
- options.disableGlob = true
+ addedKeys = addedKeys.concat(valKeys);
}
- options.disableGlob = options.disableGlob || false
- options.glob = options.glob || defaultGlobOpts
+
+ return indent + lines.join(`\n${indent}`);
}
-function rimraf (p, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = {}
+function stringify(obj, noHeader, enableVersions) {
+ const val = _stringify(obj, {
+ indent: '',
+ topLevel: true
+ });
+ if (noHeader) {
+ return 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')
+ const lines = [];
+ lines.push('# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.');
+ lines.push(`# yarn lockfile v${(_constants || _load_constants()).LOCKFILE_VERSION}`);
+ if (enableVersions) {
+ lines.push(`# yarn v${(_package || _load_package()).version}`);
+ lines.push(`# node ${NODE_VERSION}`);
+ }
+ lines.push('\n');
+ lines.push(val);
- defaults(options)
+ return lines.join('\n');
+}
- var busyTries = 0
- var errState = null
- var n = 0
+/***/ }),
+/* 151 */,
+/* 152 */,
+/* 153 */,
+/* 154 */,
+/* 155 */,
+/* 156 */,
+/* 157 */,
+/* 158 */,
+/* 159 */,
+/* 160 */,
+/* 161 */,
+/* 162 */,
+/* 163 */,
+/* 164 */
+/***/ (function(module, exports, __webpack_require__) {
- if (options.disableGlob || !glob.hasMagic(p))
- return afterGlob(null, [p])
+"use strict";
- options.lstat(p, function (er, stat) {
- if (!er)
- return afterGlob(null, [p])
- glob(p, options.glob, afterGlob)
- })
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.fileDatesEqual = exports.copyFile = exports.unlink = undefined;
- function next (er) {
- errState = errState || er
- if (--n === 0)
- cb(errState)
- }
+var _asyncToGenerator2;
- function afterGlob (er, results) {
- if (er)
- return cb(er)
+function _load_asyncToGenerator() {
+ return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1));
+}
- n = results.length
- if (n === 0)
- return cb()
+// We want to preserve file timestamps when copying a file, since yarn uses them to decide if a file has
+// changed compared to the cache.
+// There are some OS specific cases here:
+// * On linux, fs.copyFile does not preserve timestamps, but does on OSX and Win.
+// * On windows, you must open a file with write permissions to call `fs.futimes`.
+// * On OSX you can open with read permissions and still call `fs.futimes`.
+let fixTimes = (() => {
+ var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (fd, dest, data) {
+ const doOpen = fd === undefined;
+ let openfd = fd ? fd : -1;
- results.forEach(function (p) {
- rimraf_(p, options, function CB (er) {
- if (er) {
- if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") &&
- busyTries < options.maxBusyTries) {
- busyTries ++
- var time = busyTries * 100
- // try again, with the same exact callback as this one.
- return setTimeout(function () {
- rimraf_(p, options, CB)
- }, time)
- }
+ if (disableTimestampCorrection === undefined) {
+ // if timestamps match already, no correction is needed.
+ // the need to correct timestamps varies based on OS and node versions.
+ const destStat = yield lstat(dest);
+ disableTimestampCorrection = fileDatesEqual(destStat.mtime, data.mtime);
+ }
- // this one won't happen if graceful-fs is used.
- if (er.code === "EMFILE" && timeout < options.emfileWait) {
- return setTimeout(function () {
- rimraf_(p, options, CB)
- }, timeout ++)
- }
+ if (disableTimestampCorrection) {
+ return;
+ }
- // already gone
- if (er.code === "ENOENT") er = null
+ if (doOpen) {
+ try {
+ openfd = yield open(dest, 'a', data.mode);
+ } catch (er) {
+ // file is likely read-only
+ try {
+ openfd = yield open(dest, 'r', data.mode);
+ } catch (err) {
+ // We can't even open this file for reading.
+ return;
}
+ }
+ }
- timeout = 0
- next(er)
- })
- })
- }
-}
+ try {
+ if (openfd) {
+ yield futimes(openfd, data.atime, data.mtime);
+ }
+ } catch (er) {
+ // If `futimes` throws an exception, we probably have a case of a read-only file on Windows.
+ // In this case we can just return. The incorrect timestamp will just cause that file to be recopied
+ // on subsequent installs, which will effect yarn performance but not break anything.
+ } finally {
+ if (doOpen && openfd) {
+ yield close(openfd);
+ }
+ }
+ });
-// 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.
-function rimraf_ (p, options, cb) {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
+ return function fixTimes(_x7, _x8, _x9) {
+ return _ref3.apply(this, arguments);
+ };
+})();
- // 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, function (er, st) {
- if (er && er.code === "ENOENT")
- return cb(null)
+// Compare file timestamps.
+// Some versions of Node on windows zero the milliseconds when utime is used.
- // 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)
+var _fs;
- options.unlink(p, function (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)
- })
- })
+function _load_fs() {
+ return _fs = _interopRequireDefault(__webpack_require__(3));
}
-function fixWinEPERM (p, options, er, cb) {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
- if (er)
- assert(er instanceof Error)
+var _promise;
- options.chmod(p, _0666, function (er2) {
- if (er2)
- cb(er2.code === "ENOENT" ? null : er)
- else
- options.stat(p, function(er3, stats) {
- if (er3)
- cb(er3.code === "ENOENT" ? null : er)
- else if (stats.isDirectory())
- rmdir(p, options, er, cb)
- else
- options.unlink(p, cb)
- })
- })
+function _load_promise() {
+ return _promise = __webpack_require__(40);
}
-function fixWinEPERMSync (p, options, er) {
- assert(p)
- assert(options)
- if (er)
- assert(er instanceof Error)
-
- try {
- options.chmodSync(p, _0666)
- } catch (er2) {
- if (er2.code === "ENOENT")
- return
- else
- throw er
- }
-
- try {
- var 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)
-}
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-function rmdir (p, options, originalEr, cb) {
- assert(p)
- assert(options)
- if (originalEr)
- assert(originalEr instanceof Error)
- assert(typeof cb === 'function')
+// This module serves as a wrapper for file operations that are inconsistant across node and OS versions.
- // 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, function (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)
- })
-}
+let disableTimestampCorrection = undefined; // OS dependent. will be detected on first file copy.
-function rmkids(p, options, cb) {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
+const readFileBuffer = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.readFile);
+const close = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.close);
+const lstat = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.lstat);
+const open = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.open);
+const futimes = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.futimes);
- options.readdir(p, function (er, files) {
- if (er)
- return cb(er)
- var n = files.length
- if (n === 0)
- return options.rmdir(p, cb)
- var errState
- files.forEach(function (f) {
- rimraf(path.join(p, f), options, function (er) {
- if (errState)
- return
- if (er)
- return cb(errState = er)
- if (--n === 0)
- options.rmdir(p, cb)
- })
- })
- })
-}
+const write = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.write);
-// this looks simpler, and is strictly *faster*, but will
-// tie up the JavaScript thread and fail on excessively
-// deep directory trees.
-function rimrafSync (p, options) {
- options = options || {}
- defaults(options)
+const unlink = exports.unlink = (0, (_promise || _load_promise()).promisify)(__webpack_require__(233));
- 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')
+/**
+ * Unlinks the destination to force a recreation. This is needed on case-insensitive file systems
+ * to force the correct naming when the filename has changed only in character-casing. (Jest -> jest).
+ */
+const copyFile = exports.copyFile = (() => {
+ var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data, cleanup) {
+ try {
+ yield unlink(data.dest);
+ yield copyFilePoly(data.src, data.dest, 0, data);
+ } finally {
+ if (cleanup) {
+ cleanup();
+ }
+ }
+ });
- var results
+ return function copyFile(_x, _x2) {
+ return _ref.apply(this, arguments);
+ };
+})();
- if (options.disableGlob || !glob.hasMagic(p)) {
- results = [p]
+// Node 8.5.0 introduced `fs.copyFile` which is much faster, so use that when available.
+// Otherwise we fall back to reading and writing files as buffers.
+const copyFilePoly = (src, dest, flags, data) => {
+ if ((_fs || _load_fs()).default.copyFile) {
+ return new Promise((resolve, reject) => (_fs || _load_fs()).default.copyFile(src, dest, flags, err => {
+ if (err) {
+ reject(err);
+ } else {
+ fixTimes(undefined, dest, data).then(() => resolve()).catch(ex => reject(ex));
+ }
+ }));
} else {
+ return copyWithBuffer(src, dest, flags, data);
+ }
+};
+
+const copyWithBuffer = (() => {
+ var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest, flags, data) {
+ // Use open -> write -> futimes -> close sequence to avoid opening the file twice:
+ // one with writeFile and one with utimes
+ const fd = yield open(dest, 'w', data.mode);
try {
- options.lstatSync(p)
- results = [p]
- } catch (er) {
- results = glob.sync(p, options.glob)
+ const buffer = yield readFileBuffer(src);
+ yield write(fd, buffer, 0, buffer.length);
+ yield fixTimes(fd, dest, data);
+ } finally {
+ yield close(fd);
}
+ });
+
+ return function copyWithBuffer(_x3, _x4, _x5, _x6) {
+ return _ref2.apply(this, arguments);
+ };
+})();const fileDatesEqual = exports.fileDatesEqual = (a, b) => {
+ const aTime = a.getTime();
+ const bTime = b.getTime();
+
+ if (process.platform !== 'win32') {
+ return aTime === bTime;
}
- if (!results.length)
- return
+ // See https://github.com/nodejs/node/pull/12607
+ // Submillisecond times from stat and utimes are truncated on Windows,
+ // causing a file with mtime 8.0079998 and 8.0081144 to become 8.007 and 8.008
+ // and making it impossible to update these files to their correct timestamps.
+ if (Math.abs(aTime - bTime) <= 1) {
+ return true;
+ }
- for (var i = 0; i < results.length; i++) {
- var p = results[i]
+ const aTimeSec = Math.floor(aTime / 1000);
+ const bTimeSec = Math.floor(bTime / 1000);
- try {
- var st = options.lstatSync(p)
- } catch (er) {
- if (er.code === "ENOENT")
- return
+ // See https://github.com/nodejs/node/issues/2069
+ // Some versions of Node on windows zero the milliseconds when utime is used
+ // So if any of the time has a milliseconds part of zero we suspect that the
+ // bug is present and compare only seconds.
+ if (aTime - aTimeSec * 1000 === 0 || bTime - bTimeSec * 1000 === 0) {
+ return aTimeSec === bTimeSec;
+ }
- // Windows can EPERM on stat. Life is suffering.
- if (er.code === "EPERM" && isWindows)
- fixWinEPERMSync(p, options, er)
- }
+ return aTime === bTime;
+};
- 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
+/***/ }),
+/* 165 */,
+/* 166 */,
+/* 167 */,
+/* 168 */,
+/* 169 */
+/***/ (function(module, exports, __webpack_require__) {
- rmdirSync(p, options, er)
- }
- }
-}
+"use strict";
-function rmdirSync (p, options, originalEr) {
- assert(p)
- assert(options)
- if (originalEr)
- assert(originalEr instanceof Error)
- 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)
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isFakeRoot = isFakeRoot;
+exports.isRootUser = isRootUser;
+function getUid() {
+ if (process.platform !== 'win32' && process.getuid) {
+ return process.getuid();
}
+ return null;
}
-function rmkidsSync (p, options) {
- assert(p)
- assert(options)
- options.readdirSync(p).forEach(function (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.
- var retries = isWindows ? 100 : 1
- var i = 0
- do {
- var threw = true
- try {
- var ret = options.rmdirSync(p, options)
- threw = false
- return ret
- } finally {
- if (++i < retries && threw)
- continue
- }
- } while (true)
+exports.default = isRootUser(getUid()) && !isFakeRoot();
+function isFakeRoot() {
+ return Boolean(process.env.FAKEROOTKEY);
}
+function isRootUser(uid) {
+ return uid === 0;
+}
/***/ }),
-/* 234 */,
-/* 235 */,
-/* 236 */,
-/* 237 */,
-/* 238 */,
-/* 239 */
+/* 170 */,
+/* 171 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var hasFlag = __webpack_require__(221);
-
-var support = function (level) {
- if (level === 0) {
- return false;
- }
-
- return {
- level: level,
- hasBasic: true,
- has256: level >= 2,
- has16m: level >= 3
- };
-};
-
-var supportLevel = (function () {
- if (hasFlag('no-color') ||
- hasFlag('no-colors') ||
- hasFlag('color=false')) {
- return 0;
- }
- if (hasFlag('color=16m') ||
- hasFlag('color=full') ||
- hasFlag('color=truecolor')) {
- return 3;
- }
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.getDataDir = getDataDir;
+exports.getCacheDir = getCacheDir;
+exports.getConfigDir = getConfigDir;
+const path = __webpack_require__(0);
+const userHome = __webpack_require__(45).default;
- if (hasFlag('color=256')) {
- return 2;
- }
+const FALLBACK_CONFIG_DIR = path.join(userHome, '.config', 'yarn');
+const FALLBACK_CACHE_DIR = path.join(userHome, '.cache', 'yarn');
- if (hasFlag('color') ||
- hasFlag('colors') ||
- hasFlag('color=true') ||
- hasFlag('color=always')) {
- return 1;
- }
+function getDataDir() {
+ if (process.platform === 'win32') {
+ const WIN32_APPDATA_DIR = getLocalAppDataDir();
+ return WIN32_APPDATA_DIR == null ? FALLBACK_CONFIG_DIR : path.join(WIN32_APPDATA_DIR, 'Data');
+ } else if (process.env.XDG_DATA_HOME) {
+ return path.join(process.env.XDG_DATA_HOME, 'yarn');
+ } else {
+ // This could arguably be ~/Library/Application Support/Yarn on Macs,
+ // but that feels unintuitive for a cli tool
- if (process.stdout && !process.stdout.isTTY) {
- return 0;
- }
+ // Instead, use our prior fallback. Some day this could be
+ // path.join(userHome, '.local', 'share', 'yarn')
+ // or return path.join(WIN32_APPDATA_DIR, 'Data') on win32
+ return FALLBACK_CONFIG_DIR;
+ }
+}
- if (process.platform === 'win32') {
- return 1;
- }
+function getCacheDir() {
+ if (process.platform === 'win32') {
+ // process.env.TEMP also exists, but most apps put caches here
+ return path.join(getLocalAppDataDir() || path.join(userHome, 'AppData', 'Local', 'Yarn'), 'Cache');
+ } else if (process.env.XDG_CACHE_HOME) {
+ return path.join(process.env.XDG_CACHE_HOME, 'yarn');
+ } else if (process.platform === 'darwin') {
+ return path.join(userHome, 'Library', 'Caches', 'Yarn');
+ } else {
+ return FALLBACK_CACHE_DIR;
+ }
+}
- if ('CI' in process.env) {
- if ('TRAVIS' in process.env || process.env.CI === 'Travis') {
- return 1;
- }
+function getConfigDir() {
+ if (process.platform === 'win32') {
+ // Use our prior fallback. Some day this could be
+ // return path.join(WIN32_APPDATA_DIR, 'Config')
+ const WIN32_APPDATA_DIR = getLocalAppDataDir();
+ return WIN32_APPDATA_DIR == null ? FALLBACK_CONFIG_DIR : path.join(WIN32_APPDATA_DIR, 'Config');
+ } else if (process.env.XDG_CONFIG_HOME) {
+ return path.join(process.env.XDG_CONFIG_HOME, 'yarn');
+ } else {
+ return FALLBACK_CONFIG_DIR;
+ }
+}
- return 0;
- }
+function getLocalAppDataDir() {
+ return process.env.LOCALAPPDATA ? path.join(process.env.LOCALAPPDATA, 'Yarn') : null;
+}
- if ('TEAMCITY_VERSION' in process.env) {
- return process.env.TEAMCITY_VERSION.match(/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/) === null ? 0 : 1;
- }
+/***/ }),
+/* 172 */,
+/* 173 */
+/***/ (function(module, exports, __webpack_require__) {
- if (/^(screen|xterm)-256(?:color)?/.test(process.env.TERM)) {
- return 2;
- }
+module.exports = { "default": __webpack_require__(179), __esModule: true };
- if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {
- return 1;
- }
+/***/ }),
+/* 174 */
+/***/ (function(module, exports, __webpack_require__) {
- if ('COLORTERM' in process.env) {
- return 1;
- }
+"use strict";
- if (process.env.TERM === 'dumb') {
- return 0;
- }
+module.exports = balanced;
+function balanced(a, b, str) {
+ if (a instanceof RegExp) a = maybeMatch(a, str);
+ if (b instanceof RegExp) b = maybeMatch(b, str);
- return 0;
-})();
+ var r = range(a, b, str);
-if (supportLevel === 0 && 'FORCE_COLOR' in process.env) {
- supportLevel = 1;
+ return r && {
+ start: r[0],
+ end: r[1],
+ pre: str.slice(0, r[0]),
+ body: str.slice(r[0] + a.length, r[1]),
+ post: str.slice(r[1] + b.length)
+ };
}
-module.exports = process && support(supportLevel);
-
+function maybeMatch(reg, str) {
+ var m = str.match(reg);
+ return m ? m[0] : null;
+}
-/***/ })
-/******/ ]);
+balanced.range = range;
+function range(a, b, str) {
+ var begs, beg, left, right, result;
+ var ai = str.indexOf(a);
+ var bi = str.indexOf(b, ai + 1);
+ var i = ai;
-/***/ }),
-/* 411 */
-/***/ (function(module, exports) {
+ if (ai >= 0 && bi > 0) {
+ begs = [];
+ left = str.length;
-module.exports = require("buffer");
+ while (i >= 0 && !result) {
+ if (i == ai) {
+ begs.push(i);
+ ai = str.indexOf(a, i + 1);
+ } else if (begs.length == 1) {
+ result = [ begs.pop(), bi ];
+ } else {
+ beg = begs.pop();
+ if (beg < left) {
+ left = beg;
+ right = bi;
+ }
-/***/ }),
-/* 412 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ bi = str.indexOf(b, i + 1);
+ }
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortPackageJson", function() { return sortPackageJson; });
-/* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(413);
-/* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs_promises__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(414);
-/* harmony import */ var _kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_1__);
-/*
- * 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.
- */
+ i = ai < bi && ai >= 0 ? ai : bi;
+ }
+ if (begs.length) {
+ result = [ left, right ];
+ }
+ }
-async function sortPackageJson(kbn) {
- const packageJsonPath = kbn.getAbsolute('package.json');
- await fs_promises__WEBPACK_IMPORTED_MODULE_0___default.a.writeFile(packageJsonPath, Object(_kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_1__["sortPackageJson"])(await fs_promises__WEBPACK_IMPORTED_MODULE_0___default.a.readFile(packageJsonPath, 'utf-8')));
+ return result;
}
-/***/ }),
-/* 413 */
-/***/ (function(module, exports) {
-
-module.exports = require("fs/promises");
/***/ }),
-/* 414 */
+/* 175 */
/***/ (function(module, exports, __webpack_require__) {
-"use strict";
+var concatMap = __webpack_require__(178);
+var balanced = __webpack_require__(174);
+module.exports = expandTop;
-var _interopRequireDefault = __webpack_require__(7);
+var escSlash = '\0SLASH'+Math.random()+'\0';
+var escOpen = '\0OPEN'+Math.random()+'\0';
+var escClose = '\0CLOSE'+Math.random()+'\0';
+var escComma = '\0COMMA'+Math.random()+'\0';
+var escPeriod = '\0PERIOD'+Math.random()+'\0';
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.sortPackageJson = sortPackageJson;
+function numeric(str) {
+ return parseInt(str, 10) == str
+ ? parseInt(str, 10)
+ : str.charCodeAt(0);
+}
-var _sortPackageJson = _interopRequireDefault(__webpack_require__(415));
+function escapeBraces(str) {
+ return str.split('\\\\').join(escSlash)
+ .split('\\{').join(escOpen)
+ .split('\\}').join(escClose)
+ .split('\\,').join(escComma)
+ .split('\\.').join(escPeriod);
+}
-/*
- * 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';
+function unescapeBraces(str) {
+ return str.split(escSlash).join('\\')
+ .split(escOpen).join('{')
+ .split(escClose).join('}')
+ .split(escComma).join(',')
+ .split(escPeriod).join('.');
}
-/***/ }),
-/* 415 */
-/***/ (function(module, exports, __webpack_require__) {
-const sortObjectKeys = __webpack_require__(416)
-const detectIndent = __webpack_require__(417)
-const detectNewline = __webpack_require__(418).graceful
-const gitHooks = __webpack_require__(419)
-const isPlainObject = __webpack_require__(420)
+// Basically just str.split(","), but handling cases
+// where we have nested braced sections, which should be
+// treated as individual members, like {a,{b,c},d}
+function parseCommaParts(str) {
+ if (!str)
+ return [''];
+
+ var parts = [];
+ var m = balanced('{', '}', str);
-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
- })
+ if (!m)
+ return str.split(',');
- return over
+ var pre = m.pre;
+ var body = m.body;
+ var post = m.post;
+ var p = pre.split(',');
+
+ p[p.length-1] += '{' + body + '}';
+ var postParts = parseCommaParts(post);
+ if (post.length) {
+ p[p.length-1] += postParts.shift();
+ p.push.apply(p, postParts);
+ }
+
+ parts.push.apply(parts, p);
+
+ return parts;
}
-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'])
+function expandTop(str) {
+ if (!str)
+ return [];
-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),
- ]),
- ),
- ),
- ),
- ]),
-)
+ // I don't know why Bash 4.3 does this, but it does.
+ // Anything starting with {} will have the first two bytes preserved
+ // but *only* at the top level, so {},a}b will not expand to anything,
+ // but a{},b}c will be expanded to [a}c,abc].
+ // One could argue that this is a bug in Bash, but since the goal of
+ // this module is to match Bash's rules, we escape a leading {}
+ if (str.substr(0, 2) === '{}') {
+ str = '\\{\\}' + str.substr(2);
+ }
-// See https://docs.npmjs.com/misc/scripts
-const defaultNpmScripts = new Set([
- 'install',
- 'pack',
- 'prepare',
- 'publish',
- 'restart',
- 'shrinkwrap',
- 'start',
- 'stop',
- 'test',
- 'uninstall',
- 'version',
-])
+ return expand(escapeBraces(str), true).map(unescapeBraces);
+}
+
+function identity(e) {
+ return e;
+}
-const hasDevDependency = (dependency, packageJson) => {
- return (
- 'devDependencies' in packageJson &&
- !!packageJson.devDependencies[dependency]
- )
+function embrace(str) {
+ return '{' + str + '}';
+}
+function isPadded(el) {
+ return /^-?0\d/.test(el);
}
-const sortScripts = onObject((scripts, packageJson) => {
- const names = Object.keys(scripts)
- const prefixable = new Set()
+function lte(i, y) {
+ return i <= y;
+}
+function gte(i, y) {
+ return i >= y;
+}
- 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
- })
+function expand(str, isTop) {
+ var expansions = [];
- if (!hasDevDependency('npm-run-all', packageJson)) {
- keys.sort()
+ var m = balanced('{', '}', str);
+ if (!m || /\$$/.test(m.pre)) return [str];
+
+ var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
+ var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
+ var isSequence = isNumericSequence || isAlphaSequence;
+ var isOptions = m.body.indexOf(',') >= 0;
+ if (!isSequence && !isOptions) {
+ // {a},b}
+ if (m.post.match(/,.*\}/)) {
+ str = m.pre + '{' + m.body + escClose + m.post;
+ return expand(str);
+ }
+ return [str];
}
- const order = keys.reduce(
- (order, key) =>
- order.concat(
- prefixable.has(key) ? [`pre${key}`, key, `post${key}`] : [key],
- ),
- [],
- )
+ var n;
+ if (isSequence) {
+ n = m.body.split(/\.\./);
+ } else {
+ n = parseCommaParts(m.body);
+ if (n.length === 1) {
+ // x{{a,b}}y ==> x{a}y x{b}y
+ n = expand(n[0], false).map(embrace);
+ if (n.length === 1) {
+ var post = m.post.length
+ ? expand(m.post, false)
+ : [''];
+ return post.map(function(p) {
+ return m.pre + n[0] + p;
+ });
+ }
+ }
+ }
- return sortObjectKeys(scripts, order)
-})
+ // at this point, n is the parts, and we know it's not a comma set
+ // with a single entry.
-// 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
+ // no need to expand pre, since it is guaranteed to be free of brace-sets
+ var pre = m.pre;
+ var post = m.post.length
+ ? expand(m.post, false)
+ : [''];
-// 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' },
-]
+ var N;
-const defaultSortOrder = fields.map(({ key }) => key)
-const overFields = pipe(
- fields.reduce((fns, { key, over }) => {
- if (over) {
- fns.push(overProperty(key, over))
+ if (isSequence) {
+ var x = numeric(n[0]);
+ var y = numeric(n[1]);
+ var width = Math.max(n[0].length, n[1].length)
+ var incr = n.length == 3
+ ? Math.abs(numeric(n[2]))
+ : 1;
+ var test = lte;
+ var reverse = y < x;
+ if (reverse) {
+ incr *= -1;
+ test = gte;
}
- return fns
- }, []),
-)
+ var pad = n.some(isPadded);
-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)
+ N = [];
- let result = JSON.stringify(over(json), null, indent) + endCharacters
- if (newline === '\r\n') {
- result = result.replace(/\n/g, newline)
+ for (var i = x; test(i, y); i += incr) {
+ var c;
+ if (isAlphaSequence) {
+ c = String.fromCharCode(i);
+ if (c === '\\')
+ c = '';
+ } else {
+ c = String(i);
+ if (pad) {
+ var need = width - c.length;
+ if (need > 0) {
+ var z = new Array(need + 1).join('0');
+ if (i < 0)
+ c = '-' + z + c.slice(1);
+ else
+ c = z + c;
+ }
+ }
+ }
+ N.push(c);
}
- return result
+ } else {
+ N = concatMap(n, function(el) { return expand(el, false) });
}
- return over(json)
+ for (var j = 0; j < N.length; j++) {
+ for (var k = 0; k < post.length; k++) {
+ var expansion = pre + N[j] + post[k];
+ if (!isTop || isSequence || expansion)
+ expansions.push(expansion);
+ }
+ }
+
+ return expansions;
}
-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)
- }),
- )
-}
+/***/ }),
+/* 176 */
+/***/ (function(module, exports, __webpack_require__) {
-module.exports = sortPackageJson
-module.exports.sortPackageJson = sortPackageJson
-module.exports.sortOrder = defaultSortOrder
-module.exports.default = sortPackageJson
+"use strict";
-/***/ }),
-/* 416 */
-/***/ (function(module, exports) {
+function preserveCamelCase(str) {
+ let isLastCharLower = false;
+ let isLastCharUpper = false;
+ let isLastLastCharUpper = false;
-module.exports = function sortObjectByKeyNameList(object, sortWith) {
- var keys;
- var sortFn;
+ for (let i = 0; i < str.length; i++) {
+ const c = str[i];
- if (typeof sortWith === 'function') {
- sortFn = sortWith;
- } else {
- keys = sortWith;
- }
+ if (isLastCharLower && /[a-zA-Z]/.test(c) && c.toUpperCase() === c) {
+ str = str.substr(0, i) + '-' + str.substr(i);
+ isLastCharLower = false;
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = true;
+ i++;
+ } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(c) && c.toLowerCase() === c) {
+ str = str.substr(0, i - 1) + '-' + str.substr(i - 1);
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = false;
+ isLastCharLower = true;
+ } else {
+ isLastCharLower = c.toLowerCase() === c;
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = c.toUpperCase() === c;
+ }
+ }
- 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));
+ return str;
}
+module.exports = function (str) {
+ if (arguments.length > 1) {
+ str = Array.from(arguments)
+ .map(x => x.trim())
+ .filter(x => x.length)
+ .join('-');
+ } else {
+ str = str.trim();
+ }
-/***/ }),
-/* 417 */
-/***/ (function(module, exports, __webpack_require__) {
+ if (str.length === 0) {
+ return '';
+ }
-"use strict";
+ if (str.length === 1) {
+ return str.toLowerCase();
+ }
+ if (/^[a-z0-9]+$/.test(str)) {
+ return str;
+ }
-// Detect either spaces or tabs but not both to properly handle tabs for indentation and spaces for alignment
-const INDENT_REGEX = /^(?:( )+|\t+)/;
+ const hasUpperCase = str !== str.toLowerCase();
-const INDENT_TYPE_SPACE = 'space';
-const INDENT_TYPE_TAB = 'tab';
+ if (hasUpperCase) {
+ str = preserveCamelCase(str);
+ }
-// 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();
+ return str
+ .replace(/^[_.\- ]+/, '')
+ .toLowerCase()
+ .replace(/[_.\- ]+(\w|$)/g, (m, p1) => p1.toUpperCase());
+};
- // Remember the size of previous line's indentation
- let previousSize = 0;
- let previousIndentType;
- // Indents key (ident type + size of the indents/unindents)
- let key;
+/***/ }),
+/* 177 */,
+/* 178 */
+/***/ (function(module, exports) {
- for (const line of string.split(/\n/g)) {
- if (!line) {
- // Ignore empty lines
- continue;
- }
+module.exports = function (xs, fn) {
+ var res = [];
+ for (var i = 0; i < xs.length; i++) {
+ var x = fn(xs[i], i);
+ if (isArray(x)) res.push.apply(res, x);
+ else res.push(x);
+ }
+ return res;
+};
- let indent;
- let indentType;
- let weight;
- let entry;
- const matches = line.match(INDENT_REGEX);
+var isArray = Array.isArray || function (xs) {
+ return Object.prototype.toString.call(xs) === '[object Array]';
+};
- if (matches === null) {
- previousSize = 0;
- previousIndentType = '';
- } else {
- indent = matches[0].length;
- if (matches[1]) {
- indentType = INDENT_TYPE_SPACE;
- } else {
- indentType = INDENT_TYPE_TAB;
- }
+/***/ }),
+/* 179 */
+/***/ (function(module, exports, __webpack_require__) {
- // Ignore single space unless it's the only indent detected to prevent common false positives
- if (ignoreSingleSpaces && indentType === INDENT_TYPE_SPACE && indent === 1) {
- continue;
- }
+__webpack_require__(205);
+__webpack_require__(207);
+__webpack_require__(210);
+__webpack_require__(206);
+__webpack_require__(208);
+__webpack_require__(209);
+module.exports = __webpack_require__(23).Promise;
- if (indentType !== previousIndentType) {
- previousSize = 0;
- }
- previousIndentType = indentType;
+/***/ }),
+/* 180 */
+/***/ (function(module, exports) {
- weight = 0;
+module.exports = function () { /* empty */ };
- const indentDifference = indent - previousSize;
- previousSize = indent;
- // 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);
- }
+/***/ }),
+/* 181 */
+/***/ (function(module, exports) {
- // Update the stats
- entry = indents.get(key);
+module.exports = function (it, Constructor, name, forbiddenField) {
+ if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
+ throw TypeError(name + ': incorrect invocation!');
+ } return it;
+};
- if (entry === undefined) {
- entry = [1, 0]; // Init
- } else {
- entry = [++entry[0], entry[1] + weight];
- }
- indents.set(key, entry);
- }
- }
+/***/ }),
+/* 182 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// false -> Array#indexOf
+// true -> Array#includes
+var toIObject = __webpack_require__(74);
+var toLength = __webpack_require__(110);
+var toAbsoluteIndex = __webpack_require__(200);
+module.exports = function (IS_INCLUDES) {
+ return function ($this, el, fromIndex) {
+ var O = toIObject($this);
+ var length = toLength(O.length);
+ var index = toAbsoluteIndex(fromIndex, length);
+ var value;
+ // Array#includes uses SameValueZero equality algorithm
+ // eslint-disable-next-line no-self-compare
+ if (IS_INCLUDES && el != el) while (length > index) {
+ value = O[index++];
+ // eslint-disable-next-line no-self-compare
+ if (value != value) return true;
+ // Array#indexOf ignores holes, Array#includes - not
+ } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
+ if (O[index] === el) return IS_INCLUDES || index || 0;
+ } return !IS_INCLUDES && -1;
+ };
+};
+
- return indents;
-}
+/***/ }),
+/* 183 */
+/***/ (function(module, exports, __webpack_require__) {
-// 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);
-}
+var ctx = __webpack_require__(48);
+var call = __webpack_require__(187);
+var isArrayIter = __webpack_require__(186);
+var anObject = __webpack_require__(27);
+var toLength = __webpack_require__(110);
+var getIterFn = __webpack_require__(203);
+var BREAK = {};
+var RETURN = {};
+var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
+ var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
+ var f = ctx(fn, that, entries ? 2 : 1);
+ var index = 0;
+ var length, step, iterator, result;
+ if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
+ // fast case for arrays with default iterator
+ if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
+ result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+ if (result === BREAK || result === RETURN) return result;
+ } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
+ result = call(iterator, f, step.value, entries);
+ if (result === BREAK || result === RETURN) return result;
+ }
+};
+exports.BREAK = BREAK;
+exports.RETURN = RETURN;
-// 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;
- const amount = Number(indentsKey.slice(1));
+/***/ }),
+/* 184 */
+/***/ (function(module, exports, __webpack_require__) {
- return {type, amount};
-}
+module.exports = !__webpack_require__(33) && !__webpack_require__(85)(function () {
+ return Object.defineProperty(__webpack_require__(68)('div'), 'a', { get: function () { return 7; } }).a != 7;
+});
-// 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;
- for (const [key, [usedCount, weight]] of indents) {
- if (usedCount > maxUsed || (usedCount === maxUsed && weight > maxWeight)) {
- maxUsed = usedCount;
- maxWeight = weight;
- result = key;
- }
- }
+/***/ }),
+/* 185 */
+/***/ (function(module, exports) {
- return result;
-}
+// fast apply, http://jsperf.lnkit.com/fast-apply/5
+module.exports = function (fn, args, that) {
+ var un = that === undefined;
+ switch (args.length) {
+ case 0: return un ? fn()
+ : fn.call(that);
+ case 1: return un ? fn(args[0])
+ : fn.call(that, args[0]);
+ case 2: return un ? fn(args[0], args[1])
+ : fn.call(that, args[0], args[1]);
+ case 3: return un ? fn(args[0], args[1], args[2])
+ : fn.call(that, args[0], args[1], args[2]);
+ case 4: return un ? fn(args[0], args[1], args[2], args[3])
+ : fn.call(that, args[0], args[1], args[2], args[3]);
+ } return fn.apply(that, args);
+};
-function makeIndentString(type, amount) {
- const indentCharacter = type === INDENT_TYPE_SPACE ? ' ' : '\t';
- return indentCharacter.repeat(amount);
-}
-module.exports = string => {
- if (typeof string !== 'string') {
- throw new TypeError('Expected a string');
- }
+/***/ }),
+/* 186 */
+/***/ (function(module, exports, __webpack_require__) {
- // 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);
- }
+// check on default Array iterator
+var Iterators = __webpack_require__(35);
+var ITERATOR = __webpack_require__(13)('iterator');
+var ArrayProto = Array.prototype;
- const keyOfMostUsedIndent = getMostUsedKey(indents);
+module.exports = function (it) {
+ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+};
- let type;
- let amount = 0;
- let indent = '';
- if (keyOfMostUsedIndent !== undefined) {
- ({type, amount} = decodeIndentsKey(keyOfMostUsedIndent));
- indent = makeIndentString(type, amount);
- }
+/***/ }),
+/* 187 */
+/***/ (function(module, exports, __webpack_require__) {
- return {
- amount,
- type,
- indent
- };
+// call something on iterator step with safe closing on error
+var anObject = __webpack_require__(27);
+module.exports = function (iterator, fn, value, entries) {
+ try {
+ return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+ // 7.4.6 IteratorClose(iterator, completion)
+ } catch (e) {
+ var ret = iterator['return'];
+ if (ret !== undefined) anObject(ret.call(iterator));
+ throw e;
+ }
};
/***/ }),
-/* 418 */
+/* 188 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+var create = __webpack_require__(192);
+var descriptor = __webpack_require__(106);
+var setToStringTag = __webpack_require__(71);
+var IteratorPrototype = {};
-const detectNewline = string => {
- if (typeof string !== 'string') {
- throw new TypeError('Expected a string');
- }
-
- 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;
+// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+__webpack_require__(31)(IteratorPrototype, __webpack_require__(13)('iterator'), function () { return this; });
- return crlf > lf ? '\r\n' : '\n';
+module.exports = function (Constructor, NAME, next) {
+ Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
+ setToStringTag(Constructor, NAME + ' Iterator');
};
-module.exports = detectNewline;
-module.exports.graceful = string => (typeof string === 'string' && detectNewline(string)) || '\n';
-
/***/ }),
-/* 419 */
-/***/ (function(module) {
+/* 189 */
+/***/ (function(module, exports, __webpack_require__) {
-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\"]");
+var ITERATOR = __webpack_require__(13)('iterator');
+var SAFE_CLOSING = false;
-/***/ }),
-/* 420 */
-/***/ (function(module, exports, __webpack_require__) {
+try {
+ var riter = [7][ITERATOR]();
+ riter['return'] = function () { SAFE_CLOSING = true; };
+ // eslint-disable-next-line no-throw-literal
+ Array.from(riter, function () { throw 2; });
+} catch (e) { /* empty */ }
-"use strict";
+module.exports = function (exec, skipClosing) {
+ if (!skipClosing && !SAFE_CLOSING) return false;
+ var safe = false;
+ try {
+ var arr = [7];
+ var iter = arr[ITERATOR]();
+ iter.next = function () { return { done: safe = true }; };
+ arr[ITERATOR] = function () { return iter; };
+ exec(arr);
+ } catch (e) { /* empty */ }
+ return safe;
+};
-module.exports = value => {
- if (Object.prototype.toString.call(value) !== '[object Object]') {
- return false;
- }
+/***/ }),
+/* 190 */
+/***/ (function(module, exports) {
- const prototype = Object.getPrototypeOf(value);
- return prototype === null || prototype === Object.prototype;
+module.exports = function (done, value) {
+ return { value: value, done: !!done };
};
/***/ }),
-/* 421 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 191 */
+/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateDependencies", function() { return validateDependencies; });
-/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(410);
-/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
-/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(114);
-/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(231);
-/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(220);
-/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(343);
-/* harmony import */ var _projects_tree__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(422);
-/*
- * 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.
- */
-// @ts-expect-error published types are useless
+var global = __webpack_require__(11);
+var macrotask = __webpack_require__(109).set;
+var Observer = global.MutationObserver || global.WebKitMutationObserver;
+var process = global.process;
+var Promise = global.Promise;
+var isNode = __webpack_require__(47)(process) == 'process';
+module.exports = function () {
+ var head, last, notify;
+ var flush = function () {
+ var parent, fn;
+ if (isNode && (parent = process.domain)) parent.exit();
+ while (head) {
+ fn = head.fn;
+ head = head.next;
+ try {
+ fn();
+ } catch (e) {
+ if (head) notify();
+ else last = undefined;
+ throw e;
+ }
+ } last = undefined;
+ if (parent) parent.enter();
+ };
+ // Node.js
+ if (isNode) {
+ notify = function () {
+ process.nextTick(flush);
+ };
+ // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
+ } else if (Observer && !(global.navigator && global.navigator.standalone)) {
+ var toggle = true;
+ var node = document.createTextNode('');
+ new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
+ notify = function () {
+ node.data = toggle = !toggle;
+ };
+ // environments with maybe non-completely correct, but existent Promise
+ } else if (Promise && Promise.resolve) {
+ // Promise.resolve without an argument throws an error in LG WebOS 2
+ var promise = Promise.resolve(undefined);
+ notify = function () {
+ promise.then(flush);
+ };
+ // for other environments - macrotask based on:
+ // - setImmediate
+ // - MessageChannel
+ // - window.postMessag
+ // - onreadystatechange
+ // - setTimeout
+ } else {
+ notify = function () {
+ // strange IE + webpack dev server bug - use .call(global)
+ macrotask.call(global, flush);
+ };
+ }
+ return function (fn) {
+ var task = { fn: fn, next: undefined };
+ if (last) last.next = task;
+ if (!head) {
+ head = task;
+ notify();
+ } last = task;
+ };
+};
+/***/ }),
+/* 192 */
+/***/ (function(module, exports, __webpack_require__) {
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+var anObject = __webpack_require__(27);
+var dPs = __webpack_require__(193);
+var enumBugKeys = __webpack_require__(101);
+var IE_PROTO = __webpack_require__(72)('IE_PROTO');
+var Empty = function () { /* empty */ };
+var PROTOTYPE = 'prototype';
-async function validateDependencies(kbn, yarnLock) {
- // look through all of the packages in the yarn.lock file to see if
- // we have accidentally installed multiple lodash v4 versions
- const lodash4Versions = new Set();
- const lodash4Reqs = new Set();
+// Create object with fake `null` prototype: use iframe Object with cleared prototype
+var createDict = function () {
+ // Thrash, waste and sodomy: IE GC bug
+ var iframe = __webpack_require__(68)('iframe');
+ var i = enumBugKeys.length;
+ var lt = '<';
+ var gt = '>';
+ var iframeDocument;
+ iframe.style.display = 'none';
+ __webpack_require__(102).appendChild(iframe);
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+ // createDict = iframe.contentWindow.Object;
+ // html.removeChild(iframe);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
+ iframeDocument.close();
+ createDict = iframeDocument.F;
+ while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
+ return createDict();
+};
- for (const [req, dep] of Object.entries(yarnLock)) {
- if (req.startsWith('lodash@') && dep.version.startsWith('4.')) {
- lodash4Reqs.add(req);
- lodash4Versions.add(dep.version);
- }
- } // if we find more than one lodash v4 version installed then delete
- // lodash v4 requests from the yarn.lock file and prompt the user to
- // retry bootstrap so that a single v4 version will be installed
+module.exports = Object.create || function create(O, Properties) {
+ var result;
+ if (O !== null) {
+ Empty[PROTOTYPE] = anObject(O);
+ result = new Empty();
+ Empty[PROTOTYPE] = null;
+ // add "__proto__" for Object.getPrototypeOf polyfill
+ result[IE_PROTO] = O;
+ } else result = createDict();
+ return Properties === undefined ? result : dPs(result, Properties);
+};
- if (lodash4Versions.size > 1) {
- for (const req of lodash4Reqs) {
- delete yarnLock[req];
- }
+/***/ }),
+/* 193 */
+/***/ (function(module, exports, __webpack_require__) {
- await Object(_fs__WEBPACK_IMPORTED_MODULE_4__["writeFile"])(kbn.getAbsolute('yarn.lock'), Object(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__["stringify"])(yarnLock), 'utf8');
- _log__WEBPACK_IMPORTED_MODULE_5__["log"].error(dedent__WEBPACK_IMPORTED_MODULE_1___default.a`
+var dP = __webpack_require__(50);
+var anObject = __webpack_require__(27);
+var getKeys = __webpack_require__(132);
- Multiple version of lodash v4 were detected, so they have been removed
- from the yarn.lock file. Please rerun yarn kbn bootstrap to coalese the
- lodash versions installed.
+module.exports = __webpack_require__(33) ? Object.defineProperties : function defineProperties(O, Properties) {
+ anObject(O);
+ var keys = getKeys(Properties);
+ var length = keys.length;
+ var i = 0;
+ var P;
+ while (length > i) dP.f(O, P = keys[i++], Properties[P]);
+ return O;
+};
- If you still see this error when you re-bootstrap then you might need
- to force a new dependency to use the latest version of lodash via the
- "resolutions" field in package.json.
- If you have questions about this please reach out to the operations team.
+/***/ }),
+/* 194 */
+/***/ (function(module, exports, __webpack_require__) {
- `);
- process.exit(1);
- } // look through all the dependencies of production packages and production
- // dependencies of those packages to determine if we're shipping any versions
- // of lodash v3 in the distributable
+// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
+var has = __webpack_require__(49);
+var toObject = __webpack_require__(133);
+var IE_PROTO = __webpack_require__(72)('IE_PROTO');
+var ObjectProto = Object.prototype;
+module.exports = Object.getPrototypeOf || function (O) {
+ O = toObject(O);
+ if (has(O, IE_PROTO)) return O[IE_PROTO];
+ if (typeof O.constructor == 'function' && O instanceof O.constructor) {
+ return O.constructor.prototype;
+ } return O instanceof Object ? ObjectProto : null;
+};
- const prodDependencies = kbn.resolveAllProductionDependencies(yarnLock, _log__WEBPACK_IMPORTED_MODULE_5__["log"]);
- const lodash3Versions = new Set();
- for (const dep of prodDependencies.values()) {
- if (dep.name === 'lodash' && dep.version.startsWith('3.')) {
- lodash3Versions.add(dep.version);
- }
- } // if any lodash v3 packages were found we abort and tell the user to fix things
+/***/ }),
+/* 195 */
+/***/ (function(module, exports, __webpack_require__) {
+var has = __webpack_require__(49);
+var toIObject = __webpack_require__(74);
+var arrayIndexOf = __webpack_require__(182)(false);
+var IE_PROTO = __webpack_require__(72)('IE_PROTO');
- if (lodash3Versions.size) {
- _log__WEBPACK_IMPORTED_MODULE_5__["log"].error(dedent__WEBPACK_IMPORTED_MODULE_1___default.a`
+module.exports = function (object, names) {
+ var O = toIObject(object);
+ var i = 0;
+ var result = [];
+ var key;
+ for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
+ // Don't enum bug & hidden keys
+ while (names.length > i) if (has(O, key = names[i++])) {
+ ~arrayIndexOf(result, key) || result.push(key);
+ }
+ return result;
+};
- Due to changes in the yarn.lock file and/or package.json files a version of
- lodash 3 is now included in the production dependencies. To reduce the size of
- our distributable and especially our front-end bundles we have decided to
- prevent adding any new instances of lodash 3.
- Please inspect the changes to yarn.lock or package.json files to identify where
- the lodash 3 version is coming from and remove it.
+/***/ }),
+/* 196 */
+/***/ (function(module, exports, __webpack_require__) {
- If you have questions about this please reack out to the operations team.
+var hide = __webpack_require__(31);
+module.exports = function (target, src, safe) {
+ for (var key in src) {
+ if (safe && target[key]) target[key] = src[key];
+ else hide(target, key, src[key]);
+ } return target;
+};
- `);
- process.exit(1);
- } // TODO: remove this once we move into a single package.json
- // look through all the package.json files to find packages which have mismatched version ranges
+/***/ }),
+/* 197 */
+/***/ (function(module, exports, __webpack_require__) {
- const depRanges = new Map();
+module.exports = __webpack_require__(31);
- for (const project of kbn.getAllProjects().values()) {
- var _kbn$kibanaProject;
- // Skip if this is an external plugin
- if (project.path.includes(`${(_kbn$kibanaProject = kbn.kibanaProject) === null || _kbn$kibanaProject === void 0 ? void 0 : _kbn$kibanaProject.path}${path__WEBPACK_IMPORTED_MODULE_3__["sep"]}plugins`)) {
- continue;
- }
+/***/ }),
+/* 198 */
+/***/ (function(module, exports, __webpack_require__) {
- for (const [dep, range] of Object.entries(project.allDependencies)) {
- const existingDep = depRanges.get(dep);
+"use strict";
- if (!existingDep) {
- depRanges.set(dep, [{
- range,
- projects: [project]
- }]);
- continue;
- }
+var global = __webpack_require__(11);
+var core = __webpack_require__(23);
+var dP = __webpack_require__(50);
+var DESCRIPTORS = __webpack_require__(33);
+var SPECIES = __webpack_require__(13)('species');
- const existingRange = existingDep.find(existing => existing.range === range);
+module.exports = function (KEY) {
+ var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
+ if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
+ configurable: true,
+ get: function () { return this; }
+ });
+};
- if (!existingRange) {
- existingDep.push({
- range,
- projects: [project]
- });
- continue;
- }
- existingRange.projects.push(project);
- }
- }
+/***/ }),
+/* 199 */
+/***/ (function(module, exports, __webpack_require__) {
- const duplicateRanges = Array.from(depRanges.entries()).filter(([, ranges]) => ranges.length > 1 && !ranges.every(rng => Object(_package_json__WEBPACK_IMPORTED_MODULE_6__["isLinkDependency"])(rng.range))).reduce((acc, [dep, ranges]) => [...acc, dep, ...ranges.map(({
- range,
- projects
- }) => ` ${range} => ${projects.map(p => p.name).join(', ')}`)], []).join('\n ');
+var toInteger = __webpack_require__(73);
+var defined = __webpack_require__(67);
+// true -> String#at
+// false -> String#codePointAt
+module.exports = function (TO_STRING) {
+ return function (that, pos) {
+ var s = String(defined(that));
+ var i = toInteger(pos);
+ var l = s.length;
+ var a, b;
+ if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
+ a = s.charCodeAt(i);
+ return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
+ ? TO_STRING ? s.charAt(i) : a
+ : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
+ };
+};
- if (duplicateRanges) {
- _log__WEBPACK_IMPORTED_MODULE_5__["log"].error(dedent__WEBPACK_IMPORTED_MODULE_1___default.a`
- [single_version_dependencies] Multiple version ranges for the same dependency
- were found declared across different package.json files. Please consolidate
- those to match across all package.json files. Different versions for the
- same dependency is not supported.
+/***/ }),
+/* 200 */
+/***/ (function(module, exports, __webpack_require__) {
- If you have questions about this please reach out to the operations team.
+var toInteger = __webpack_require__(73);
+var max = Math.max;
+var min = Math.min;
+module.exports = function (index, length) {
+ index = toInteger(index);
+ return index < 0 ? max(index + length, 0) : min(index, length);
+};
- The conflicting dependencies are:
- ${duplicateRanges}
- `);
- process.exit(1);
- } // look for packages that have the the `kibana.devOnly` flag in their package.json
- // and make sure they aren't included in the production dependencies of Kibana
+/***/ }),
+/* 201 */
+/***/ (function(module, exports, __webpack_require__) {
+// 7.1.1 ToPrimitive(input [, PreferredType])
+var isObject = __webpack_require__(34);
+// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+// and the second argument - flag - preferred type is a string
+module.exports = function (it, S) {
+ if (!isObject(it)) return it;
+ var fn, val;
+ if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+ if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
+ if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+ throw TypeError("Can't convert object to primitive value");
+};
- const devOnlyProjectsInProduction = getDevOnlyProductionDepsTree(kbn, 'kibana');
- if (devOnlyProjectsInProduction) {
- _log__WEBPACK_IMPORTED_MODULE_5__["log"].error(dedent__WEBPACK_IMPORTED_MODULE_1___default.a`
- Some of the packages in the production dependency chain for Kibana and X-Pack are
- flagged with "kibana.devOnly" in their package.json. Please check changes made to
- packages and their dependencies to ensure they don't end up in production.
+/***/ }),
+/* 202 */
+/***/ (function(module, exports, __webpack_require__) {
- The devOnly dependencies that are being dependend on in production are:
+var global = __webpack_require__(11);
+var navigator = global.navigator;
- ${Object(_projects_tree__WEBPACK_IMPORTED_MODULE_7__["treeToString"])(devOnlyProjectsInProduction).split('\n').join('\n ')}
- `);
- process.exit(1);
- }
+module.exports = navigator && navigator.userAgent || '';
- _log__WEBPACK_IMPORTED_MODULE_5__["log"].success('yarn.lock analysis completed without any issues');
-}
-function getDevOnlyProductionDepsTree(kbn, projectName) {
- const project = kbn.getProject(projectName);
- const childProjectNames = [...Object.keys(project.productionDependencies).filter(name => kbn.hasProject(name)), ...(projectName === 'kibana' ? ['x-pack'] : [])];
- const children = childProjectNames.map(n => getDevOnlyProductionDepsTree(kbn, n)).filter(t => !!t);
+/***/ }),
+/* 203 */
+/***/ (function(module, exports, __webpack_require__) {
- if (!children.length && !project.isFlaggedAsDevOnly()) {
- return;
- }
+var classof = __webpack_require__(100);
+var ITERATOR = __webpack_require__(13)('iterator');
+var Iterators = __webpack_require__(35);
+module.exports = __webpack_require__(23).getIteratorMethod = function (it) {
+ if (it != undefined) return it[ITERATOR]
+ || it['@@iterator']
+ || Iterators[classof(it)];
+};
- const tree = {
- name: project.isFlaggedAsDevOnly() ? chalk__WEBPACK_IMPORTED_MODULE_2___default.a.red.bold(projectName) : projectName,
- children
- };
- return tree;
-}
/***/ }),
-/* 422 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 204 */
+/***/ (function(module, exports, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderProjectsTree", function() { return renderProjectsTree; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "treeToString", function() { return treeToString; });
-/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(114);
-/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
-/*
- * 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.
- */
+var addToUnscopables = __webpack_require__(180);
+var step = __webpack_require__(190);
+var Iterators = __webpack_require__(35);
+var toIObject = __webpack_require__(74);
-const projectKey = Symbol('__project');
-function renderProjectsTree(rootPath, projects) {
- const projectsTree = buildProjectsTree(rootPath, projects);
- return treeToString(createTreeStructure(projectsTree));
-}
-function treeToString(tree) {
- return [tree.name].concat(childrenToStrings(tree.children, '')).join('\n');
-}
-
-function childrenToStrings(tree, treePrefix) {
- if (tree === undefined) {
- return [];
+// 22.1.3.4 Array.prototype.entries()
+// 22.1.3.13 Array.prototype.keys()
+// 22.1.3.29 Array.prototype.values()
+// 22.1.3.30 Array.prototype[@@iterator]()
+module.exports = __webpack_require__(103)(Array, 'Array', function (iterated, kind) {
+ this._t = toIObject(iterated); // target
+ this._i = 0; // next index
+ this._k = kind; // kind
+// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
+}, function () {
+ var O = this._t;
+ var kind = this._k;
+ var index = this._i++;
+ if (!O || index >= O.length) {
+ this._t = undefined;
+ return step(1);
}
+ if (kind == 'keys') return step(0, index);
+ if (kind == 'values') return step(0, O[index]);
+ return step(0, [index, O[index]]);
+}, 'values');
- let strings = [];
- tree.forEach((node, index) => {
- const isLastNode = tree.length - 1 === index;
- const nodePrefix = isLastNode ? '└── ' : '├── ';
- const childPrefix = isLastNode ? ' ' : '│ ';
- const childrenPrefix = treePrefix + childPrefix;
- strings.push(`${treePrefix}${nodePrefix}${node.name}`);
- strings = strings.concat(childrenToStrings(node.children, childrenPrefix));
- });
- return strings;
-}
-
-function createTreeStructure(tree) {
- let name;
- const children = [];
-
- for (const [dir, project] of tree.entries()) {
- // This is a leaf node (aka a project)
- if (typeof project === 'string') {
- name = chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(project);
- continue;
- } // If there's only one project and the key indicates it's a leaf node, we
- // know that we're at a package folder that contains a package.json, so we
- // "inline it" so we don't get unnecessary levels, i.e. we'll just see
- // `foo` instead of `foo -> foo`.
-
+// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
+Iterators.Arguments = Iterators.Array;
- if (project.size === 1 && project.has(projectKey)) {
- const projectName = project.get(projectKey);
- children.push({
- children: [],
- name: dirOrProjectName(dir, projectName)
- });
- continue;
- }
+addToUnscopables('keys');
+addToUnscopables('values');
+addToUnscopables('entries');
- const subtree = createTreeStructure(project); // If the name is specified, we know there's a package at the "root" of the
- // subtree itself.
- if (subtree.name !== undefined) {
- const projectName = subtree.name;
- children.push({
- children: subtree.children,
- name: dirOrProjectName(dir, projectName)
- });
- continue;
- } // Special-case whenever we have one child, so we don't get unnecessary
- // folders in the output. E.g. instead of `foo -> bar -> baz` we get
- // `foo/bar/baz` instead.
+/***/ }),
+/* 205 */
+/***/ (function(module, exports) {
- if (subtree.children && subtree.children.length === 1) {
- const child = subtree.children[0];
- const newName = chalk__WEBPACK_IMPORTED_MODULE_0___default.a.dim(path__WEBPACK_IMPORTED_MODULE_1___default.a.join(dir.toString(), child.name));
- children.push({
- children: child.children,
- name: newName
- });
- continue;
- }
- children.push({
- children: subtree.children,
- name: chalk__WEBPACK_IMPORTED_MODULE_0___default.a.dim(dir.toString())
- });
- }
+/***/ }),
+/* 206 */
+/***/ (function(module, exports, __webpack_require__) {
- return {
- name,
- children
- };
-}
+"use strict";
-function dirOrProjectName(dir, projectName) {
- return dir === projectName ? chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(dir) : chalk__WEBPACK_IMPORTED_MODULE_0___default.a`{dim ${dir.toString()} ({reset.green ${projectName}})}`;
-}
+var LIBRARY = __webpack_require__(69);
+var global = __webpack_require__(11);
+var ctx = __webpack_require__(48);
+var classof = __webpack_require__(100);
+var $export = __webpack_require__(41);
+var isObject = __webpack_require__(34);
+var aFunction = __webpack_require__(46);
+var anInstance = __webpack_require__(181);
+var forOf = __webpack_require__(183);
+var speciesConstructor = __webpack_require__(108);
+var task = __webpack_require__(109).set;
+var microtask = __webpack_require__(191)();
+var newPromiseCapabilityModule = __webpack_require__(70);
+var perform = __webpack_require__(104);
+var userAgent = __webpack_require__(202);
+var promiseResolve = __webpack_require__(105);
+var PROMISE = 'Promise';
+var TypeError = global.TypeError;
+var process = global.process;
+var versions = process && process.versions;
+var v8 = versions && versions.v8 || '';
+var $Promise = global[PROMISE];
+var isNode = classof(process) == 'process';
+var empty = function () { /* empty */ };
+var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
+var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
-function buildProjectsTree(rootPath, projects) {
- const tree = new Map();
+var USE_NATIVE = !!function () {
+ try {
+ // correct subclassing with @@species support
+ var promise = $Promise.resolve(1);
+ var FakePromise = (promise.constructor = {})[__webpack_require__(13)('species')] = function (exec) {
+ exec(empty, empty);
+ };
+ // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
+ return (isNode || typeof PromiseRejectionEvent == 'function')
+ && promise.then(empty) instanceof FakePromise
+ // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
+ // we can't detect it synchronously, so just check versions
+ && v8.indexOf('6.6') !== 0
+ && userAgent.indexOf('Chrome/66') === -1;
+ } catch (e) { /* empty */ }
+}();
- for (const project of projects.values()) {
- if (rootPath === project.path) {
- tree.set(projectKey, project.name);
+// helpers
+var isThenable = function (it) {
+ var then;
+ return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
+};
+var notify = function (promise, isReject) {
+ if (promise._n) return;
+ promise._n = true;
+ var chain = promise._c;
+ microtask(function () {
+ var value = promise._v;
+ var ok = promise._s == 1;
+ var i = 0;
+ var run = function (reaction) {
+ var handler = ok ? reaction.ok : reaction.fail;
+ var resolve = reaction.resolve;
+ var reject = reaction.reject;
+ var domain = reaction.domain;
+ var result, then, exited;
+ try {
+ if (handler) {
+ if (!ok) {
+ if (promise._h == 2) onHandleUnhandled(promise);
+ promise._h = 1;
+ }
+ if (handler === true) result = value;
+ else {
+ if (domain) domain.enter();
+ result = handler(value); // may throw
+ if (domain) {
+ domain.exit();
+ exited = true;
+ }
+ }
+ if (result === reaction.promise) {
+ reject(TypeError('Promise-chain cycle'));
+ } else if (then = isThenable(result)) {
+ then.call(result, resolve, reject);
+ } else resolve(result);
+ } else reject(value);
+ } catch (e) {
+ if (domain && !exited) domain.exit();
+ reject(e);
+ }
+ };
+ while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
+ promise._c = [];
+ promise._n = false;
+ if (isReject && !promise._h) onUnhandled(promise);
+ });
+};
+var onUnhandled = function (promise) {
+ task.call(global, function () {
+ var value = promise._v;
+ var unhandled = isUnhandled(promise);
+ var result, handler, console;
+ if (unhandled) {
+ result = perform(function () {
+ if (isNode) {
+ process.emit('unhandledRejection', value, promise);
+ } else if (handler = global.onunhandledrejection) {
+ handler({ promise: promise, reason: value });
+ } else if ((console = global.console) && console.error) {
+ console.error('Unhandled promise rejection', value);
+ }
+ });
+ // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
+ promise._h = isNode || isUnhandled(promise) ? 2 : 1;
+ } promise._a = undefined;
+ if (unhandled && result.e) throw result.v;
+ });
+};
+var isUnhandled = function (promise) {
+ return promise._h !== 1 && (promise._a || promise._c).length === 0;
+};
+var onHandleUnhandled = function (promise) {
+ task.call(global, function () {
+ var handler;
+ if (isNode) {
+ process.emit('rejectionHandled', promise);
+ } else if (handler = global.onrejectionhandled) {
+ handler({ promise: promise, reason: promise._v });
+ }
+ });
+};
+var $reject = function (value) {
+ var promise = this;
+ if (promise._d) return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ promise._v = value;
+ promise._s = 2;
+ if (!promise._a) promise._a = promise._c.slice();
+ notify(promise, true);
+};
+var $resolve = function (value) {
+ var promise = this;
+ var then;
+ if (promise._d) return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ try {
+ if (promise === value) throw TypeError("Promise can't be resolved itself");
+ if (then = isThenable(value)) {
+ microtask(function () {
+ var wrapper = { _w: promise, _d: false }; // wrap
+ try {
+ then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
+ } catch (e) {
+ $reject.call(wrapper, e);
+ }
+ });
} else {
- const relativeProjectPath = path__WEBPACK_IMPORTED_MODULE_1___default.a.relative(rootPath, project.path);
- addProjectToTree(tree, relativeProjectPath.split(path__WEBPACK_IMPORTED_MODULE_1___default.a.sep), project);
+ promise._v = value;
+ promise._s = 1;
+ notify(promise, false);
}
+ } catch (e) {
+ $reject.call({ _w: promise, _d: false }, e); // wrap
}
+};
- return tree;
+// constructor polyfill
+if (!USE_NATIVE) {
+ // 25.4.3.1 Promise(executor)
+ $Promise = function Promise(executor) {
+ anInstance(this, $Promise, PROMISE, '_h');
+ aFunction(executor);
+ Internal.call(this);
+ try {
+ executor(ctx($resolve, this, 1), ctx($reject, this, 1));
+ } catch (err) {
+ $reject.call(this, err);
+ }
+ };
+ // eslint-disable-next-line no-unused-vars
+ Internal = function Promise(executor) {
+ this._c = []; // <- awaiting reactions
+ this._a = undefined; // <- checked in isUnhandled reactions
+ this._s = 0; // <- state
+ this._d = false; // <- done
+ this._v = undefined; // <- value
+ this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
+ this._n = false; // <- notify
+ };
+ Internal.prototype = __webpack_require__(196)($Promise.prototype, {
+ // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
+ then: function then(onFulfilled, onRejected) {
+ var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
+ reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
+ reaction.fail = typeof onRejected == 'function' && onRejected;
+ reaction.domain = isNode ? process.domain : undefined;
+ this._c.push(reaction);
+ if (this._a) this._a.push(reaction);
+ if (this._s) notify(this, false);
+ return reaction.promise;
+ },
+ // 25.4.5.1 Promise.prototype.catch(onRejected)
+ 'catch': function (onRejected) {
+ return this.then(undefined, onRejected);
+ }
+ });
+ OwnPromiseCapability = function () {
+ var promise = new Internal();
+ this.promise = promise;
+ this.resolve = ctx($resolve, promise, 1);
+ this.reject = ctx($reject, promise, 1);
+ };
+ newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
+ return C === $Promise || C === Wrapper
+ ? new OwnPromiseCapability(C)
+ : newGenericPromiseCapability(C);
+ };
}
-function addProjectToTree(tree, pathParts, project) {
- if (pathParts.length === 0) {
- tree.set(projectKey, project.name);
- } else {
- const [currentDir, ...rest] = pathParts;
-
- if (!tree.has(currentDir)) {
- tree.set(currentDir, new Map());
- }
+$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
+__webpack_require__(71)($Promise, PROMISE);
+__webpack_require__(198)(PROMISE);
+Wrapper = __webpack_require__(23)[PROMISE];
- const subtree = tree.get(currentDir);
- addProjectToTree(subtree, rest, project);
+// statics
+$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
+ // 25.4.4.5 Promise.reject(r)
+ reject: function reject(r) {
+ var capability = newPromiseCapability(this);
+ var $$reject = capability.reject;
+ $$reject(r);
+ return capability.promise;
}
-}
+});
+$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
+ // 25.4.4.6 Promise.resolve(x)
+ resolve: function resolve(x) {
+ return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
+ }
+});
+$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(189)(function (iter) {
+ $Promise.all(iter)['catch'](empty);
+})), PROMISE, {
+ // 25.4.4.1 Promise.all(iterable)
+ all: function all(iterable) {
+ var C = this;
+ var capability = newPromiseCapability(C);
+ var resolve = capability.resolve;
+ var reject = capability.reject;
+ var result = perform(function () {
+ var values = [];
+ var index = 0;
+ var remaining = 1;
+ forOf(iterable, false, function (promise) {
+ var $index = index++;
+ var alreadyCalled = false;
+ values.push(undefined);
+ remaining++;
+ C.resolve(promise).then(function (value) {
+ if (alreadyCalled) return;
+ alreadyCalled = true;
+ values[$index] = value;
+ --remaining || resolve(values);
+ }, reject);
+ });
+ --remaining || resolve(values);
+ });
+ if (result.e) reject(result.v);
+ return capability.promise;
+ },
+ // 25.4.4.4 Promise.race(iterable)
+ race: function race(iterable) {
+ var C = this;
+ var capability = newPromiseCapability(C);
+ var reject = capability.reject;
+ var result = perform(function () {
+ forOf(iterable, false, function (promise) {
+ C.resolve(promise).then(capability.resolve, reject);
+ });
+ });
+ if (result.e) reject(result.v);
+ return capability.promise;
+ }
+});
+
/***/ }),
-/* 423 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 207 */
+/***/ (function(module, exports, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _get_cache_folders__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(424);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getBazelDiskCacheFolder", function() { return _get_cache_folders__WEBPACK_IMPORTED_MODULE_0__["getBazelDiskCacheFolder"]; });
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getBazelRepositoryCacheFolder", function() { return _get_cache_folders__WEBPACK_IMPORTED_MODULE_0__["getBazelRepositoryCacheFolder"]; });
-
-/* harmony import */ var _install_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(425);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isBazelBinAvailable", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_1__["isBazelBinAvailable"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "installBazelTools", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_1__["installBazelTools"]; });
-
-/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(426);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "runBazel", function() { return _run__WEBPACK_IMPORTED_MODULE_2__["runBazel"]; });
+var $at = __webpack_require__(199)(true);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "runIBazel", function() { return _run__WEBPACK_IMPORTED_MODULE_2__["runIBazel"]; });
+// 21.1.3.27 String.prototype[@@iterator]()
+__webpack_require__(103)(String, 'String', function (iterated) {
+ this._t = String(iterated); // target
+ this._i = 0; // next index
+// 21.1.5.2.1 %StringIteratorPrototype%.next()
+}, function () {
+ var O = this._t;
+ var index = this._i;
+ var point;
+ if (index >= O.length) return { value: undefined, done: true };
+ point = $at(O, index);
+ this._i += point.length;
+ return { value: point, done: false };
+});
-/* harmony import */ var _yarn_integrity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(528);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeYarnIntegrityFileIfExists", function() { return _yarn_integrity__WEBPACK_IMPORTED_MODULE_3__["removeYarnIntegrityFileIfExists"]; });
-/*
- * 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.
- */
+/***/ }),
+/* 208 */
+/***/ (function(module, exports, __webpack_require__) {
+"use strict";
+// https://github.com/tc39/proposal-promise-finally
+var $export = __webpack_require__(41);
+var core = __webpack_require__(23);
+var global = __webpack_require__(11);
+var speciesConstructor = __webpack_require__(108);
+var promiseResolve = __webpack_require__(105);
+$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
+ var C = speciesConstructor(this, core.Promise || global.Promise);
+ var isFunction = typeof onFinally == 'function';
+ return this.then(
+ isFunction ? function (x) {
+ return promiseResolve(C, onFinally()).then(function () { return x; });
+ } : onFinally,
+ isFunction ? function (e) {
+ return promiseResolve(C, onFinally()).then(function () { throw e; });
+ } : onFinally
+ );
+} });
/***/ }),
-/* 424 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 209 */
+/***/ (function(module, exports, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBazelDiskCacheFolder", function() { return getBazelDiskCacheFolder; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBazelRepositoryCacheFolder", function() { return getBazelRepositoryCacheFolder; });
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(221);
-/*
- * 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.
- */
-
+// https://github.com/tc39/proposal-promise-try
+var $export = __webpack_require__(41);
+var newPromiseCapability = __webpack_require__(70);
+var perform = __webpack_require__(104);
-async function rawRunBazelInfoRepoCache() {
- const {
- stdout: bazelRepositoryCachePath
- } = await Object(_child_process__WEBPACK_IMPORTED_MODULE_1__["spawn"])('bazel', ['info', 'repository_cache'], {
- stdio: 'pipe'
- });
- return bazelRepositoryCachePath;
-}
+$export($export.S, 'Promise', { 'try': function (callbackfn) {
+ var promiseCapability = newPromiseCapability.f(this);
+ var result = perform(callbackfn);
+ (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
+ return promiseCapability.promise;
+} });
-async function getBazelDiskCacheFolder() {
- return Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["dirname"])(await rawRunBazelInfoRepoCache()), 'disk-cache');
-}
-async function getBazelRepositoryCacheFolder() {
- return await rawRunBazelInfoRepoCache();
-}
/***/ }),
-/* 425 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 210 */
+/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBazelBinAvailable", function() { return isBazelBinAvailable; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "installBazelTools", function() { return installBazelTools; });
-/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
-/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
-/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221);
-/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(231);
-/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(220);
-/*
- * 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.
- */
+__webpack_require__(204);
+var global = __webpack_require__(11);
+var hide = __webpack_require__(31);
+var Iterators = __webpack_require__(35);
+var TO_STRING_TAG = __webpack_require__(13)('toStringTag');
+
+var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
+ 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
+ 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
+ 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
+ 'TextTrackList,TouchList').split(',');
+for (var i = 0; i < DOMIterables.length; i++) {
+ var NAME = DOMIterables[i];
+ var Collection = global[NAME];
+ var proto = Collection && Collection.prototype;
+ if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
+ Iterators[NAME] = Iterators.Array;
+}
+/***/ }),
+/* 211 */
+/***/ (function(module, exports, __webpack_require__) {
+/**
+ * This is the web browser implementation of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
+exports = module.exports = __webpack_require__(112);
+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();
-async function readBazelToolsVersionFile(repoRootPath, versionFilename) {
- const version = (await Object(_fs__WEBPACK_IMPORTED_MODULE_3__["readFile"])(Object(path__WEBPACK_IMPORTED_MODULE_1__["resolve"])(repoRootPath, versionFilename))).toString().split('\n')[0];
+/**
+ * Colors.
+ */
- if (!version) {
- throw new Error(`[bazel_tools] Failed on reading bazel tools versions\n ${versionFilename} file do not contain any version set`);
- }
+exports.colors = [
+ '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',
+ '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',
+ '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',
+ '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',
+ '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',
+ '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',
+ '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',
+ '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',
+ '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',
+ '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',
+ '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'
+];
- return version;
-}
+/**
+ * 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
+ */
-async function isBazelBinAvailable() {
- try {
- await Object(_child_process__WEBPACK_IMPORTED_MODULE_2__["spawn"])('bazel', ['--version'], {
- stdio: 'pipe'
- });
+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;
- } catch {
- return false;
}
-}
-async function isBazeliskInstalled(bazeliskVersion) {
- try {
- const {
- stdout: bazeliskPkgInstallStdout
- } = await Object(_child_process__WEBPACK_IMPORTED_MODULE_2__["spawn"])('npm', ['ls', '--global', '--parseable', '--long', `@bazel/bazelisk@${bazeliskVersion}`], {
- stdio: 'pipe'
- });
- return bazeliskPkgInstallStdout.includes(`@bazel/bazelisk@${bazeliskVersion}`);
- } catch {
+ // Internet Explorer and Edge do not support colors.
+ if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
return false;
}
-}
-async function tryRemoveBazeliskFromYarnGlobal() {
- try {
- // Check if Bazelisk is installed on the yarn global scope
- const {
- stdout: bazeliskPkgInstallStdout
- } = await Object(_child_process__WEBPACK_IMPORTED_MODULE_2__["spawn"])('yarn', ['global', 'list'], {
- stdio: 'pipe'
- }); // Bazelisk was found on yarn global scope so lets remove it
+ // 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 (bazeliskPkgInstallStdout.includes(`@bazel/bazelisk@`)) {
- await Object(_child_process__WEBPACK_IMPORTED_MODULE_2__["spawn"])('yarn', ['global', 'remove', `@bazel/bazelisk`], {
- stdio: 'pipe'
- });
- _log__WEBPACK_IMPORTED_MODULE_4__["log"].info(`[bazel_tools] bazelisk was installed on Yarn global packages and is now removed`);
- return true;
- }
+/**
+ * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
+ */
- return false;
- } catch {
- return false;
+exports.formatters.j = function(v) {
+ try {
+ return JSON.stringify(v);
+ } catch (err) {
+ return '[UnexpectedJSONParseError]: ' + err.message;
}
-}
+};
-async function installBazelTools(repoRootPath) {
- _log__WEBPACK_IMPORTED_MODULE_4__["log"].debug(`[bazel_tools] reading bazel tools versions from version files`);
- const bazeliskVersion = await readBazelToolsVersionFile(repoRootPath, '.bazeliskversion');
- const bazelVersion = await readBazelToolsVersionFile(repoRootPath, '.bazelversion'); // Check what globals are installed
- _log__WEBPACK_IMPORTED_MODULE_4__["log"].debug(`[bazel_tools] verify if bazelisk is installed`); // Check if we need to remove bazelisk from yarn
+/**
+ * Colorize log arguments if enabled.
+ *
+ * @api public
+ */
- await tryRemoveBazeliskFromYarnGlobal(); // Test if bazelisk is already installed in the correct version
+function formatArgs(args) {
+ var useColors = this.useColors;
- const isBazeliskPkgInstalled = await isBazeliskInstalled(bazeliskVersion); // Test if bazel bin is available
+ args[0] = (useColors ? '%c' : '')
+ + this.namespace
+ + (useColors ? ' %c' : ' ')
+ + args[0]
+ + (useColors ? '%c ' : ' ')
+ + '+' + exports.humanize(this.diff);
- const isBazelBinAlreadyAvailable = await isBazelBinAvailable(); // Install bazelisk if not installed
+ if (!useColors) return;
- if (!isBazeliskPkgInstalled || !isBazelBinAlreadyAvailable) {
- _log__WEBPACK_IMPORTED_MODULE_4__["log"].info(`[bazel_tools] installing Bazel tools`);
- _log__WEBPACK_IMPORTED_MODULE_4__["log"].debug(`[bazel_tools] bazelisk is not installed. Installing @bazel/bazelisk@${bazeliskVersion} and bazel@${bazelVersion}`);
- await Object(_child_process__WEBPACK_IMPORTED_MODULE_2__["spawn"])('npm', ['install', '--global', `@bazel/bazelisk@${bazeliskVersion}`], {
- env: {
- USE_BAZEL_VERSION: bazelVersion
- },
- stdio: 'pipe'
- });
- const isBazelBinAvailableAfterInstall = await isBazelBinAvailable();
+ var c = 'color: ' + this.color;
+ args.splice(1, 0, c, 'color: inherit')
- if (!isBazelBinAvailableAfterInstall) {
- throw new Error(dedent__WEBPACK_IMPORTED_MODULE_0___default.a`
- [bazel_tools] an error occurred when installing the Bazel tools. Please make sure you have access to npm globally installed modules on your $PATH
- `);
+ // 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;
}
- }
+ });
- _log__WEBPACK_IMPORTED_MODULE_4__["log"].success(`[bazel_tools] all bazel tools are correctly installed`);
+ args.splice(lastC, 0, c);
}
-/***/ }),
-/* 426 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runBazel", function() { return runBazel; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runIBazel", function() { return runIBazel; });
-/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(114);
-/* 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__(9);
-/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(427);
-/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(525);
-/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(221);
-/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(220);
-/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(341);
-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.
+/**
+ * Invokes `console.log()` when available.
+ * No-op when `console.log` is not a "function".
+ *
+ * @api public
*/
+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);
+}
+/**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
+function save(namespaces) {
+ try {
+ if (null == namespaces) {
+ exports.storage.removeItem('debug');
+ } else {
+ exports.storage.debug = namespaces;
+ }
+ } catch(e) {}
+}
+/**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
+function load() {
+ var r;
+ try {
+ r = exports.storage.debug;
+ } catch(e) {}
-
-
-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'];
+ // 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 bazelProc = Object(_child_process__WEBPACK_IMPORTED_MODULE_4__["spawn"])(bazelCommandRunner, bazelArgs, bazelOpts);
- const bazelLogs$ = new rxjs__WEBPACK_IMPORTED_MODULE_1__["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
+ return r;
+}
- const bazelLogSubscription = rxjs__WEBPACK_IMPORTED_MODULE_1__["merge"](Object(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__["observeLines"])(bazelProc.stdout).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["tap"])(line => _log__WEBPACK_IMPORTED_MODULE_5__["log"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`))), Object(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__["observeLines"])(bazelProc.stderr).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["tap"])(line => _log__WEBPACK_IMPORTED_MODULE_5__["log"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`)))).subscribe(bazelLogs$); // Wait for process and logs to finish, unsubscribing in the end
+/**
+ * Enable namespaces listed in `localStorage.debug` initially.
+ */
- try {
- await bazelProc;
- } catch {
- _log__WEBPACK_IMPORTED_MODULE_5__["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 _errors__WEBPACK_IMPORTED_MODULE_6__["CliError"](`The bazel command that was running failed to complete.`);
- }
+exports.enable(load());
- await bazelLogs$.toPromise();
- await bazelLogSubscription.unsubscribe();
-}
+/**
+ * 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
+ */
-async function runBazel(bazelArgs, offline = false, runOpts = {}) {
- await runBazelCommandWithRunner('bazel', bazelArgs, offline, runOpts);
+function localstorage() {
+ try {
+ return window.localStorage;
+ } catch (e) {}
}
-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
- }));
-}
/***/ }),
-/* 427 */
-/***/ (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__(428);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__["audit"]; });
-
-/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(429);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__["auditTime"]; });
-
-/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(430);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__["buffer"]; });
-
-/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(431);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__["bufferCount"]; });
-
-/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(432);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__["bufferTime"]; });
-
-/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(433);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__["bufferToggle"]; });
-
-/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(434);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__["bufferWhen"]; });
-
-/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(435);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__["catchError"]; });
-
-/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(436);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__["combineAll"]; });
-
-/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(437);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__["combineLatest"]; });
-
-/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(438);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__["concat"]; });
-
-/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(81);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__["concatAll"]; });
-
-/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(439);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__["concatMap"]; });
-
-/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(440);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__["concatMapTo"]; });
+/* 212 */
+/***/ (function(module, exports, __webpack_require__) {
-/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(441);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__["count"]; });
+/**
+ * Detect Electron renderer process, which is node, but we should
+ * treat as a browser.
+ */
-/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(442);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__["debounce"]; });
+if (typeof process === 'undefined' || process.type === 'renderer') {
+ module.exports = __webpack_require__(211);
+} else {
+ module.exports = __webpack_require__(213);
+}
-/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(443);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__["debounceTime"]; });
-/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(444);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__["defaultIfEmpty"]; });
+/***/ }),
+/* 213 */
+/***/ (function(module, exports, __webpack_require__) {
-/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(445);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__["delay"]; });
+/**
+ * Module dependencies.
+ */
-/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(447);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__["delayWhen"]; });
+var tty = __webpack_require__(79);
+var util = __webpack_require__(2);
-/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(448);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__["dematerialize"]; });
+/**
+ * This is the Node.js implementation of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
-/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(449);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__["distinct"]; });
+exports = module.exports = __webpack_require__(112);
+exports.init = init;
+exports.log = log;
+exports.formatArgs = formatArgs;
+exports.save = save;
+exports.load = load;
+exports.useColors = useColors;
-/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(450);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__["distinctUntilChanged"]; });
+/**
+ * Colors.
+ */
-/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(451);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__["distinctUntilKeyChanged"]; });
+exports.colors = [ 6, 2, 3, 4, 5, 1 ];
-/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(452);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__["elementAt"]; });
+try {
+ var supportsColor = __webpack_require__(239);
+ if (supportsColor && supportsColor.level >= 2) {
+ exports.colors = [
+ 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68,
+ 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134,
+ 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 214, 215, 220, 221
+ ];
+ }
+} catch (err) {
+ // swallow - we only care if `supports-color` is available; it doesn't have to be.
+}
-/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(455);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__["endWith"]; });
+/**
+ * Build up the default `inspectOpts` object from the environment variables.
+ *
+ * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
+ */
-/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(456);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__["every"]; });
+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() });
-/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(457);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__["exhaust"]; });
+ // 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);
-/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(458);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__["exhaustMap"]; });
+ obj[prop] = val;
+ return obj;
+}, {});
-/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(459);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__["expand"]; });
+/**
+ * Is stdout a TTY? Colored output is enabled when `true`.
+ */
-/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(106);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__["filter"]; });
+function useColors() {
+ return 'colors' in exports.inspectOpts
+ ? Boolean(exports.inspectOpts.colors)
+ : tty.isatty(process.stderr.fd);
+}
-/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(460);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__["finalize"]; });
+/**
+ * Map %o to `util.inspect()`, all on a single line.
+ */
-/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(461);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__["find"]; });
+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(' ');
+};
-/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(462);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__["findIndex"]; });
+/**
+ * Map %o to `util.inspect()`, allowing multiple lines if needed.
+ */
-/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(463);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__["first"]; });
+exports.formatters.O = function(v) {
+ this.inspectOpts.colors = this.useColors;
+ return util.inspect(v, this.inspectOpts);
+};
-/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(32);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__["groupBy"]; });
+/**
+ * Adds ANSI color escape codes if enabled.
+ *
+ * @api public
+ */
-/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(464);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__["ignoreElements"]; });
+function formatArgs(args) {
+ var name = this.namespace;
+ var useColors = this.useColors;
-/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(465);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__["isEmpty"]; });
+ if (useColors) {
+ var c = this.color;
+ var colorCode = '\u001b[3' + (c < 8 ? c : '8;5;' + c);
+ var prefix = ' ' + colorCode + ';1m' + name + ' ' + '\u001b[0m';
-/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(466);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__["last"]; });
+ args[0] = prefix + args[0].split('\n').join('\n' + prefix);
+ args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\u001b[0m');
+ } else {
+ args[0] = getDate() + name + ' ' + args[0];
+ }
+}
-/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(67);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__["map"]; });
+function getDate() {
+ if (exports.inspectOpts.hideDate) {
+ return '';
+ } else {
+ return new Date().toISOString() + ' ';
+ }
+}
-/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(468);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__["mapTo"]; });
+/**
+ * Invokes `util.format()` with the specified arguments and writes to stderr.
+ */
-/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(469);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__["materialize"]; });
+function log() {
+ return process.stderr.write(util.format.apply(util, arguments) + '\n');
+}
-/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(470);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__["max"]; });
+/**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
-/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(473);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__["merge"]; });
+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;
+ }
+}
-/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(82);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__["mergeAll"]; });
+/**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
-/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(83);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["mergeMap"]; });
+function load() {
+ return process.env.DEBUG;
+}
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["flatMap"]; });
+/**
+ * Init logic for `debug` instances.
+ *
+ * Create a new `inspectOpts` object in case `useColors` is set
+ * differently for a particular `debug` instance.
+ */
-/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(474);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__["mergeMapTo"]; });
+function init (debug) {
+ debug.inspectOpts = {};
-/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(475);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__["mergeScan"]; });
+ var keys = Object.keys(exports.inspectOpts);
+ for (var i = 0; i < keys.length; i++) {
+ debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
+ }
+}
-/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(476);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__["min"]; });
+/**
+ * Enable namespaces listed in `process.env.DEBUG` initially.
+ */
-/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(477);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__["multicast"]; });
+exports.enable(load());
-/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(42);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__["observeOn"]; });
-/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(478);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__["onErrorResumeNext"]; });
+/***/ }),
+/* 214 */,
+/* 215 */,
+/* 216 */,
+/* 217 */
+/***/ (function(module, exports, __webpack_require__) {
-/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(479);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__["pairwise"]; });
+// 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.
-/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(480);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__["partition"]; });
+var pathModule = __webpack_require__(0);
+var isWindows = process.platform === 'win32';
+var fs = __webpack_require__(3);
-/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(481);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__["pluck"]; });
+// JavaScript implementation of realpath, ported from node pre-v6
-/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(482);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__["publish"]; });
+var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);
-/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(483);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__["publishBehavior"]; });
+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;
-/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(484);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__["publishLast"]; });
+ return callback;
-/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(485);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__["publishReplay"]; });
+ function debugCallback(err) {
+ if (err) {
+ backtrace.message = err.message;
+ err = backtrace;
+ missingCallback(err);
+ }
+ }
-/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(486);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__["race"]; });
+ 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);
+ }
+ }
+ }
+}
-/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(471);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__["reduce"]; });
+function maybeCallback(cb) {
+ return typeof cb === 'function' ? cb : rethrow();
+}
-/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(487);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__["repeat"]; });
+var normalize = pathModule.normalize;
-/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(488);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__["repeatWhen"]; });
+// 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;
+}
-/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(489);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__["retry"]; });
+// Regex to find the device root, including trailing slash. E.g. 'c:\\'.
+if (isWindows) {
+ var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;
+} else {
+ var splitRootRe = /^[\/]*/;
+}
-/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(490);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__["retryWhen"]; });
+exports.realpathSync = function realpathSync(p, cache) {
+ // make p is absolute
+ p = pathModule.resolve(p);
-/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(31);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__["refCount"]; });
+ if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
+ return cache[p];
+ }
-/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(491);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__["sample"]; });
+ var original = p,
+ seenLinks = {},
+ knownHard = {};
-/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(492);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__["sampleTime"]; });
+ // 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;
-/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(472);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__["scan"]; });
+ start();
-/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(493);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__["sequenceEqual"]; });
+ function start() {
+ // Skip over roots
+ var m = splitRootRe.exec(p);
+ pos = m[0].length;
+ current = m[0];
+ base = m[0];
+ previous = '';
-/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(494);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__["share"]; });
+ // On windows, check that the root exists. On unix there is no need.
+ if (isWindows && !knownHard[base]) {
+ fs.lstatSync(base);
+ knownHard[base] = true;
+ }
+ }
-/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(495);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__["shareReplay"]; });
+ // 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;
-/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(496);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__["single"]; });
+ // continue if not a symlink
+ if (knownHard[base] || (cache && cache[base] === base)) {
+ continue;
+ }
-/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(497);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__["skip"]; });
+ 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;
+ }
-/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(498);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__["skipLast"]; });
+ // 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;
+ }
-/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(499);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__["skipUntil"]; });
+ // resolve the link, then start over
+ p = pathModule.resolve(resolvedLink, p.slice(pos));
+ start();
+ }
-/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(500);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__["skipWhile"]; });
+ if (cache) cache[original] = p;
-/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(501);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__["startWith"]; });
+ return p;
+};
-/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(502);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__["subscribeOn"]; });
-/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(504);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__["switchAll"]; });
+exports.realpath = function realpath(p, cache, cb) {
+ if (typeof cb !== 'function') {
+ cb = maybeCallback(cache);
+ cache = null;
+ }
-/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(505);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__["switchMap"]; });
+ // make p is absolute
+ p = pathModule.resolve(p);
-/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(506);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__["switchMapTo"]; });
+ if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
+ return process.nextTick(cb.bind(null, null, cache[p]));
+ }
-/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(454);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__["take"]; });
+ var original = p,
+ seenLinks = {},
+ knownHard = {};
-/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(467);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__["takeLast"]; });
+ // 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;
-/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(507);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__["takeUntil"]; });
+ start();
-/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(508);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__["takeWhile"]; });
+ function start() {
+ // Skip over roots
+ var m = splitRootRe.exec(p);
+ pos = m[0].length;
+ current = m[0];
+ base = m[0];
+ previous = '';
-/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(509);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__["tap"]; });
+ // 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);
+ }
+ }
-/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(510);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__["throttle"]; });
+ // 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);
+ }
-/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(511);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__["throttleTime"]; });
+ // find the next part
+ nextPartRe.lastIndex = pos;
+ var result = nextPartRe.exec(p);
+ previous = current;
+ current += result[0];
+ base = previous + result[1];
+ pos = nextPartRe.lastIndex;
-/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(453);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__["throwIfEmpty"]; });
+ // continue if not a symlink
+ if (knownHard[base] || (cache && cache[base] === base)) {
+ return process.nextTick(LOOP);
+ }
-/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(512);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__["timeInterval"]; });
+ if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
+ // known symbolic link. no need to stat again.
+ return gotResolvedLink(cache[base]);
+ }
-/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(513);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__["timeout"]; });
+ return fs.lstat(base, gotStat);
+ }
-/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(514);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__["timeoutWith"]; });
+ function gotStat(err, stat) {
+ if (err) return cb(err);
-/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(515);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__["timestamp"]; });
+ // 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);
+ }
-/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(516);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__["toArray"]; });
+ // 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);
-/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(517);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__["window"]; });
+ fs.readlink(base, function(err, target) {
+ if (!isWindows) seenLinks[id] = target;
+ gotTarget(err, target);
+ });
+ });
+ }
-/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(518);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__["windowCount"]; });
+ function gotTarget(err, target, base) {
+ if (err) return cb(err);
-/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(519);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__["windowTime"]; });
+ var resolvedLink = pathModule.resolve(previous, target);
+ if (cache) cache[base] = resolvedLink;
+ gotResolvedLink(resolvedLink);
+ }
-/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(520);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__["windowToggle"]; });
+ function gotResolvedLink(resolvedLink) {
+ // resolve the link, then start over
+ p = pathModule.resolve(resolvedLink, p.slice(pos));
+ start();
+ }
+};
-/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(521);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__["windowWhen"]; });
-/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(522);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__["withLatestFrom"]; });
+/***/ }),
+/* 218 */
+/***/ (function(module, exports, __webpack_require__) {
-/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(523);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__["zip"]; });
+module.exports = globSync
+globSync.GlobSync = GlobSync
-/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(524);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__["zipAll"]; });
+var fs = __webpack_require__(3)
+var rp = __webpack_require__(114)
+var minimatch = __webpack_require__(60)
+var Minimatch = minimatch.Minimatch
+var Glob = __webpack_require__(75).Glob
+var util = __webpack_require__(2)
+var path = __webpack_require__(0)
+var assert = __webpack_require__(22)
+var isAbsolute = __webpack_require__(76)
+var common = __webpack_require__(115)
+var alphasort = common.alphasort
+var alphasorti = common.alphasorti
+var setopts = common.setopts
+var ownProp = common.ownProp
+var childrenIgnored = common.childrenIgnored
+var isIgnored = common.isIgnored
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
+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')
+ return new GlobSync(pattern, options).found
+}
+function GlobSync (pattern, options) {
+ if (!pattern)
+ throw new Error('must provide pattern')
+ 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 (!(this instanceof GlobSync))
+ return new GlobSync(pattern, options)
+ setopts(this, pattern, options)
+ if (this.noprocess)
+ return this
+ 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()
+}
+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)
+}
+GlobSync.prototype._process = function (pattern, index, inGlobStar) {
+ assert(this instanceof GlobSync)
+ // 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.
+ // 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
+ 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 remain = pattern.slice(n)
+ // 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 abs = this._makeAbs(read)
+ //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)
+}
+GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
+ var entries = this._readdir(abs, inGlobStar)
+ // if the abs isn't a dir, then nothing can match!
+ if (!entries)
+ return
+ // 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 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)
+ }
+ }
+ 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.
+ 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
+ }
+ // 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)
+ }
+}
+GlobSync.prototype._emitMatch = function (index, e) {
+ if (isIgnored(this, e))
+ return
+ var abs = this._makeAbs(e)
+ if (this.mark)
+ e = this._mark(e)
+ if (this.absolute) {
+ e = abs
+ }
+ 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
+ if (this.stat)
+ this._stat(e)
+}
+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)
+ var entries
+ var lstat
+ var stat
+ try {
+ lstat = fs.lstatSync(abs)
+ } catch (er) {
+ if (er.code === 'ENOENT') {
+ // lstat failed, doesn't exist
+ return null
+ }
+ }
+ 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
+}
+GlobSync.prototype._readdir = function (abs, inGlobStar) {
+ var entries
+ 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
+ if (Array.isArray(c))
+ return c
+ }
+ try {
+ return this._readdirEntries(abs, 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
+ }
+ }
+ this.cache[abs] = entries
+ // mark and cache dir-ness
+ return entries
+}
+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
+ case 'ENOENT': // not terribly unusual
+ case 'ELOOP':
+ case 'ENAMETOOLONG':
+ case 'UNKNOWN':
+ this.cache[this._makeAbs(f)] = false
+ break
+ 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
+ }
+}
+GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
+ var entries = this._readdir(abs, inGlobStar)
+ // no entries means not a dir, so it can never have matches
+ // foo.txt/** doesn't match foo.txt
+ if (!entries)
+ return
+ // 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)
+ 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
+ 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)
+ 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)
+ // 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 += '/'
+ }
+ }
+ if (process.platform === 'win32')
+ prefix = prefix.replace(/\\/g, '/')
+ // Mark this as a match
+ this._emitMatch(index, prefix)
+}
+// Returns either 'DIR', 'FILE', or false
+GlobSync.prototype._stat = function (f) {
+ var abs = this._makeAbs(f)
+ var needDir = f.slice(-1) === '/'
+ if (f.length > this.maxLength)
+ return false
+ if (!this.stat && ownProp(this.cache, abs)) {
+ var c = this.cache[abs]
+ if (Array.isArray(c))
+ c = 'DIR'
+ // It exists, but maybe not how we need it
+ if (!needDir || c === 'DIR')
+ return c
+ if (needDir && c === 'FILE')
+ return false
+ // otherwise we have to stat, because maybe c=true
+ // if we know it exists, but not what it is.
+ }
+ var exists
+ var stat = this.statCache[abs]
+ if (!stat) {
+ var lstat
+ try {
+ lstat = fs.lstatSync(abs)
+ } catch (er) {
+ if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
+ this.statCache[abs] = false
+ return false
+ }
+ }
+ if (lstat && lstat.isSymbolicLink()) {
+ try {
+ stat = fs.statSync(abs)
+ } catch (er) {
+ stat = lstat
+ }
+ } else {
+ stat = lstat
+ }
+ }
+ this.statCache[abs] = stat
+ var c = true
+ if (stat)
+ c = stat.isDirectory() ? 'DIR' : 'FILE'
+ this.cache[abs] = this.cache[abs] || c
+ if (needDir && c === 'FILE')
+ return false
+ return c
+}
+GlobSync.prototype._mark = function (p) {
+ return common.mark(this, p)
+}
+GlobSync.prototype._makeAbs = function (f) {
+ return common.makeAbs(this, f)
+}
+/***/ }),
+/* 219 */,
+/* 220 */,
+/* 221 */
+/***/ (function(module, exports, __webpack_require__) {
+"use strict";
+module.exports = function (flag, argv) {
+ argv = argv || process.argv;
+ var terminatorPos = argv.indexOf('--');
+ var prefix = /^--/.test(flag) ? '' : '--';
+ var pos = argv.indexOf(prefix + flag);
+ return pos !== -1 && (terminatorPos !== -1 ? pos < terminatorPos : true);
+};
+/***/ }),
+/* 222 */,
+/* 223 */
+/***/ (function(module, exports, __webpack_require__) {
+var wrappy = __webpack_require__(123)
+var reqs = Object.create(null)
+var once = __webpack_require__(61)
+module.exports = wrappy(inflight)
+function inflight (key, cb) {
+ if (reqs[key]) {
+ reqs[key].push(cb)
+ return null
+ } else {
+ reqs[key] = [cb]
+ return makeres(key)
+ }
+}
+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 {
+ delete reqs[key]
+ }
+ }
+ })
+}
+function slice (args) {
+ var length = args.length
+ var array = []
-//# sourceMappingURL=index.js.map
+ for (var i = 0; i < length; i++) array[i] = args[i]
+ return array
+}
/***/ }),
-/* 428 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return audit; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
-
+/* 224 */
+/***/ (function(module, exports) {
-function audit(durationSelector) {
- return function auditOperatorFunction(source) {
- return source.lift(new AuditOperator(durationSelector));
- };
+if (typeof Object.create === 'function') {
+ // implementation from standard node.js 'util' module
+ module.exports = function inherits(ctor, 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) {
+ ctor.super_ = superCtor
+ var TempCtor = function () {}
+ TempCtor.prototype = superCtor.prototype
+ ctor.prototype = new TempCtor()
+ ctor.prototype.constructor = ctor
+ }
}
-var AuditOperator = /*@__PURE__*/ (function () {
- function AuditOperator(durationSelector) {
- this.durationSelector = durationSelector;
- }
- AuditOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));
- };
- return AuditOperator;
-}());
-var AuditSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AuditSubscriber, _super);
- function AuditSubscriber(destination, durationSelector) {
- var _this = _super.call(this, destination) || this;
- _this.durationSelector = durationSelector;
- _this.hasValue = false;
- return _this;
- }
- AuditSubscriber.prototype._next = function (value) {
- this.value = value;
- this.hasValue = true;
- if (!this.throttled) {
- var duration = void 0;
- try {
- var durationSelector = this.durationSelector;
- duration = durationSelector(value);
- }
- catch (err) {
- return this.destination.error(err);
- }
- var innerSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(duration, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](this));
- if (!innerSubscription || innerSubscription.closed) {
- this.clearThrottle();
- }
- else {
- this.add(this.throttled = innerSubscription);
- }
- }
- };
- AuditSubscriber.prototype.clearThrottle = function () {
- var _a = this, value = _a.value, hasValue = _a.hasValue, throttled = _a.throttled;
- if (throttled) {
- this.remove(throttled);
- this.throttled = undefined;
- throttled.unsubscribe();
- }
- if (hasValue) {
- this.value = undefined;
- this.hasValue = false;
- this.destination.next(value);
- }
- };
- AuditSubscriber.prototype.notifyNext = function () {
- this.clearThrottle();
- };
- AuditSubscriber.prototype.notifyComplete = function () {
- this.clearThrottle();
- };
- return AuditSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=audit.js.map
/***/ }),
-/* 429 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return auditTime; });
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56);
-/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(428);
-/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(109);
-/** PURE_IMPORTS_START _scheduler_async,_audit,_observable_timer PURE_IMPORTS_END */
+/* 225 */,
+/* 226 */,
+/* 227 */
+/***/ (function(module, exports, __webpack_require__) {
+// @flow
+/*::
+declare var __webpack_require__: mixed;
+*/
-function auditTime(duration, scheduler) {
- if (scheduler === void 0) {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"];
- }
- return Object(_audit__WEBPACK_IMPORTED_MODULE_1__["audit"])(function () { return Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__["timer"])(duration, scheduler); });
-}
-//# sourceMappingURL=auditTime.js.map
+module.exports = typeof __webpack_require__ !== "undefined";
/***/ }),
-/* 430 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return buffer; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
-
+/* 228 */,
+/* 229 */
+/***/ (function(module, exports) {
-function buffer(closingNotifier) {
- return function bufferOperatorFunction(source) {
- return source.lift(new BufferOperator(closingNotifier));
- };
-}
-var BufferOperator = /*@__PURE__*/ (function () {
- function BufferOperator(closingNotifier) {
- this.closingNotifier = closingNotifier;
- }
- BufferOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));
- };
- return BufferOperator;
-}());
-var BufferSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferSubscriber, _super);
- function BufferSubscriber(destination, closingNotifier) {
- var _this = _super.call(this, destination) || this;
- _this.buffer = [];
- _this.add(Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(closingNotifier, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](_this)));
- return _this;
- }
- BufferSubscriber.prototype._next = function (value) {
- this.buffer.push(value);
- };
- BufferSubscriber.prototype.notifyNext = function () {
- var buffer = this.buffer;
- this.buffer = [];
- this.destination.next(buffer);
- };
- return BufferSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=buffer.js.map
+/**
+ * Helpers.
+ */
+var s = 1000;
+var m = s * 60;
+var h = m * 60;
+var d = h * 24;
+var y = d * 365.25;
-/***/ }),
-/* 431 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/**
+ * 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
+ */
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return bufferCount; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+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 bufferCount(bufferSize, startBufferEvery) {
- if (startBufferEvery === void 0) {
- startBufferEvery = null;
- }
- return function bufferCountOperatorFunction(source) {
- return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));
- };
+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;
+ }
}
-var BufferCountOperator = /*@__PURE__*/ (function () {
- function BufferCountOperator(bufferSize, startBufferEvery) {
- this.bufferSize = bufferSize;
- this.startBufferEvery = startBufferEvery;
- if (!startBufferEvery || bufferSize === startBufferEvery) {
- this.subscriberClass = BufferCountSubscriber;
- }
- else {
- this.subscriberClass = BufferSkipCountSubscriber;
- }
- }
- BufferCountOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));
- };
- return BufferCountOperator;
-}());
-var BufferCountSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferCountSubscriber, _super);
- function BufferCountSubscriber(destination, bufferSize) {
- var _this = _super.call(this, destination) || this;
- _this.bufferSize = bufferSize;
- _this.buffer = [];
- return _this;
- }
- BufferCountSubscriber.prototype._next = function (value) {
- var buffer = this.buffer;
- buffer.push(value);
- if (buffer.length == this.bufferSize) {
- this.destination.next(buffer);
- this.buffer = [];
- }
- };
- BufferCountSubscriber.prototype._complete = function () {
- var buffer = this.buffer;
- if (buffer.length > 0) {
- this.destination.next(buffer);
- }
- _super.prototype._complete.call(this);
- };
- return BufferCountSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-var BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferSkipCountSubscriber, _super);
- function BufferSkipCountSubscriber(destination, bufferSize, startBufferEvery) {
- var _this = _super.call(this, destination) || this;
- _this.bufferSize = bufferSize;
- _this.startBufferEvery = startBufferEvery;
- _this.buffers = [];
- _this.count = 0;
- return _this;
- }
- BufferSkipCountSubscriber.prototype._next = function (value) {
- var _a = this, bufferSize = _a.bufferSize, startBufferEvery = _a.startBufferEvery, buffers = _a.buffers, count = _a.count;
- this.count++;
- if (count % startBufferEvery === 0) {
- buffers.push([]);
- }
- for (var i = buffers.length; i--;) {
- var buffer = buffers[i];
- buffer.push(value);
- if (buffer.length === bufferSize) {
- buffers.splice(i, 1);
- this.destination.next(buffer);
- }
- }
- };
- BufferSkipCountSubscriber.prototype._complete = function () {
- var _a = this, buffers = _a.buffers, destination = _a.destination;
- while (buffers.length > 0) {
- var buffer = buffers.shift();
- if (buffer.length > 0) {
- destination.next(buffer);
- }
- }
- _super.prototype._complete.call(this);
- };
- return BufferSkipCountSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=bufferCount.js.map
-
-/***/ }),
-/* 432 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return bufferTime; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
-/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(46);
-/** PURE_IMPORTS_START tslib,_scheduler_async,_Subscriber,_util_isScheduler PURE_IMPORTS_END */
+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';
+}
+/**
+ * Long format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+function fmtLong(ms) {
+ return plural(ms, d, 'day') ||
+ plural(ms, h, 'hour') ||
+ plural(ms, m, 'minute') ||
+ plural(ms, s, 'second') ||
+ ms + ' ms';
+}
+/**
+ * Pluralization helper.
+ */
-function bufferTime(bufferTimeSpan) {
- var length = arguments.length;
- var scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"];
- if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__["isScheduler"])(arguments[arguments.length - 1])) {
- scheduler = arguments[arguments.length - 1];
- length--;
- }
- var bufferCreationInterval = null;
- if (length >= 2) {
- bufferCreationInterval = arguments[1];
- }
- var maxBufferSize = Number.POSITIVE_INFINITY;
- if (length >= 3) {
- maxBufferSize = arguments[2];
- }
- return function bufferTimeOperatorFunction(source) {
- return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));
- };
-}
-var BufferTimeOperator = /*@__PURE__*/ (function () {
- function BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {
- this.bufferTimeSpan = bufferTimeSpan;
- this.bufferCreationInterval = bufferCreationInterval;
- this.maxBufferSize = maxBufferSize;
- this.scheduler = scheduler;
- }
- BufferTimeOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new BufferTimeSubscriber(subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler));
- };
- return BufferTimeOperator;
-}());
-var Context = /*@__PURE__*/ (function () {
- function Context() {
- this.buffer = [];
- }
- return Context;
-}());
-var BufferTimeSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferTimeSubscriber, _super);
- function BufferTimeSubscriber(destination, bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {
- var _this = _super.call(this, destination) || this;
- _this.bufferTimeSpan = bufferTimeSpan;
- _this.bufferCreationInterval = bufferCreationInterval;
- _this.maxBufferSize = maxBufferSize;
- _this.scheduler = scheduler;
- _this.contexts = [];
- var context = _this.openContext();
- _this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;
- if (_this.timespanOnly) {
- var timeSpanOnlyState = { subscriber: _this, context: context, bufferTimeSpan: bufferTimeSpan };
- _this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));
- }
- else {
- var closeState = { subscriber: _this, context: context };
- var creationState = { bufferTimeSpan: bufferTimeSpan, bufferCreationInterval: bufferCreationInterval, subscriber: _this, scheduler: scheduler };
- _this.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, closeState));
- _this.add(scheduler.schedule(dispatchBufferCreation, bufferCreationInterval, creationState));
- }
- return _this;
- }
- BufferTimeSubscriber.prototype._next = function (value) {
- var contexts = this.contexts;
- var len = contexts.length;
- var filledBufferContext;
- for (var i = 0; i < len; i++) {
- var context_1 = contexts[i];
- var buffer = context_1.buffer;
- buffer.push(value);
- if (buffer.length == this.maxBufferSize) {
- filledBufferContext = context_1;
- }
- }
- if (filledBufferContext) {
- this.onBufferFull(filledBufferContext);
- }
- };
- BufferTimeSubscriber.prototype._error = function (err) {
- this.contexts.length = 0;
- _super.prototype._error.call(this, err);
- };
- BufferTimeSubscriber.prototype._complete = function () {
- var _a = this, contexts = _a.contexts, destination = _a.destination;
- while (contexts.length > 0) {
- var context_2 = contexts.shift();
- destination.next(context_2.buffer);
- }
- _super.prototype._complete.call(this);
- };
- BufferTimeSubscriber.prototype._unsubscribe = function () {
- this.contexts = null;
- };
- BufferTimeSubscriber.prototype.onBufferFull = function (context) {
- this.closeContext(context);
- var closeAction = context.closeAction;
- closeAction.unsubscribe();
- this.remove(closeAction);
- if (!this.closed && this.timespanOnly) {
- context = this.openContext();
- var bufferTimeSpan = this.bufferTimeSpan;
- var timeSpanOnlyState = { subscriber: this, context: context, bufferTimeSpan: bufferTimeSpan };
- this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));
- }
- };
- BufferTimeSubscriber.prototype.openContext = function () {
- var context = new Context();
- this.contexts.push(context);
- return context;
- };
- BufferTimeSubscriber.prototype.closeContext = function (context) {
- this.destination.next(context.buffer);
- var contexts = this.contexts;
- var spliceIndex = contexts ? contexts.indexOf(context) : -1;
- if (spliceIndex >= 0) {
- contexts.splice(contexts.indexOf(context), 1);
- }
- };
- return BufferTimeSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_2__["Subscriber"]));
-function dispatchBufferTimeSpanOnly(state) {
- var subscriber = state.subscriber;
- var prevContext = state.context;
- if (prevContext) {
- subscriber.closeContext(prevContext);
- }
- if (!subscriber.closed) {
- state.context = subscriber.openContext();
- state.context.closeAction = this.schedule(state, state.bufferTimeSpan);
- }
-}
-function dispatchBufferCreation(state) {
- var bufferCreationInterval = state.bufferCreationInterval, bufferTimeSpan = state.bufferTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler;
- var context = subscriber.openContext();
- var action = this;
- if (!subscriber.closed) {
- subscriber.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber: subscriber, context: context }));
- action.schedule(state, bufferCreationInterval);
- }
-}
-function dispatchBufferClose(arg) {
- var subscriber = arg.subscriber, context = arg.context;
- subscriber.closeContext(context);
+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';
}
-//# sourceMappingURL=bufferTime.js.map
/***/ }),
-/* 433 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return bufferToggle; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
-/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(71);
-/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70);
-/** PURE_IMPORTS_START tslib,_Subscription,_util_subscribeToResult,_OuterSubscriber PURE_IMPORTS_END */
-
+/* 230 */,
+/* 231 */,
+/* 232 */,
+/* 233 */
+/***/ (function(module, exports, __webpack_require__) {
+module.exports = rimraf
+rimraf.sync = rimrafSync
+var assert = __webpack_require__(22)
+var path = __webpack_require__(0)
+var fs = __webpack_require__(3)
+var glob = __webpack_require__(75)
+var _0666 = parseInt('666', 8)
-function bufferToggle(openings, closingSelector) {
- return function bufferToggleOperatorFunction(source) {
- return source.lift(new BufferToggleOperator(openings, closingSelector));
- };
+var defaultGlobOpts = {
+ nosort: true,
+ silent: true
}
-var BufferToggleOperator = /*@__PURE__*/ (function () {
- function BufferToggleOperator(openings, closingSelector) {
- this.openings = openings;
- this.closingSelector = closingSelector;
- }
- BufferToggleOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector));
- };
- return BufferToggleOperator;
-}());
-var BufferToggleSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferToggleSubscriber, _super);
- function BufferToggleSubscriber(destination, openings, closingSelector) {
- var _this = _super.call(this, destination) || this;
- _this.closingSelector = closingSelector;
- _this.contexts = [];
- _this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(_this, openings));
- return _this;
- }
- BufferToggleSubscriber.prototype._next = function (value) {
- var contexts = this.contexts;
- var len = contexts.length;
- for (var i = 0; i < len; i++) {
- contexts[i].buffer.push(value);
- }
- };
- BufferToggleSubscriber.prototype._error = function (err) {
- var contexts = this.contexts;
- while (contexts.length > 0) {
- var context_1 = contexts.shift();
- context_1.subscription.unsubscribe();
- context_1.buffer = null;
- context_1.subscription = null;
- }
- this.contexts = null;
- _super.prototype._error.call(this, err);
- };
- BufferToggleSubscriber.prototype._complete = function () {
- var contexts = this.contexts;
- while (contexts.length > 0) {
- var context_2 = contexts.shift();
- this.destination.next(context_2.buffer);
- context_2.subscription.unsubscribe();
- context_2.buffer = null;
- context_2.subscription = null;
- }
- this.contexts = null;
- _super.prototype._complete.call(this);
- };
- BufferToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue) {
- outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue);
- };
- BufferToggleSubscriber.prototype.notifyComplete = function (innerSub) {
- this.closeBuffer(innerSub.context);
- };
- BufferToggleSubscriber.prototype.openBuffer = function (value) {
- try {
- var closingSelector = this.closingSelector;
- var closingNotifier = closingSelector.call(this, value);
- if (closingNotifier) {
- this.trySubscribe(closingNotifier);
- }
- }
- catch (err) {
- this._error(err);
- }
- };
- BufferToggleSubscriber.prototype.closeBuffer = function (context) {
- var contexts = this.contexts;
- if (contexts && context) {
- var buffer = context.buffer, subscription = context.subscription;
- this.destination.next(buffer);
- contexts.splice(contexts.indexOf(context), 1);
- this.remove(subscription);
- subscription.unsubscribe();
- }
- };
- BufferToggleSubscriber.prototype.trySubscribe = function (closingNotifier) {
- var contexts = this.contexts;
- var buffer = [];
- var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"]();
- var context = { buffer: buffer, subscription: subscription };
- contexts.push(context);
- var innerSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, closingNotifier, context);
- if (!innerSubscription || innerSubscription.closed) {
- this.closeBuffer(context);
- }
- else {
- innerSubscription.context = context;
- this.add(innerSubscription);
- subscription.add(innerSubscription);
- }
- };
- return BufferToggleSubscriber;
-}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"]));
-//# sourceMappingURL=bufferToggle.js.map
-
-
-/***/ }),
-/* 434 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return bufferWhen; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_Subscription,_innerSubscribe PURE_IMPORTS_END */
+// for EMFILE handling
+var timeout = 0
+var isWindows = (process.platform === "win32")
+function defaults (options) {
+ var methods = [
+ 'unlink',
+ 'chmod',
+ 'stat',
+ 'lstat',
+ 'rmdir',
+ 'readdir'
+ ]
+ methods.forEach(function(m) {
+ options[m] = options[m] || fs[m]
+ m = m + 'Sync'
+ options[m] = options[m] || fs[m]
+ })
-function bufferWhen(closingSelector) {
- return function (source) {
- return source.lift(new BufferWhenOperator(closingSelector));
- };
+ options.maxBusyTries = options.maxBusyTries || 3
+ options.emfileWait = options.emfileWait || 1000
+ if (options.glob === false) {
+ options.disableGlob = true
+ }
+ options.disableGlob = options.disableGlob || false
+ options.glob = options.glob || defaultGlobOpts
}
-var BufferWhenOperator = /*@__PURE__*/ (function () {
- function BufferWhenOperator(closingSelector) {
- this.closingSelector = closingSelector;
- }
- BufferWhenOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector));
- };
- return BufferWhenOperator;
-}());
-var BufferWhenSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferWhenSubscriber, _super);
- function BufferWhenSubscriber(destination, closingSelector) {
- var _this = _super.call(this, destination) || this;
- _this.closingSelector = closingSelector;
- _this.subscribing = false;
- _this.openBuffer();
- return _this;
- }
- BufferWhenSubscriber.prototype._next = function (value) {
- this.buffer.push(value);
- };
- BufferWhenSubscriber.prototype._complete = function () {
- var buffer = this.buffer;
- if (buffer) {
- this.destination.next(buffer);
- }
- _super.prototype._complete.call(this);
- };
- BufferWhenSubscriber.prototype._unsubscribe = function () {
- this.buffer = undefined;
- this.subscribing = false;
- };
- BufferWhenSubscriber.prototype.notifyNext = function () {
- this.openBuffer();
- };
- BufferWhenSubscriber.prototype.notifyComplete = function () {
- if (this.subscribing) {
- this.complete();
- }
- else {
- this.openBuffer();
- }
- };
- BufferWhenSubscriber.prototype.openBuffer = function () {
- var closingSubscription = this.closingSubscription;
- if (closingSubscription) {
- this.remove(closingSubscription);
- closingSubscription.unsubscribe();
- }
- var buffer = this.buffer;
- if (this.buffer) {
- this.destination.next(buffer);
- }
- this.buffer = [];
- var closingNotifier;
- try {
- var closingSelector = this.closingSelector;
- closingNotifier = closingSelector();
- }
- catch (err) {
- return this.error(err);
- }
- closingSubscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"]();
- this.closingSubscription = closingSubscription;
- this.add(closingSubscription);
- this.subscribing = true;
- closingSubscription.add(Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["innerSubscribe"])(closingNotifier, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["SimpleInnerSubscriber"](this)));
- this.subscribing = false;
- };
- return BufferWhenSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=bufferWhen.js.map
-
-/***/ }),
-/* 435 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+function rimraf (p, options, cb) {
+ if (typeof options === 'function') {
+ cb = options
+ options = {}
+ }
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return catchError; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
+ 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)
-function catchError(selector) {
- return function catchErrorOperatorFunction(source) {
- var operator = new CatchOperator(selector);
- var caught = source.lift(operator);
- return (operator.caught = caught);
- };
-}
-var CatchOperator = /*@__PURE__*/ (function () {
- function CatchOperator(selector) {
- this.selector = selector;
- }
- CatchOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));
- };
- return CatchOperator;
-}());
-var CatchSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CatchSubscriber, _super);
- function CatchSubscriber(destination, selector, caught) {
- var _this = _super.call(this, destination) || this;
- _this.selector = selector;
- _this.caught = caught;
- return _this;
- }
- CatchSubscriber.prototype.error = function (err) {
- if (!this.isStopped) {
- var result = void 0;
- try {
- result = this.selector(err, this.caught);
- }
- catch (err2) {
- _super.prototype.error.call(this, err2);
- return;
- }
- this._unsubscribeAndRecycle();
- var innerSubscriber = new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](this);
- this.add(innerSubscriber);
- var innerSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(result, innerSubscriber);
- if (innerSubscription !== innerSubscriber) {
- this.add(innerSubscription);
- }
- }
- };
- return CatchSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=catchError.js.map
+ var busyTries = 0
+ var errState = null
+ var n = 0
+ if (options.disableGlob || !glob.hasMagic(p))
+ return afterGlob(null, [p])
-/***/ }),
-/* 436 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ options.lstat(p, function (er, stat) {
+ if (!er)
+ return afterGlob(null, [p])
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return combineAll; });
-/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69);
-/** PURE_IMPORTS_START _observable_combineLatest PURE_IMPORTS_END */
+ glob(p, options.glob, afterGlob)
+ })
-function combineAll(project) {
- return function (source) { return source.lift(new _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__["CombineLatestOperator"](project)); };
-}
-//# sourceMappingURL=combineAll.js.map
+ function next (er) {
+ errState = errState || er
+ if (--n === 0)
+ cb(errState)
+ }
+ function afterGlob (er, results) {
+ if (er)
+ return cb(er)
-/***/ }),
-/* 437 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ n = results.length
+ if (n === 0)
+ return cb()
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; });
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19);
-/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69);
-/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84);
-/** PURE_IMPORTS_START _util_isArray,_observable_combineLatest,_observable_from PURE_IMPORTS_END */
+ results.forEach(function (p) {
+ rimraf_(p, options, function CB (er) {
+ if (er) {
+ if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") &&
+ busyTries < options.maxBusyTries) {
+ busyTries ++
+ var time = busyTries * 100
+ // try again, with the same exact callback as this one.
+ return setTimeout(function () {
+ rimraf_(p, options, CB)
+ }, time)
+ }
+ // this one won't happen if graceful-fs is used.
+ if (er.code === "EMFILE" && timeout < options.emfileWait) {
+ return setTimeout(function () {
+ rimraf_(p, options, CB)
+ }, timeout ++)
+ }
+ // already gone
+ if (er.code === "ENOENT") er = null
+ }
-var none = {};
-function combineLatest() {
- var observables = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i] = arguments[_i];
- }
- var project = null;
- if (typeof observables[observables.length - 1] === 'function') {
- project = observables.pop();
- }
- if (observables.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(observables[0])) {
- observables = observables[0].slice();
- }
- return function (source) { return source.lift.call(Object(_observable_from__WEBPACK_IMPORTED_MODULE_2__["from"])([source].concat(observables)), new _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__["CombineLatestOperator"](project)); };
+ timeout = 0
+ next(er)
+ })
+ })
+ }
}
-//# sourceMappingURL=combineLatest.js.map
+// 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.
+function rimraf_ (p, options, cb) {
+ assert(p)
+ assert(options)
+ assert(typeof cb === 'function')
-/***/ }),
-/* 438 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat; });
-/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80);
-/** PURE_IMPORTS_START _observable_concat PURE_IMPORTS_END */
+ // 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, function (er, st) {
+ if (er && er.code === "ENOENT")
+ return cb(null)
-function concat() {
- var observables = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i] = arguments[_i];
- }
- return function (source) { return source.lift.call(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"].apply(void 0, [source].concat(observables))); };
-}
-//# sourceMappingURL=concat.js.map
+ // 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)
-/***/ }),
-/* 439 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ options.unlink(p, function (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)
+ })
+ })
+}
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return concatMap; });
-/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(83);
-/** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */
+function fixWinEPERM (p, options, er, cb) {
+ assert(p)
+ assert(options)
+ assert(typeof cb === 'function')
+ if (er)
+ assert(er instanceof Error)
-function concatMap(project, resultSelector) {
- return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(project, resultSelector, 1);
+ options.chmod(p, _0666, function (er2) {
+ if (er2)
+ cb(er2.code === "ENOENT" ? null : er)
+ else
+ options.stat(p, function(er3, stats) {
+ if (er3)
+ cb(er3.code === "ENOENT" ? null : er)
+ else if (stats.isDirectory())
+ rmdir(p, options, er, cb)
+ else
+ options.unlink(p, cb)
+ })
+ })
}
-//# sourceMappingURL=concatMap.js.map
+function fixWinEPERMSync (p, options, er) {
+ assert(p)
+ assert(options)
+ if (er)
+ assert(er instanceof Error)
-/***/ }),
-/* 440 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ try {
+ options.chmodSync(p, _0666)
+ } catch (er2) {
+ if (er2.code === "ENOENT")
+ return
+ else
+ throw er
+ }
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return concatMapTo; });
-/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(439);
-/** PURE_IMPORTS_START _concatMap PURE_IMPORTS_END */
+ try {
+ var stats = options.statSync(p)
+ } catch (er3) {
+ if (er3.code === "ENOENT")
+ return
+ else
+ throw er
+ }
-function concatMapTo(innerObservable, resultSelector) {
- return Object(_concatMap__WEBPACK_IMPORTED_MODULE_0__["concatMap"])(function () { return innerObservable; }, resultSelector);
+ if (stats.isDirectory())
+ rmdirSync(p, options, er)
+ else
+ options.unlinkSync(p)
}
-//# sourceMappingURL=concatMapTo.js.map
-
-
-/***/ }),
-/* 441 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "count", function() { return count; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+function rmdir (p, options, originalEr, cb) {
+ assert(p)
+ assert(options)
+ if (originalEr)
+ assert(originalEr instanceof Error)
+ assert(typeof cb === 'function')
-function count(predicate) {
- return function (source) { return source.lift(new CountOperator(predicate, source)); };
+ // 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, function (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 CountOperator = /*@__PURE__*/ (function () {
- function CountOperator(predicate, source) {
- this.predicate = predicate;
- this.source = source;
- }
- CountOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));
- };
- return CountOperator;
-}());
-var CountSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CountSubscriber, _super);
- function CountSubscriber(destination, predicate, source) {
- var _this = _super.call(this, destination) || this;
- _this.predicate = predicate;
- _this.source = source;
- _this.count = 0;
- _this.index = 0;
- return _this;
- }
- CountSubscriber.prototype._next = function (value) {
- if (this.predicate) {
- this._tryPredicate(value);
- }
- else {
- this.count++;
- }
- };
- CountSubscriber.prototype._tryPredicate = function (value) {
- var result;
- try {
- result = this.predicate(value, this.index++, this.source);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- if (result) {
- this.count++;
- }
- };
- CountSubscriber.prototype._complete = function () {
- this.destination.next(this.count);
- this.destination.complete();
- };
- return CountSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=count.js.map
+function rmkids(p, options, cb) {
+ assert(p)
+ assert(options)
+ assert(typeof cb === 'function')
+
+ options.readdir(p, function (er, files) {
+ if (er)
+ return cb(er)
+ var n = files.length
+ if (n === 0)
+ return options.rmdir(p, cb)
+ var errState
+ files.forEach(function (f) {
+ rimraf(path.join(p, f), options, function (er) {
+ if (errState)
+ return
+ if (er)
+ return cb(errState = er)
+ if (--n === 0)
+ options.rmdir(p, cb)
+ })
+ })
+ })
+}
-/***/ }),
-/* 442 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+// this looks simpler, and is strictly *faster*, but will
+// tie up the JavaScript thread and fail on excessively
+// deep directory trees.
+function rimrafSync (p, options) {
+ options = options || {}
+ defaults(options)
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
+ 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')
+ var results
-function debounce(durationSelector) {
- return function (source) { return source.lift(new DebounceOperator(durationSelector)); };
-}
-var DebounceOperator = /*@__PURE__*/ (function () {
- function DebounceOperator(durationSelector) {
- this.durationSelector = durationSelector;
- }
- DebounceOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector));
- };
- return DebounceOperator;
-}());
-var DebounceSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DebounceSubscriber, _super);
- function DebounceSubscriber(destination, durationSelector) {
- var _this = _super.call(this, destination) || this;
- _this.durationSelector = durationSelector;
- _this.hasValue = false;
- return _this;
+ if (options.disableGlob || !glob.hasMagic(p)) {
+ results = [p]
+ } else {
+ try {
+ options.lstatSync(p)
+ results = [p]
+ } catch (er) {
+ results = glob.sync(p, options.glob)
}
- DebounceSubscriber.prototype._next = function (value) {
- try {
- var result = this.durationSelector.call(this, value);
- if (result) {
- this._tryNext(value, result);
- }
- }
- catch (err) {
- this.destination.error(err);
- }
- };
- DebounceSubscriber.prototype._complete = function () {
- this.emitValue();
- this.destination.complete();
- };
- DebounceSubscriber.prototype._tryNext = function (value, duration) {
- var subscription = this.durationSubscription;
- this.value = value;
- this.hasValue = true;
- if (subscription) {
- subscription.unsubscribe();
- this.remove(subscription);
- }
- subscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(duration, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](this));
- if (subscription && !subscription.closed) {
- this.add(this.durationSubscription = subscription);
- }
- };
- DebounceSubscriber.prototype.notifyNext = function () {
- this.emitValue();
- };
- DebounceSubscriber.prototype.notifyComplete = function () {
- this.emitValue();
- };
- DebounceSubscriber.prototype.emitValue = function () {
- if (this.hasValue) {
- var value = this.value;
- var subscription = this.durationSubscription;
- if (subscription) {
- this.durationSubscription = undefined;
- subscription.unsubscribe();
- this.remove(subscription);
- }
- this.value = undefined;
- this.hasValue = false;
- _super.prototype._next.call(this, value);
- }
- };
- return DebounceSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=debounce.js.map
+ }
+ if (!results.length)
+ return
-/***/ }),
-/* 443 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ for (var i = 0; i < results.length; i++) {
+ var p = results[i]
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return debounceTime; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(56);
-/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */
+ try {
+ var 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
-function debounceTime(dueTime, scheduler) {
- if (scheduler === void 0) {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"];
- }
- return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); };
-}
-var DebounceTimeOperator = /*@__PURE__*/ (function () {
- function DebounceTimeOperator(dueTime, scheduler) {
- this.dueTime = dueTime;
- this.scheduler = scheduler;
- }
- DebounceTimeOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));
- };
- return DebounceTimeOperator;
-}());
-var DebounceTimeSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DebounceTimeSubscriber, _super);
- function DebounceTimeSubscriber(destination, dueTime, scheduler) {
- var _this = _super.call(this, destination) || this;
- _this.dueTime = dueTime;
- _this.scheduler = scheduler;
- _this.debouncedSubscription = null;
- _this.lastValue = null;
- _this.hasValue = false;
- return _this;
+ rmdirSync(p, options, er)
}
- DebounceTimeSubscriber.prototype._next = function (value) {
- this.clearDebounce();
- this.lastValue = value;
- this.hasValue = true;
- this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));
- };
- DebounceTimeSubscriber.prototype._complete = function () {
- this.debouncedNext();
- this.destination.complete();
- };
- DebounceTimeSubscriber.prototype.debouncedNext = function () {
- this.clearDebounce();
- if (this.hasValue) {
- var lastValue = this.lastValue;
- this.lastValue = null;
- this.hasValue = false;
- this.destination.next(lastValue);
- }
- };
- DebounceTimeSubscriber.prototype.clearDebounce = function () {
- var debouncedSubscription = this.debouncedSubscription;
- if (debouncedSubscription !== null) {
- this.remove(debouncedSubscription);
- debouncedSubscription.unsubscribe();
- this.debouncedSubscription = null;
- }
- };
- return DebounceTimeSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-function dispatchNext(subscriber) {
- subscriber.debouncedNext();
+ }
}
-//# sourceMappingURL=debounceTime.js.map
-
-/***/ }),
-/* 444 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+function rmdirSync (p, options, originalEr) {
+ assert(p)
+ assert(options)
+ if (originalEr)
+ assert(originalEr instanceof Error)
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return defaultIfEmpty; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+ 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)
+ }
+}
+function rmkidsSync (p, options) {
+ assert(p)
+ assert(options)
+ options.readdirSync(p).forEach(function (f) {
+ rimrafSync(path.join(p, f), options)
+ })
-function defaultIfEmpty(defaultValue) {
- if (defaultValue === void 0) {
- defaultValue = null;
+ // 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.
+ var retries = isWindows ? 100 : 1
+ var i = 0
+ do {
+ var threw = true
+ try {
+ var ret = options.rmdirSync(p, options)
+ threw = false
+ return ret
+ } finally {
+ if (++i < retries && threw)
+ continue
}
- return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); };
+ } while (true)
}
-var DefaultIfEmptyOperator = /*@__PURE__*/ (function () {
- function DefaultIfEmptyOperator(defaultValue) {
- this.defaultValue = defaultValue;
- }
- DefaultIfEmptyOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));
- };
- return DefaultIfEmptyOperator;
-}());
-var DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DefaultIfEmptySubscriber, _super);
- function DefaultIfEmptySubscriber(destination, defaultValue) {
- var _this = _super.call(this, destination) || this;
- _this.defaultValue = defaultValue;
- _this.isEmpty = true;
- return _this;
- }
- DefaultIfEmptySubscriber.prototype._next = function (value) {
- this.isEmpty = false;
- this.destination.next(value);
- };
- DefaultIfEmptySubscriber.prototype._complete = function () {
- if (this.isEmpty) {
- this.destination.next(this.defaultValue);
- }
- this.destination.complete();
- };
- return DefaultIfEmptySubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=defaultIfEmpty.js.map
/***/ }),
-/* 445 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 234 */,
+/* 235 */,
+/* 236 */,
+/* 237 */,
+/* 238 */,
+/* 239 */
+/***/ (function(module, exports, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return delay; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56);
-/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(446);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
-/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43);
-/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */
+var hasFlag = __webpack_require__(221);
+var support = function (level) {
+ if (level === 0) {
+ return false;
+ }
+ return {
+ level: level,
+ hasBasic: true,
+ has256: level >= 2,
+ has16m: level >= 3
+ };
+};
+var supportLevel = (function () {
+ if (hasFlag('no-color') ||
+ hasFlag('no-colors') ||
+ hasFlag('color=false')) {
+ return 0;
+ }
-function delay(delay, scheduler) {
- if (scheduler === void 0) {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"];
- }
- var absoluteDelay = Object(_util_isDate__WEBPACK_IMPORTED_MODULE_2__["isDate"])(delay);
- var delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);
- return function (source) { return source.lift(new DelayOperator(delayFor, scheduler)); };
-}
-var DelayOperator = /*@__PURE__*/ (function () {
- function DelayOperator(delay, scheduler) {
- this.delay = delay;
- this.scheduler = scheduler;
- }
- DelayOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));
- };
- return DelayOperator;
-}());
-var DelaySubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DelaySubscriber, _super);
- function DelaySubscriber(destination, delay, scheduler) {
- var _this = _super.call(this, destination) || this;
- _this.delay = delay;
- _this.scheduler = scheduler;
- _this.queue = [];
- _this.active = false;
- _this.errored = false;
- return _this;
- }
- DelaySubscriber.dispatch = function (state) {
- var source = state.source;
- var queue = source.queue;
- var scheduler = state.scheduler;
- var destination = state.destination;
- while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {
- queue.shift().notification.observe(destination);
- }
- if (queue.length > 0) {
- var delay_1 = Math.max(0, queue[0].time - scheduler.now());
- this.schedule(state, delay_1);
- }
- else {
- this.unsubscribe();
- source.active = false;
- }
- };
- DelaySubscriber.prototype._schedule = function (scheduler) {
- this.active = true;
- var destination = this.destination;
- destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {
- source: this, destination: this.destination, scheduler: scheduler
- }));
- };
- DelaySubscriber.prototype.scheduleNotification = function (notification) {
- if (this.errored === true) {
- return;
- }
- var scheduler = this.scheduler;
- var message = new DelayMessage(scheduler.now() + this.delay, notification);
- this.queue.push(message);
- if (this.active === false) {
- this._schedule(scheduler);
- }
- };
- DelaySubscriber.prototype._next = function (value) {
- this.scheduleNotification(_Notification__WEBPACK_IMPORTED_MODULE_4__["Notification"].createNext(value));
- };
- DelaySubscriber.prototype._error = function (err) {
- this.errored = true;
- this.queue = [];
- this.destination.error(err);
- this.unsubscribe();
- };
- DelaySubscriber.prototype._complete = function () {
- this.scheduleNotification(_Notification__WEBPACK_IMPORTED_MODULE_4__["Notification"].createComplete());
- this.unsubscribe();
- };
- return DelaySubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"]));
-var DelayMessage = /*@__PURE__*/ (function () {
- function DelayMessage(time, notification) {
- this.time = time;
- this.notification = notification;
- }
- return DelayMessage;
-}());
-//# sourceMappingURL=delay.js.map
+ if (hasFlag('color=16m') ||
+ hasFlag('color=full') ||
+ hasFlag('color=truecolor')) {
+ return 3;
+ }
+ if (hasFlag('color=256')) {
+ return 2;
+ }
-/***/ }),
-/* 446 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ if (hasFlag('color') ||
+ hasFlag('colors') ||
+ hasFlag('color=true') ||
+ hasFlag('color=always')) {
+ return 1;
+ }
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return isDate; });
-/** PURE_IMPORTS_START PURE_IMPORTS_END */
-function isDate(value) {
- return value instanceof Date && !isNaN(+value);
-}
-//# sourceMappingURL=isDate.js.map
+ if (process.stdout && !process.stdout.isTTY) {
+ return 0;
+ }
+ if (process.platform === 'win32') {
+ return 1;
+ }
-/***/ }),
-/* 447 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ if ('CI' in process.env) {
+ if ('TRAVIS' in process.env || process.env.CI === 'Travis') {
+ return 1;
+ }
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return delayWhen; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
-/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70);
-/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(71);
-/** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
+ return 0;
+ }
+
+ if ('TEAMCITY_VERSION' in process.env) {
+ return process.env.TEAMCITY_VERSION.match(/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/) === null ? 0 : 1;
+ }
+
+ if (/^(screen|xterm)-256(?:color)?/.test(process.env.TERM)) {
+ return 2;
+ }
+ if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {
+ return 1;
+ }
+ if ('COLORTERM' in process.env) {
+ return 1;
+ }
+ if (process.env.TERM === 'dumb') {
+ return 0;
+ }
+ return 0;
+})();
-function delayWhen(delayDurationSelector, subscriptionDelay) {
- if (subscriptionDelay) {
- return function (source) {
- return new SubscriptionDelayObservable(source, subscriptionDelay)
- .lift(new DelayWhenOperator(delayDurationSelector));
- };
- }
- return function (source) { return source.lift(new DelayWhenOperator(delayDurationSelector)); };
+if (supportLevel === 0 && 'FORCE_COLOR' in process.env) {
+ supportLevel = 1;
}
-var DelayWhenOperator = /*@__PURE__*/ (function () {
- function DelayWhenOperator(delayDurationSelector) {
- this.delayDurationSelector = delayDurationSelector;
- }
- DelayWhenOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector));
- };
- return DelayWhenOperator;
-}());
-var DelayWhenSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DelayWhenSubscriber, _super);
- function DelayWhenSubscriber(destination, delayDurationSelector) {
- var _this = _super.call(this, destination) || this;
- _this.delayDurationSelector = delayDurationSelector;
- _this.completed = false;
- _this.delayNotifierSubscriptions = [];
- _this.index = 0;
- return _this;
- }
- DelayWhenSubscriber.prototype.notifyNext = function (outerValue, _innerValue, _outerIndex, _innerIndex, innerSub) {
- this.destination.next(outerValue);
- this.removeSubscription(innerSub);
- this.tryComplete();
- };
- DelayWhenSubscriber.prototype.notifyError = function (error, innerSub) {
- this._error(error);
- };
- DelayWhenSubscriber.prototype.notifyComplete = function (innerSub) {
- var value = this.removeSubscription(innerSub);
- if (value) {
- this.destination.next(value);
- }
- this.tryComplete();
- };
- DelayWhenSubscriber.prototype._next = function (value) {
- var index = this.index++;
- try {
- var delayNotifier = this.delayDurationSelector(value, index);
- if (delayNotifier) {
- this.tryDelay(delayNotifier, value);
- }
- }
- catch (err) {
- this.destination.error(err);
- }
- };
- DelayWhenSubscriber.prototype._complete = function () {
- this.completed = true;
- this.tryComplete();
- this.unsubscribe();
- };
- DelayWhenSubscriber.prototype.removeSubscription = function (subscription) {
- subscription.unsubscribe();
- var subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription);
- if (subscriptionIdx !== -1) {
- this.delayNotifierSubscriptions.splice(subscriptionIdx, 1);
- }
- return subscription.outerValue;
- };
- DelayWhenSubscriber.prototype.tryDelay = function (delayNotifier, value) {
- var notifierSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, delayNotifier, value);
- if (notifierSubscription && !notifierSubscription.closed) {
- var destination = this.destination;
- destination.add(notifierSubscription);
- this.delayNotifierSubscriptions.push(notifierSubscription);
- }
- };
- DelayWhenSubscriber.prototype.tryComplete = function () {
- if (this.completed && this.delayNotifierSubscriptions.length === 0) {
- this.destination.complete();
- }
- };
- return DelayWhenSubscriber;
-}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"]));
-var SubscriptionDelayObservable = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubscriptionDelayObservable, _super);
- function SubscriptionDelayObservable(source, subscriptionDelay) {
- var _this = _super.call(this) || this;
- _this.source = source;
- _this.subscriptionDelay = subscriptionDelay;
- return _this;
- }
- SubscriptionDelayObservable.prototype._subscribe = function (subscriber) {
- this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source));
- };
- return SubscriptionDelayObservable;
-}(_Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"]));
-var SubscriptionDelaySubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubscriptionDelaySubscriber, _super);
- function SubscriptionDelaySubscriber(parent, source) {
- var _this = _super.call(this) || this;
- _this.parent = parent;
- _this.source = source;
- _this.sourceSubscribed = false;
- return _this;
- }
- SubscriptionDelaySubscriber.prototype._next = function (unused) {
- this.subscribeToSource();
- };
- SubscriptionDelaySubscriber.prototype._error = function (err) {
- this.unsubscribe();
- this.parent.error(err);
- };
- SubscriptionDelaySubscriber.prototype._complete = function () {
- this.unsubscribe();
- this.subscribeToSource();
- };
- SubscriptionDelaySubscriber.prototype.subscribeToSource = function () {
- if (!this.sourceSubscribed) {
- this.sourceSubscribed = true;
- this.unsubscribe();
- this.source.subscribe(this.parent);
- }
- };
- return SubscriptionDelaySubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=delayWhen.js.map
+
+module.exports = process && support(supportLevel);
+/***/ })
+/******/ ]);
+
/***/ }),
-/* 448 */
+/* 532 */
+/***/ (function(module, exports) {
+
+module.exports = require("buffer");
+
+/***/ }),
+/* 533 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return dematerialize; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortPackageJson", function() { return sortPackageJson; });
+/* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(534);
+/* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs_promises__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(535);
+/* harmony import */ var _kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_1__);
+/*
+ * 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 dematerialize() {
- return function dematerializeOperatorFunction(source) {
- return source.lift(new DeMaterializeOperator());
- };
+async function sortPackageJson(kbn) {
+ const packageJsonPath = kbn.getAbsolute('package.json');
+ await fs_promises__WEBPACK_IMPORTED_MODULE_0___default.a.writeFile(packageJsonPath, Object(_kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_1__["sortPackageJson"])(await fs_promises__WEBPACK_IMPORTED_MODULE_0___default.a.readFile(packageJsonPath, 'utf-8')));
}
-var DeMaterializeOperator = /*@__PURE__*/ (function () {
- function DeMaterializeOperator() {
- }
- DeMaterializeOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new DeMaterializeSubscriber(subscriber));
- };
- return DeMaterializeOperator;
-}());
-var DeMaterializeSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DeMaterializeSubscriber, _super);
- function DeMaterializeSubscriber(destination) {
- return _super.call(this, destination) || this;
- }
- DeMaterializeSubscriber.prototype._next = function (value) {
- value.observe(this.destination);
- };
- return DeMaterializeSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=dematerialize.js.map
+/***/ }),
+/* 534 */
+/***/ (function(module, exports) {
+
+module.exports = require("fs/promises");
/***/ }),
-/* 449 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 535 */
+/***/ (function(module, exports, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return distinct; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DistinctSubscriber", function() { return DistinctSubscriber; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
-function distinct(keySelector, flushes) {
- return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); };
-}
-var DistinctOperator = /*@__PURE__*/ (function () {
- function DistinctOperator(keySelector, flushes) {
- this.keySelector = keySelector;
- this.flushes = flushes;
- }
- DistinctOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));
- };
- return DistinctOperator;
-}());
-var DistinctSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DistinctSubscriber, _super);
- function DistinctSubscriber(destination, keySelector, flushes) {
- var _this = _super.call(this, destination) || this;
- _this.keySelector = keySelector;
- _this.values = new Set();
- if (flushes) {
- _this.add(Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(flushes, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](_this)));
- }
- return _this;
- }
- DistinctSubscriber.prototype.notifyNext = function () {
- this.values.clear();
- };
- DistinctSubscriber.prototype.notifyError = function (error) {
- this._error(error);
- };
- DistinctSubscriber.prototype._next = function (value) {
- if (this.keySelector) {
- this._useKeySelector(value);
- }
- else {
- this._finalizeNext(value, value);
- }
- };
- DistinctSubscriber.prototype._useKeySelector = function (value) {
- var key;
- var destination = this.destination;
- try {
- key = this.keySelector(value);
- }
- catch (err) {
- destination.error(err);
- return;
- }
- this._finalizeNext(key, value);
- };
- DistinctSubscriber.prototype._finalizeNext = function (key, value) {
- var values = this.values;
- if (!values.has(key)) {
- values.add(key);
- this.destination.next(value);
- }
- };
- return DistinctSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
+var _interopRequireDefault = __webpack_require__(7);
-//# sourceMappingURL=distinct.js.map
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.sortPackageJson = sortPackageJson;
+var _sortPackageJson = _interopRequireDefault(__webpack_require__(536));
+
+/*
+ * 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';
+}
/***/ }),
-/* 450 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 536 */
+/***/ (function(module, exports, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return distinctUntilChanged; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+const sortObjectKeys = __webpack_require__(537)
+const detectIndent = __webpack_require__(538)
+const detectNewline = __webpack_require__(539).graceful
+const gitHooks = __webpack_require__(540)
+const isPlainObject = __webpack_require__(541)
+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
+ })
-function distinctUntilChanged(compare, keySelector) {
- return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); };
+ return over
}
-var DistinctUntilChangedOperator = /*@__PURE__*/ (function () {
- function DistinctUntilChangedOperator(compare, keySelector) {
- this.compare = compare;
- this.keySelector = keySelector;
- }
- DistinctUntilChangedOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));
- };
- return DistinctUntilChangedOperator;
-}());
-var DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DistinctUntilChangedSubscriber, _super);
- function DistinctUntilChangedSubscriber(destination, compare, keySelector) {
- var _this = _super.call(this, destination) || this;
- _this.keySelector = keySelector;
- _this.hasKey = false;
- if (typeof compare === 'function') {
- _this.compare = compare;
- }
- return _this;
- }
- DistinctUntilChangedSubscriber.prototype.compare = function (x, y) {
- return x === y;
- };
- DistinctUntilChangedSubscriber.prototype._next = function (value) {
- var key;
- try {
- var keySelector = this.keySelector;
- key = keySelector ? keySelector(value) : value;
- }
- catch (err) {
- return this.destination.error(err);
- }
- var result = false;
- if (this.hasKey) {
- try {
- var compare = this.compare;
- result = compare(this.key, key);
- }
- catch (err) {
- return this.destination.error(err);
- }
- }
- else {
- this.hasKey = true;
- }
- if (!result) {
- this.key = key;
- this.destination.next(value);
- }
- };
- return DistinctUntilChangedSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=distinctUntilChanged.js.map
+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'])
-/***/ }),
-/* 451 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+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),
+ ]),
+ ),
+ ),
+ ),
+ ]),
+)
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return distinctUntilKeyChanged; });
-/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(450);
-/** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */
+// See https://docs.npmjs.com/misc/scripts
+const defaultNpmScripts = new Set([
+ 'install',
+ 'pack',
+ 'prepare',
+ 'publish',
+ 'restart',
+ 'shrinkwrap',
+ 'start',
+ 'stop',
+ 'test',
+ 'uninstall',
+ 'version',
+])
-function distinctUntilKeyChanged(key, compare) {
- return Object(_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__["distinctUntilChanged"])(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });
+const hasDevDependency = (dependency, packageJson) => {
+ return (
+ 'devDependencies' in packageJson &&
+ !!packageJson.devDependencies[dependency]
+ )
}
-//# sourceMappingURL=distinctUntilKeyChanged.js.map
-
-
-/***/ }),
-/* 452 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return elementAt; });
-/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(63);
-/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(106);
-/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(453);
-/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(444);
-/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(454);
-/** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */
-
-
-
+const sortScripts = onObject((scripts, packageJson) => {
+ const names = Object.keys(scripts)
+ const prefixable = new Set()
-function elementAt(index, defaultValue) {
- if (index < 0) {
- throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__["ArgumentOutOfRangeError"]();
+ const keys = names.map((name) => {
+ const omitted = name.replace(/^(?:pre|post)/, '')
+ if (defaultNpmScripts.has(omitted) || names.includes(omitted)) {
+ prefixable.add(omitted)
+ return omitted
}
- var hasDefaultValue = arguments.length >= 2;
- return function (source) {
- return source.pipe(Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return i === index; }), Object(_take__WEBPACK_IMPORTED_MODULE_4__["take"])(1), hasDefaultValue
- ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__["defaultIfEmpty"])(defaultValue)
- : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__["throwIfEmpty"])(function () { return new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__["ArgumentOutOfRangeError"](); }));
- };
-}
-//# sourceMappingURL=elementAt.js.map
+ return name
+ })
+ if (!hasDevDependency('npm-run-all', packageJson)) {
+ keys.sort()
+ }
-/***/ }),
-/* 453 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ const order = keys.reduce(
+ (order, key) =>
+ order.concat(
+ prefixable.has(key) ? [`pre${key}`, key, `post${key}`] : [key],
+ ),
+ [],
+ )
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return throwIfEmpty; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_util_EmptyError,_Subscriber PURE_IMPORTS_END */
+ 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' },
+]
-function throwIfEmpty(errorFactory) {
- if (errorFactory === void 0) {
- errorFactory = defaultErrorFactory;
- }
- return function (source) {
- return source.lift(new ThrowIfEmptyOperator(errorFactory));
- };
-}
-var ThrowIfEmptyOperator = /*@__PURE__*/ (function () {
- function ThrowIfEmptyOperator(errorFactory) {
- this.errorFactory = errorFactory;
- }
- ThrowIfEmptyOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));
- };
- return ThrowIfEmptyOperator;
-}());
-var ThrowIfEmptySubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ThrowIfEmptySubscriber, _super);
- function ThrowIfEmptySubscriber(destination, errorFactory) {
- var _this = _super.call(this, destination) || this;
- _this.errorFactory = errorFactory;
- _this.hasValue = false;
- return _this;
+const defaultSortOrder = fields.map(({ key }) => key)
+const overFields = pipe(
+ fields.reduce((fns, { key, over }) => {
+ if (over) {
+ fns.push(overProperty(key, over))
}
- ThrowIfEmptySubscriber.prototype._next = function (value) {
- this.hasValue = true;
- this.destination.next(value);
- };
- ThrowIfEmptySubscriber.prototype._complete = function () {
- if (!this.hasValue) {
- var err = void 0;
- try {
- err = this.errorFactory();
- }
- catch (e) {
- err = e;
- }
- this.destination.error(err);
- }
- else {
- return this.destination.complete();
- }
- };
- return ThrowIfEmptySubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_2__["Subscriber"]));
-function defaultErrorFactory() {
- return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__["EmptyError"]();
-}
-//# sourceMappingURL=throwIfEmpty.js.map
-
+ return fns
+ }, []),
+)
-/***/ }),
-/* 454 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+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)
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return take; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(63);
-/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
-/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */
+ 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(),
+ ]
+ }
-function take(count) {
- return function (source) {
- if (count === 0) {
- return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_3__["empty"])();
- }
- else {
- return source.lift(new TakeOperator(count));
- }
- };
+ return overFields(sortObjectKeys(json, sortOrder), json)
+ }),
+ )
}
-var TakeOperator = /*@__PURE__*/ (function () {
- function TakeOperator(total) {
- this.total = total;
- if (this.total < 0) {
- throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__["ArgumentOutOfRangeError"];
- }
- }
- TakeOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new TakeSubscriber(subscriber, this.total));
- };
- return TakeOperator;
-}());
-var TakeSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeSubscriber, _super);
- function TakeSubscriber(destination, total) {
- var _this = _super.call(this, destination) || this;
- _this.total = total;
- _this.count = 0;
- return _this;
- }
- TakeSubscriber.prototype._next = function (value) {
- var total = this.total;
- var count = ++this.count;
- if (count <= total) {
- this.destination.next(value);
- if (count === total) {
- this.destination.complete();
- this.unsubscribe();
- }
- }
- };
- return TakeSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=take.js.map
+
+module.exports = sortPackageJson
+module.exports.sortPackageJson = sortPackageJson
+module.exports.sortOrder = defaultSortOrder
+module.exports.default = sortPackageJson
/***/ }),
-/* 455 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 537 */
+/***/ (function(module, exports) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return endWith; });
-/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80);
-/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(45);
-/** PURE_IMPORTS_START _observable_concat,_observable_of PURE_IMPORTS_END */
+module.exports = function sortObjectByKeyNameList(object, sortWith) {
+ var keys;
+ var sortFn;
+ if (typeof sortWith === 'function') {
+ sortFn = sortWith;
+ } else {
+ keys = sortWith;
+ }
-function endWith() {
- var array = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- array[_i] = arguments[_i];
+ 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 function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(source, _observable_of__WEBPACK_IMPORTED_MODULE_1__["of"].apply(void 0, array)); };
+ return total;
+ }, Object.create(null));
}
-//# sourceMappingURL=endWith.js.map
/***/ }),
-/* 456 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 538 */
+/***/ (function(module, exports, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return every; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
-
-
-function every(predicate, thisArg) {
- return function (source) { return source.lift(new EveryOperator(predicate, thisArg, source)); };
-}
-var EveryOperator = /*@__PURE__*/ (function () {
- function EveryOperator(predicate, thisArg, source) {
- this.predicate = predicate;
- this.thisArg = thisArg;
- this.source = source;
- }
- EveryOperator.prototype.call = function (observer, source) {
- return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source));
- };
- return EveryOperator;
-}());
-var EverySubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](EverySubscriber, _super);
- function EverySubscriber(destination, predicate, thisArg, source) {
- var _this = _super.call(this, destination) || this;
- _this.predicate = predicate;
- _this.thisArg = thisArg;
- _this.source = source;
- _this.index = 0;
- _this.thisArg = thisArg || _this;
- return _this;
- }
- EverySubscriber.prototype.notifyComplete = function (everyValueMatch) {
- this.destination.next(everyValueMatch);
- this.destination.complete();
- };
- EverySubscriber.prototype._next = function (value) {
- var result = false;
- try {
- result = this.predicate.call(this.thisArg, value, this.index++, this.source);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- if (!result) {
- this.notifyComplete(false);
- }
- };
- EverySubscriber.prototype._complete = function () {
- this.notifyComplete(true);
- };
- return EverySubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=every.js.map
-/***/ }),
-/* 457 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return exhaust; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
+// Detect either spaces or tabs but not both to properly handle tabs for indentation and spaces for alignment
+const INDENT_REGEX = /^(?:( )+|\t+)/;
+const INDENT_TYPE_SPACE = 'space';
+const INDENT_TYPE_TAB = 'tab';
-function exhaust() {
- return function (source) { return source.lift(new SwitchFirstOperator()); };
-}
-var SwitchFirstOperator = /*@__PURE__*/ (function () {
- function SwitchFirstOperator() {
- }
- SwitchFirstOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new SwitchFirstSubscriber(subscriber));
- };
- return SwitchFirstOperator;
-}());
-var SwitchFirstSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SwitchFirstSubscriber, _super);
- function SwitchFirstSubscriber(destination) {
- var _this = _super.call(this, destination) || this;
- _this.hasCompleted = false;
- _this.hasSubscription = false;
- return _this;
- }
- SwitchFirstSubscriber.prototype._next = function (value) {
- if (!this.hasSubscription) {
- this.hasSubscription = true;
- this.add(Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(value, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](this)));
- }
- };
- SwitchFirstSubscriber.prototype._complete = function () {
- this.hasCompleted = true;
- if (!this.hasSubscription) {
- this.destination.complete();
- }
- };
- SwitchFirstSubscriber.prototype.notifyComplete = function () {
- this.hasSubscription = false;
- if (this.hasCompleted) {
- this.destination.complete();
- }
- };
- return SwitchFirstSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=exhaust.js.map
+// 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;
-/***/ }),
-/* 458 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ // Indents key (ident type + size of the indents/unindents)
+ let key;
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return exhaustMap; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67);
-/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */
+ for (const line of string.split(/\n/g)) {
+ if (!line) {
+ // Ignore empty lines
+ continue;
+ }
+ let indent;
+ let indentType;
+ let weight;
+ let entry;
+ const matches = line.match(INDENT_REGEX);
+ if (matches === null) {
+ previousSize = 0;
+ previousIndentType = '';
+ } else {
+ indent = matches[0].length;
+ if (matches[1]) {
+ indentType = INDENT_TYPE_SPACE;
+ } else {
+ indentType = INDENT_TYPE_TAB;
+ }
-function exhaustMap(project, resultSelector) {
- if (resultSelector) {
- return function (source) { return source.pipe(exhaustMap(function (a, i) { return Object(_observable_from__WEBPACK_IMPORTED_MODULE_2__["from"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_1__["map"])(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };
- }
- return function (source) {
- return source.lift(new ExhaustMapOperator(project));
- };
-}
-var ExhaustMapOperator = /*@__PURE__*/ (function () {
- function ExhaustMapOperator(project) {
- this.project = project;
- }
- ExhaustMapOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));
- };
- return ExhaustMapOperator;
-}());
-var ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ExhaustMapSubscriber, _super);
- function ExhaustMapSubscriber(destination, project) {
- var _this = _super.call(this, destination) || this;
- _this.project = project;
- _this.hasSubscription = false;
- _this.hasCompleted = false;
- _this.index = 0;
- return _this;
- }
- ExhaustMapSubscriber.prototype._next = function (value) {
- if (!this.hasSubscription) {
- this.tryNext(value);
- }
- };
- ExhaustMapSubscriber.prototype.tryNext = function (value) {
- var result;
- var index = this.index++;
- try {
- result = this.project(value, index);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.hasSubscription = true;
- this._innerSub(result);
- };
- ExhaustMapSubscriber.prototype._innerSub = function (result) {
- var innerSubscriber = new _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["SimpleInnerSubscriber"](this);
- var destination = this.destination;
- destination.add(innerSubscriber);
- var innerSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["innerSubscribe"])(result, innerSubscriber);
- if (innerSubscription !== innerSubscriber) {
- destination.add(innerSubscription);
- }
- };
- ExhaustMapSubscriber.prototype._complete = function () {
- this.hasCompleted = true;
- if (!this.hasSubscription) {
- this.destination.complete();
- }
- this.unsubscribe();
- };
- ExhaustMapSubscriber.prototype.notifyNext = function (innerValue) {
- this.destination.next(innerValue);
- };
- ExhaustMapSubscriber.prototype.notifyError = function (err) {
- this.destination.error(err);
- };
- ExhaustMapSubscriber.prototype.notifyComplete = function () {
- this.hasSubscription = false;
- if (this.hasCompleted) {
- this.destination.complete();
- }
- };
- return ExhaustMapSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=exhaustMap.js.map
+ // Ignore single space unless it's the only indent detected to prevent common false positives
+ if (ignoreSingleSpaces && indentType === INDENT_TYPE_SPACE && indent === 1) {
+ continue;
+ }
+ if (indentType !== previousIndentType) {
+ previousSize = 0;
+ }
-/***/ }),
-/* 459 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ previousIndentType = indentType;
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return expand; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpandOperator", function() { return ExpandOperator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpandSubscriber", function() { return ExpandSubscriber; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
+ weight = 0;
+ const indentDifference = indent - previousSize;
+ previousSize = indent;
-function expand(project, concurrent, scheduler) {
- if (concurrent === void 0) {
- concurrent = Number.POSITIVE_INFINITY;
- }
- concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;
- return function (source) { return source.lift(new ExpandOperator(project, concurrent, scheduler)); };
-}
-var ExpandOperator = /*@__PURE__*/ (function () {
- function ExpandOperator(project, concurrent, scheduler) {
- this.project = project;
- this.concurrent = concurrent;
- this.scheduler = scheduler;
- }
- ExpandOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler));
- };
- return ExpandOperator;
-}());
+ // 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);
+ }
-var ExpandSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ExpandSubscriber, _super);
- function ExpandSubscriber(destination, project, concurrent, scheduler) {
- var _this = _super.call(this, destination) || this;
- _this.project = project;
- _this.concurrent = concurrent;
- _this.scheduler = scheduler;
- _this.index = 0;
- _this.active = 0;
- _this.hasCompleted = false;
- if (concurrent < Number.POSITIVE_INFINITY) {
- _this.buffer = [];
- }
- return _this;
- }
- ExpandSubscriber.dispatch = function (arg) {
- var subscriber = arg.subscriber, result = arg.result, value = arg.value, index = arg.index;
- subscriber.subscribeToProjection(result, value, index);
- };
- ExpandSubscriber.prototype._next = function (value) {
- var destination = this.destination;
- if (destination.closed) {
- this._complete();
- return;
- }
- var index = this.index++;
- if (this.active < this.concurrent) {
- destination.next(value);
- try {
- var project = this.project;
- var result = project(value, index);
- if (!this.scheduler) {
- this.subscribeToProjection(result, value, index);
- }
- else {
- var state = { subscriber: this, result: result, value: value, index: index };
- var destination_1 = this.destination;
- destination_1.add(this.scheduler.schedule(ExpandSubscriber.dispatch, 0, state));
- }
- }
- catch (e) {
- destination.error(e);
- }
- }
- else {
- this.buffer.push(value);
- }
- };
- ExpandSubscriber.prototype.subscribeToProjection = function (result, value, index) {
- this.active++;
- var destination = this.destination;
- destination.add(Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(result, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](this)));
- };
- ExpandSubscriber.prototype._complete = function () {
- this.hasCompleted = true;
- if (this.hasCompleted && this.active === 0) {
- this.destination.complete();
- }
- this.unsubscribe();
- };
- ExpandSubscriber.prototype.notifyNext = function (innerValue) {
- this._next(innerValue);
- };
- ExpandSubscriber.prototype.notifyComplete = function () {
- var buffer = this.buffer;
- this.active--;
- if (buffer && buffer.length > 0) {
- this._next(buffer.shift());
- }
- if (this.hasCompleted && this.active === 0) {
- this.destination.complete();
- }
- };
- return ExpandSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
+ // Update the stats
+ entry = indents.get(key);
-//# sourceMappingURL=expand.js.map
+ if (entry === undefined) {
+ entry = [1, 0]; // Init
+ } else {
+ entry = [++entry[0], entry[1] + weight];
+ }
+ indents.set(key, entry);
+ }
+ }
-/***/ }),
-/* 460 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ return indents;
+}
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return finalize; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18);
-/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */
+// 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;
+ const amount = Number(indentsKey.slice(1));
-function finalize(callback) {
- return function (source) { return source.lift(new FinallyOperator(callback)); };
+ return {type, amount};
}
-var FinallyOperator = /*@__PURE__*/ (function () {
- function FinallyOperator(callback) {
- this.callback = callback;
- }
- FinallyOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new FinallySubscriber(subscriber, this.callback));
- };
- return FinallyOperator;
-}());
-var FinallySubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](FinallySubscriber, _super);
- function FinallySubscriber(destination, callback) {
- var _this = _super.call(this, destination) || this;
- _this.add(new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"](callback));
- return _this;
- }
- return FinallySubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=finalize.js.map
-
-/***/ }),
-/* 461 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+// 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;
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return find; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FindValueOperator", function() { return FindValueOperator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FindValueSubscriber", function() { return FindValueSubscriber; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+ for (const [key, [usedCount, weight]] of indents) {
+ if (usedCount > maxUsed || (usedCount === maxUsed && weight > maxWeight)) {
+ maxUsed = usedCount;
+ maxWeight = weight;
+ result = key;
+ }
+ }
+ return result;
+}
-function find(predicate, thisArg) {
- if (typeof predicate !== 'function') {
- throw new TypeError('predicate is not a function');
- }
- return function (source) { return source.lift(new FindValueOperator(predicate, source, false, thisArg)); };
+function makeIndentString(type, amount) {
+ const indentCharacter = type === INDENT_TYPE_SPACE ? ' ' : '\t';
+ return indentCharacter.repeat(amount);
}
-var FindValueOperator = /*@__PURE__*/ (function () {
- function FindValueOperator(predicate, source, yieldIndex, thisArg) {
- this.predicate = predicate;
- this.source = source;
- this.yieldIndex = yieldIndex;
- this.thisArg = thisArg;
- }
- FindValueOperator.prototype.call = function (observer, source) {
- return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg));
- };
- return FindValueOperator;
-}());
-var FindValueSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](FindValueSubscriber, _super);
- function FindValueSubscriber(destination, predicate, source, yieldIndex, thisArg) {
- var _this = _super.call(this, destination) || this;
- _this.predicate = predicate;
- _this.source = source;
- _this.yieldIndex = yieldIndex;
- _this.thisArg = thisArg;
- _this.index = 0;
- return _this;
- }
- FindValueSubscriber.prototype.notifyComplete = function (value) {
- var destination = this.destination;
- destination.next(value);
- destination.complete();
- this.unsubscribe();
- };
- FindValueSubscriber.prototype._next = function (value) {
- var _a = this, predicate = _a.predicate, thisArg = _a.thisArg;
- var index = this.index++;
- try {
- var result = predicate.call(thisArg || this, value, index, this.source);
- if (result) {
- this.notifyComplete(this.yieldIndex ? index : value);
- }
- }
- catch (err) {
- this.destination.error(err);
- }
- };
- FindValueSubscriber.prototype._complete = function () {
- this.notifyComplete(this.yieldIndex ? -1 : undefined);
- };
- return FindValueSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
+module.exports = string => {
+ if (typeof string !== 'string') {
+ throw new TypeError('Expected a string');
+ }
-//# sourceMappingURL=find.js.map
+ // 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);
+ }
+ const keyOfMostUsedIndent = getMostUsedKey(indents);
-/***/ }),
-/* 462 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ let type;
+ let amount = 0;
+ let indent = '';
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return findIndex; });
-/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(461);
-/** PURE_IMPORTS_START _operators_find PURE_IMPORTS_END */
+ if (keyOfMostUsedIndent !== undefined) {
+ ({type, amount} = decodeIndentsKey(keyOfMostUsedIndent));
+ indent = makeIndentString(type, amount);
+ }
-function findIndex(predicate, thisArg) {
- return function (source) { return source.lift(new _operators_find__WEBPACK_IMPORTED_MODULE_0__["FindValueOperator"](predicate, source, true, thisArg)); };
-}
-//# sourceMappingURL=findIndex.js.map
+ return {
+ amount,
+ type,
+ indent
+ };
+};
/***/ }),
-/* 463 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 539 */
+/***/ (function(module, exports, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return first; });
-/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(64);
-/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(106);
-/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(454);
-/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(444);
-/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(453);
-/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26);
-/** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */
-
-
+const detectNewline = string => {
+ if (typeof string !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+ const newlines = string.match(/(?:\r?\n)/g) || [];
-function first(predicate, defaultValue) {
- var hasDefaultValue = arguments.length >= 2;
- return function (source) { return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__["identity"], Object(_take__WEBPACK_IMPORTED_MODULE_2__["take"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__["defaultIfEmpty"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__["throwIfEmpty"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__["EmptyError"](); })); };
-}
-//# sourceMappingURL=first.js.map
+ if (newlines.length === 0) {
+ return;
+ }
+ const crlf = newlines.filter(newline => newline === '\r\n').length;
+ const lf = newlines.length - crlf;
-/***/ }),
-/* 464 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ return crlf > lf ? '\r\n' : '\n';
+};
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return ignoreElements; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+module.exports = detectNewline;
+module.exports.graceful = string => (typeof string === 'string' && detectNewline(string)) || '\n';
-function ignoreElements() {
- return function ignoreElementsOperatorFunction(source) {
- return source.lift(new IgnoreElementsOperator());
- };
-}
-var IgnoreElementsOperator = /*@__PURE__*/ (function () {
- function IgnoreElementsOperator() {
- }
- IgnoreElementsOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new IgnoreElementsSubscriber(subscriber));
- };
- return IgnoreElementsOperator;
-}());
-var IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](IgnoreElementsSubscriber, _super);
- function IgnoreElementsSubscriber() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- IgnoreElementsSubscriber.prototype._next = function (unused) {
- };
- return IgnoreElementsSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=ignoreElements.js.map
+/***/ }),
+/* 540 */
+/***/ (function(module) {
+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\"]");
/***/ }),
-/* 465 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 541 */
+/***/ (function(module, exports, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return isEmpty; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
-function isEmpty() {
- return function (source) { return source.lift(new IsEmptyOperator()); };
-}
-var IsEmptyOperator = /*@__PURE__*/ (function () {
- function IsEmptyOperator() {
- }
- IsEmptyOperator.prototype.call = function (observer, source) {
- return source.subscribe(new IsEmptySubscriber(observer));
- };
- return IsEmptyOperator;
-}());
-var IsEmptySubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](IsEmptySubscriber, _super);
- function IsEmptySubscriber(destination) {
- return _super.call(this, destination) || this;
- }
- IsEmptySubscriber.prototype.notifyComplete = function (isEmpty) {
- var destination = this.destination;
- destination.next(isEmpty);
- destination.complete();
- };
- IsEmptySubscriber.prototype._next = function (value) {
- this.notifyComplete(false);
- };
- IsEmptySubscriber.prototype._complete = function () {
- this.notifyComplete(true);
- };
- return IsEmptySubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=isEmpty.js.map
+module.exports = value => {
+ if (Object.prototype.toString.call(value) !== '[object Object]') {
+ return false;
+ }
+
+ const prototype = Object.getPrototypeOf(value);
+ return prototype === null || prototype === Object.prototype;
+};
/***/ }),
-/* 466 */
+/* 542 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return last; });
-/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(64);
-/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(106);
-/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(467);
-/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(453);
-/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(444);
-/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26);
-/** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateDependencies", function() { return validateDependencies; });
+/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(531);
+/* harmony import */ var _yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
+/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(235);
+/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(352);
+/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(341);
+/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(464);
+/* harmony import */ var _projects_tree__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(543);
+/*
+ * 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.
+ */
+// @ts-expect-error published types are useless
-function last(predicate, defaultValue) {
- var hasDefaultValue = arguments.length >= 2;
- return function (source) { return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__["identity"], Object(_takeLast__WEBPACK_IMPORTED_MODULE_2__["takeLast"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__["defaultIfEmpty"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__["throwIfEmpty"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__["EmptyError"](); })); };
-}
-//# sourceMappingURL=last.js.map
-/***/ }),
-/* 467 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+async function validateDependencies(kbn, yarnLock) {
+ // look through all of the packages in the yarn.lock file to see if
+ // we have accidentally installed multiple lodash v4 versions
+ const lodash4Versions = new Set();
+ const lodash4Reqs = new Set();
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return takeLast; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(63);
-/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
-/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */
+ for (const [req, dep] of Object.entries(yarnLock)) {
+ if (req.startsWith('lodash@') && dep.version.startsWith('4.')) {
+ lodash4Reqs.add(req);
+ lodash4Versions.add(dep.version);
+ }
+ } // if we find more than one lodash v4 version installed then delete
+ // lodash v4 requests from the yarn.lock file and prompt the user to
+ // retry bootstrap so that a single v4 version will be installed
+ if (lodash4Versions.size > 1) {
+ for (const req of lodash4Reqs) {
+ delete yarnLock[req];
+ }
+ await Object(_fs__WEBPACK_IMPORTED_MODULE_4__["writeFile"])(kbn.getAbsolute('yarn.lock'), Object(_yarnpkg_lockfile__WEBPACK_IMPORTED_MODULE_0__["stringify"])(yarnLock), 'utf8');
+ _log__WEBPACK_IMPORTED_MODULE_5__["log"].error(dedent__WEBPACK_IMPORTED_MODULE_1___default.a`
-function takeLast(count) {
- return function takeLastOperatorFunction(source) {
- if (count === 0) {
- return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_3__["empty"])();
- }
- else {
- return source.lift(new TakeLastOperator(count));
- }
- };
-}
-var TakeLastOperator = /*@__PURE__*/ (function () {
- function TakeLastOperator(total) {
- this.total = total;
- if (this.total < 0) {
- throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__["ArgumentOutOfRangeError"];
- }
- }
- TakeLastOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new TakeLastSubscriber(subscriber, this.total));
- };
- return TakeLastOperator;
-}());
-var TakeLastSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeLastSubscriber, _super);
- function TakeLastSubscriber(destination, total) {
- var _this = _super.call(this, destination) || this;
- _this.total = total;
- _this.ring = new Array();
- _this.count = 0;
- return _this;
- }
- TakeLastSubscriber.prototype._next = function (value) {
- var ring = this.ring;
- var total = this.total;
- var count = this.count++;
- if (ring.length < total) {
- ring.push(value);
- }
- else {
- var index = count % total;
- ring[index] = value;
- }
- };
- TakeLastSubscriber.prototype._complete = function () {
- var destination = this.destination;
- var count = this.count;
- if (count > 0) {
- var total = this.count >= this.total ? this.total : this.count;
- var ring = this.ring;
- for (var i = 0; i < total; i++) {
- var idx = (count++) % total;
- destination.next(ring[idx]);
- }
- }
- destination.complete();
- };
- return TakeLastSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=takeLast.js.map
+ Multiple version of lodash v4 were detected, so they have been removed
+ from the yarn.lock file. Please rerun yarn kbn bootstrap to coalese the
+ lodash versions installed.
+ If you still see this error when you re-bootstrap then you might need
+ to force a new dependency to use the latest version of lodash via the
+ "resolutions" field in package.json.
-/***/ }),
-/* 468 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ If you have questions about this please reach out to the operations team.
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return mapTo; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+ `);
+ process.exit(1);
+ } // look through all the dependencies of production packages and production
+ // dependencies of those packages to determine if we're shipping any versions
+ // of lodash v3 in the distributable
-function mapTo(value) {
- return function (source) { return source.lift(new MapToOperator(value)); };
-}
-var MapToOperator = /*@__PURE__*/ (function () {
- function MapToOperator(value) {
- this.value = value;
- }
- MapToOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new MapToSubscriber(subscriber, this.value));
- };
- return MapToOperator;
-}());
-var MapToSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MapToSubscriber, _super);
- function MapToSubscriber(destination, value) {
- var _this = _super.call(this, destination) || this;
- _this.value = value;
- return _this;
+ const prodDependencies = kbn.resolveAllProductionDependencies(yarnLock, _log__WEBPACK_IMPORTED_MODULE_5__["log"]);
+ const lodash3Versions = new Set();
+
+ for (const dep of prodDependencies.values()) {
+ if (dep.name === 'lodash' && dep.version.startsWith('3.')) {
+ lodash3Versions.add(dep.version);
}
- MapToSubscriber.prototype._next = function (x) {
- this.destination.next(this.value);
- };
- return MapToSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=mapTo.js.map
+ } // if any lodash v3 packages were found we abort and tell the user to fix things
-/***/ }),
-/* 469 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ if (lodash3Versions.size) {
+ _log__WEBPACK_IMPORTED_MODULE_5__["log"].error(dedent__WEBPACK_IMPORTED_MODULE_1___default.a`
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return materialize; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(43);
-/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */
+ Due to changes in the yarn.lock file and/or package.json files a version of
+ lodash 3 is now included in the production dependencies. To reduce the size of
+ our distributable and especially our front-end bundles we have decided to
+ prevent adding any new instances of lodash 3.
+ Please inspect the changes to yarn.lock or package.json files to identify where
+ the lodash 3 version is coming from and remove it.
+ If you have questions about this please reack out to the operations team.
-function materialize() {
- return function materializeOperatorFunction(source) {
- return source.lift(new MaterializeOperator());
- };
-}
-var MaterializeOperator = /*@__PURE__*/ (function () {
- function MaterializeOperator() {
- }
- MaterializeOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new MaterializeSubscriber(subscriber));
- };
- return MaterializeOperator;
-}());
-var MaterializeSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MaterializeSubscriber, _super);
- function MaterializeSubscriber(destination) {
- return _super.call(this, destination) || this;
- }
- MaterializeSubscriber.prototype._next = function (value) {
- this.destination.next(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createNext(value));
- };
- MaterializeSubscriber.prototype._error = function (err) {
- var destination = this.destination;
- destination.next(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createError(err));
- destination.complete();
- };
- MaterializeSubscriber.prototype._complete = function () {
- var destination = this.destination;
- destination.next(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createComplete());
- destination.complete();
- };
- return MaterializeSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=materialize.js.map
+ `);
+ process.exit(1);
+ } // TODO: remove this once we move into a single package.json
+ // look through all the package.json files to find packages which have mismatched version ranges
-/***/ }),
-/* 470 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ const depRanges = new Map();
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; });
-/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(471);
-/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */
+ for (const project of kbn.getAllProjects().values()) {
+ var _kbn$kibanaProject;
-function max(comparer) {
- var max = (typeof comparer === 'function')
- ? function (x, y) { return comparer(x, y) > 0 ? x : y; }
- : function (x, y) { return x > y ? x : y; };
- return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(max);
-}
-//# sourceMappingURL=max.js.map
+ // Skip if this is an external plugin
+ if (project.path.includes(`${(_kbn$kibanaProject = kbn.kibanaProject) === null || _kbn$kibanaProject === void 0 ? void 0 : _kbn$kibanaProject.path}${path__WEBPACK_IMPORTED_MODULE_3__["sep"]}plugins`)) {
+ continue;
+ }
+ for (const [dep, range] of Object.entries(project.allDependencies)) {
+ const existingDep = depRanges.get(dep);
-/***/ }),
-/* 471 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ if (!existingDep) {
+ depRanges.set(dep, [{
+ range,
+ projects: [project]
+ }]);
+ continue;
+ }
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return reduce; });
-/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(472);
-/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(467);
-/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(444);
-/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(25);
-/** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */
+ const existingRange = existingDep.find(existing => existing.range === range);
+
+ if (!existingRange) {
+ existingDep.push({
+ range,
+ projects: [project]
+ });
+ continue;
+ }
+ existingRange.projects.push(project);
+ }
+ }
+ const duplicateRanges = Array.from(depRanges.entries()).filter(([, ranges]) => ranges.length > 1 && !ranges.every(rng => Object(_package_json__WEBPACK_IMPORTED_MODULE_6__["isLinkDependency"])(rng.range))).reduce((acc, [dep, ranges]) => [...acc, dep, ...ranges.map(({
+ range,
+ projects
+ }) => ` ${range} => ${projects.map(p => p.name).join(', ')}`)], []).join('\n ');
+ if (duplicateRanges) {
+ _log__WEBPACK_IMPORTED_MODULE_5__["log"].error(dedent__WEBPACK_IMPORTED_MODULE_1___default.a`
-function reduce(accumulator, seed) {
- if (arguments.length >= 2) {
- return function reduceOperatorFunctionWithSeed(source) {
- return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__["pipe"])(Object(_scan__WEBPACK_IMPORTED_MODULE_0__["scan"])(accumulator, seed), Object(_takeLast__WEBPACK_IMPORTED_MODULE_1__["takeLast"])(1), Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__["defaultIfEmpty"])(seed))(source);
- };
- }
- return function reduceOperatorFunction(source) {
- return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__["pipe"])(Object(_scan__WEBPACK_IMPORTED_MODULE_0__["scan"])(function (acc, value, index) { return accumulator(acc, value, index + 1); }), Object(_takeLast__WEBPACK_IMPORTED_MODULE_1__["takeLast"])(1))(source);
- };
-}
-//# sourceMappingURL=reduce.js.map
+ [single_version_dependencies] Multiple version ranges for the same dependency
+ were found declared across different package.json files. Please consolidate
+ those to match across all package.json files. Different versions for the
+ same dependency is not supported.
+ If you have questions about this please reach out to the operations team.
-/***/ }),
-/* 472 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ The conflicting dependencies are:
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return scan; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+ ${duplicateRanges}
+ `);
+ process.exit(1);
+ } // look for packages that have the the `kibana.devOnly` flag in their package.json
+ // and make sure they aren't included in the production dependencies of Kibana
-function scan(accumulator, seed) {
- var hasSeed = false;
- if (arguments.length >= 2) {
- hasSeed = true;
- }
- return function scanOperatorFunction(source) {
- return source.lift(new ScanOperator(accumulator, seed, hasSeed));
- };
-}
-var ScanOperator = /*@__PURE__*/ (function () {
- function ScanOperator(accumulator, seed, hasSeed) {
- if (hasSeed === void 0) {
- hasSeed = false;
- }
- this.accumulator = accumulator;
- this.seed = seed;
- this.hasSeed = hasSeed;
- }
- ScanOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));
- };
- return ScanOperator;
-}());
-var ScanSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ScanSubscriber, _super);
- function ScanSubscriber(destination, accumulator, _seed, hasSeed) {
- var _this = _super.call(this, destination) || this;
- _this.accumulator = accumulator;
- _this._seed = _seed;
- _this.hasSeed = hasSeed;
- _this.index = 0;
- return _this;
- }
- Object.defineProperty(ScanSubscriber.prototype, "seed", {
- get: function () {
- return this._seed;
- },
- set: function (value) {
- this.hasSeed = true;
- this._seed = value;
- },
- enumerable: true,
- configurable: true
- });
- ScanSubscriber.prototype._next = function (value) {
- if (!this.hasSeed) {
- this.seed = value;
- this.destination.next(value);
- }
- else {
- return this._tryNext(value);
- }
- };
- ScanSubscriber.prototype._tryNext = function (value) {
- var index = this.index++;
- var result;
- try {
- result = this.accumulator(this.seed, value, index);
- }
- catch (err) {
- this.destination.error(err);
- }
- this.seed = result;
- this.destination.next(result);
- };
- return ScanSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=scan.js.map
+ const devOnlyProjectsInProduction = getDevOnlyProductionDepsTree(kbn, 'kibana');
+ if (devOnlyProjectsInProduction) {
+ _log__WEBPACK_IMPORTED_MODULE_5__["log"].error(dedent__WEBPACK_IMPORTED_MODULE_1___default.a`
+ Some of the packages in the production dependency chain for Kibana and X-Pack are
+ flagged with "kibana.devOnly" in their package.json. Please check changes made to
+ packages and their dependencies to ensure they don't end up in production.
-/***/ }),
-/* 473 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ The devOnly dependencies that are being dependend on in production are:
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; });
-/* harmony import */ var _observable_merge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(100);
-/** PURE_IMPORTS_START _observable_merge PURE_IMPORTS_END */
+ ${Object(_projects_tree__WEBPACK_IMPORTED_MODULE_7__["treeToString"])(devOnlyProjectsInProduction).split('\n').join('\n ')}
+ `);
+ process.exit(1);
+ }
-function merge() {
- var observables = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i] = arguments[_i];
- }
- return function (source) { return source.lift.call(_observable_merge__WEBPACK_IMPORTED_MODULE_0__["merge"].apply(void 0, [source].concat(observables))); };
+ _log__WEBPACK_IMPORTED_MODULE_5__["log"].success('yarn.lock analysis completed without any issues');
}
-//# sourceMappingURL=merge.js.map
+function getDevOnlyProductionDepsTree(kbn, projectName) {
+ const project = kbn.getProject(projectName);
+ const childProjectNames = [...Object.keys(project.productionDependencies).filter(name => kbn.hasProject(name)), ...(projectName === 'kibana' ? ['x-pack'] : [])];
+ const children = childProjectNames.map(n => getDevOnlyProductionDepsTree(kbn, n)).filter(t => !!t);
+
+ if (!children.length && !project.isFlaggedAsDevOnly()) {
+ return;
+ }
+
+ const tree = {
+ name: project.isFlaggedAsDevOnly() ? chalk__WEBPACK_IMPORTED_MODULE_2___default.a.red.bold(projectName) : projectName,
+ children
+ };
+ return tree;
+}
/***/ }),
-/* 474 */
+/* 543 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return mergeMapTo; });
-/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(83);
-/** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderProjectsTree", function() { return renderProjectsTree; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "treeToString", function() { return treeToString; });
+/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(235);
+/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
+/*
+ * 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 mergeMapTo(innerObservable, resultSelector, concurrent) {
- if (concurrent === void 0) {
- concurrent = Number.POSITIVE_INFINITY;
- }
- if (typeof resultSelector === 'function') {
- return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(function () { return innerObservable; }, resultSelector, concurrent);
- }
- if (typeof resultSelector === 'number') {
- concurrent = resultSelector;
- }
- return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(function () { return innerObservable; }, concurrent);
+
+const projectKey = Symbol('__project');
+function renderProjectsTree(rootPath, projects) {
+ const projectsTree = buildProjectsTree(rootPath, projects);
+ return treeToString(createTreeStructure(projectsTree));
+}
+function treeToString(tree) {
+ return [tree.name].concat(childrenToStrings(tree.children, '')).join('\n');
}
-//# sourceMappingURL=mergeMapTo.js.map
+function childrenToStrings(tree, treePrefix) {
+ if (tree === undefined) {
+ return [];
+ }
-/***/ }),
-/* 475 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ let strings = [];
+ tree.forEach((node, index) => {
+ const isLastNode = tree.length - 1 === index;
+ const nodePrefix = isLastNode ? '└── ' : '├── ';
+ const childPrefix = isLastNode ? ' ' : '│ ';
+ const childrenPrefix = treePrefix + childPrefix;
+ strings.push(`${treePrefix}${nodePrefix}${node.name}`);
+ strings = strings.concat(childrenToStrings(node.children, childrenPrefix));
+ });
+ return strings;
+}
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return mergeScan; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeScanOperator", function() { return MergeScanOperator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeScanSubscriber", function() { return MergeScanSubscriber; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
+function createTreeStructure(tree) {
+ let name;
+ const children = [];
+ for (const [dir, project] of tree.entries()) {
+ // This is a leaf node (aka a project)
+ if (typeof project === 'string') {
+ name = chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(project);
+ continue;
+ } // If there's only one project and the key indicates it's a leaf node, we
+ // know that we're at a package folder that contains a package.json, so we
+ // "inline it" so we don't get unnecessary levels, i.e. we'll just see
+ // `foo` instead of `foo -> foo`.
-function mergeScan(accumulator, seed, concurrent) {
- if (concurrent === void 0) {
- concurrent = Number.POSITIVE_INFINITY;
- }
- return function (source) { return source.lift(new MergeScanOperator(accumulator, seed, concurrent)); };
-}
-var MergeScanOperator = /*@__PURE__*/ (function () {
- function MergeScanOperator(accumulator, seed, concurrent) {
- this.accumulator = accumulator;
- this.seed = seed;
- this.concurrent = concurrent;
- }
- MergeScanOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new MergeScanSubscriber(subscriber, this.accumulator, this.seed, this.concurrent));
- };
- return MergeScanOperator;
-}());
-var MergeScanSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MergeScanSubscriber, _super);
- function MergeScanSubscriber(destination, accumulator, acc, concurrent) {
- var _this = _super.call(this, destination) || this;
- _this.accumulator = accumulator;
- _this.acc = acc;
- _this.concurrent = concurrent;
- _this.hasValue = false;
- _this.hasCompleted = false;
- _this.buffer = [];
- _this.active = 0;
- _this.index = 0;
- return _this;
+ if (project.size === 1 && project.has(projectKey)) {
+ const projectName = project.get(projectKey);
+ children.push({
+ children: [],
+ name: dirOrProjectName(dir, projectName)
+ });
+ continue;
}
- MergeScanSubscriber.prototype._next = function (value) {
- if (this.active < this.concurrent) {
- var index = this.index++;
- var destination = this.destination;
- var ish = void 0;
- try {
- var accumulator = this.accumulator;
- ish = accumulator(this.acc, value, index);
- }
- catch (e) {
- return destination.error(e);
- }
- this.active++;
- this._innerSub(ish);
- }
- else {
- this.buffer.push(value);
- }
- };
- MergeScanSubscriber.prototype._innerSub = function (ish) {
- var innerSubscriber = new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](this);
- var destination = this.destination;
- destination.add(innerSubscriber);
- var innerSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(ish, innerSubscriber);
- if (innerSubscription !== innerSubscriber) {
- destination.add(innerSubscription);
- }
- };
- MergeScanSubscriber.prototype._complete = function () {
- this.hasCompleted = true;
- if (this.active === 0 && this.buffer.length === 0) {
- if (this.hasValue === false) {
- this.destination.next(this.acc);
- }
- this.destination.complete();
- }
- this.unsubscribe();
- };
- MergeScanSubscriber.prototype.notifyNext = function (innerValue) {
- var destination = this.destination;
- this.acc = innerValue;
- this.hasValue = true;
- destination.next(innerValue);
- };
- MergeScanSubscriber.prototype.notifyComplete = function () {
- var buffer = this.buffer;
- this.active--;
- if (buffer.length > 0) {
- this._next(buffer.shift());
- }
- else if (this.active === 0 && this.hasCompleted) {
- if (this.hasValue === false) {
- this.destination.next(this.acc);
- }
- this.destination.complete();
- }
- };
- return MergeScanSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=mergeScan.js.map
+ const subtree = createTreeStructure(project); // If the name is specified, we know there's a package at the "root" of the
+ // subtree itself.
+ if (subtree.name !== undefined) {
+ const projectName = subtree.name;
+ children.push({
+ children: subtree.children,
+ name: dirOrProjectName(dir, projectName)
+ });
+ continue;
+ } // Special-case whenever we have one child, so we don't get unnecessary
+ // folders in the output. E.g. instead of `foo -> bar -> baz` we get
+ // `foo/bar/baz` instead.
-/***/ }),
-/* 476 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return min; });
-/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(471);
-/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */
+ if (subtree.children && subtree.children.length === 1) {
+ const child = subtree.children[0];
+ const newName = chalk__WEBPACK_IMPORTED_MODULE_0___default.a.dim(path__WEBPACK_IMPORTED_MODULE_1___default.a.join(dir.toString(), child.name));
+ children.push({
+ children: child.children,
+ name: newName
+ });
+ continue;
+ }
-function min(comparer) {
- var min = (typeof comparer === 'function')
- ? function (x, y) { return comparer(x, y) < 0 ? x : y; }
- : function (x, y) { return x < y ? x : y; };
- return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(min);
+ children.push({
+ children: subtree.children,
+ name: chalk__WEBPACK_IMPORTED_MODULE_0___default.a.dim(dir.toString())
+ });
+ }
+
+ return {
+ name,
+ children
+ };
}
-//# sourceMappingURL=min.js.map
+function dirOrProjectName(dir, projectName) {
+ return dir === projectName ? chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(dir) : chalk__WEBPACK_IMPORTED_MODULE_0___default.a`{dim ${dir.toString()} ({reset.green ${projectName}})}`;
+}
-/***/ }),
-/* 477 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+function buildProjectsTree(rootPath, projects) {
+ const tree = new Map();
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return multicast; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MulticastOperator", function() { return MulticastOperator; });
-/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27);
-/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */
+ for (const project of projects.values()) {
+ if (rootPath === project.path) {
+ tree.set(projectKey, project.name);
+ } else {
+ const relativeProjectPath = path__WEBPACK_IMPORTED_MODULE_1___default.a.relative(rootPath, project.path);
+ addProjectToTree(tree, relativeProjectPath.split(path__WEBPACK_IMPORTED_MODULE_1___default.a.sep), project);
+ }
+ }
-function multicast(subjectOrSubjectFactory, selector) {
- return function multicastOperatorFunction(source) {
- var subjectFactory;
- if (typeof subjectOrSubjectFactory === 'function') {
- subjectFactory = subjectOrSubjectFactory;
- }
- else {
- subjectFactory = function subjectFactory() {
- return subjectOrSubjectFactory;
- };
- }
- if (typeof selector === 'function') {
- return source.lift(new MulticastOperator(subjectFactory, selector));
- }
- var connectable = Object.create(source, _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__["connectableObservableDescriptor"]);
- connectable.source = source;
- connectable.subjectFactory = subjectFactory;
- return connectable;
- };
+ return tree;
}
-var MulticastOperator = /*@__PURE__*/ (function () {
- function MulticastOperator(subjectFactory, selector) {
- this.subjectFactory = subjectFactory;
- this.selector = selector;
- }
- MulticastOperator.prototype.call = function (subscriber, source) {
- var selector = this.selector;
- var subject = this.subjectFactory();
- var subscription = selector(subject).subscribe(subscriber);
- subscription.add(source.subscribe(subject));
- return subscription;
- };
- return MulticastOperator;
-}());
-//# sourceMappingURL=multicast.js.map
+function addProjectToTree(tree, pathParts, project) {
+ if (pathParts.length === 0) {
+ tree.set(projectKey, project.name);
+ } else {
+ const [currentDir, ...rest] = pathParts;
+
+ if (!tree.has(currentDir)) {
+ tree.set(currentDir, new Map());
+ }
+ const subtree = tree.get(currentDir);
+ addProjectToTree(subtree, rest, project);
+ }
+}
/***/ }),
-/* 478 */
+/* 544 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return onErrorResumeNext; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNextStatic", function() { return onErrorResumeNextStatic; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84);
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_observable_from,_util_isArray,_innerSubscribe PURE_IMPORTS_END */
+/* harmony import */ var _get_cache_folders__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(545);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getBazelDiskCacheFolder", function() { return _get_cache_folders__WEBPACK_IMPORTED_MODULE_0__["getBazelDiskCacheFolder"]; });
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getBazelRepositoryCacheFolder", function() { return _get_cache_folders__WEBPACK_IMPORTED_MODULE_0__["getBazelRepositoryCacheFolder"]; });
+/* harmony import */ var _install_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(546);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isBazelBinAvailable", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_1__["isBazelBinAvailable"]; });
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "installBazelTools", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_1__["installBazelTools"]; });
-function onErrorResumeNext() {
- var nextSources = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- nextSources[_i] = arguments[_i];
- }
- if (nextSources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(nextSources[0])) {
- nextSources = nextSources[0];
- }
- return function (source) { return source.lift(new OnErrorResumeNextOperator(nextSources)); };
-}
-function onErrorResumeNextStatic() {
- var nextSources = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- nextSources[_i] = arguments[_i];
- }
- var source = undefined;
- if (nextSources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(nextSources[0])) {
- nextSources = nextSources[0];
- }
- source = nextSources.shift();
- return Object(_observable_from__WEBPACK_IMPORTED_MODULE_1__["from"])(source).lift(new OnErrorResumeNextOperator(nextSources));
-}
-var OnErrorResumeNextOperator = /*@__PURE__*/ (function () {
- function OnErrorResumeNextOperator(nextSources) {
- this.nextSources = nextSources;
- }
- OnErrorResumeNextOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources));
- };
- return OnErrorResumeNextOperator;
-}());
-var OnErrorResumeNextSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](OnErrorResumeNextSubscriber, _super);
- function OnErrorResumeNextSubscriber(destination, nextSources) {
- var _this = _super.call(this, destination) || this;
- _this.destination = destination;
- _this.nextSources = nextSources;
- return _this;
- }
- OnErrorResumeNextSubscriber.prototype.notifyError = function () {
- this.subscribeToNextSource();
- };
- OnErrorResumeNextSubscriber.prototype.notifyComplete = function () {
- this.subscribeToNextSource();
- };
- OnErrorResumeNextSubscriber.prototype._error = function (err) {
- this.subscribeToNextSource();
- this.unsubscribe();
- };
- OnErrorResumeNextSubscriber.prototype._complete = function () {
- this.subscribeToNextSource();
- this.unsubscribe();
- };
- OnErrorResumeNextSubscriber.prototype.subscribeToNextSource = function () {
- var next = this.nextSources.shift();
- if (!!next) {
- var innerSubscriber = new _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["SimpleInnerSubscriber"](this);
- var destination = this.destination;
- destination.add(innerSubscriber);
- var innerSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["innerSubscribe"])(next, innerSubscriber);
- if (innerSubscription !== innerSubscriber) {
- destination.add(innerSubscription);
- }
- }
- else {
- this.destination.complete();
- }
- };
- return OnErrorResumeNextSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=onErrorResumeNext.js.map
+/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(547);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "runBazel", function() { return _run__WEBPACK_IMPORTED_MODULE_2__["runBazel"]; });
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "runIBazel", function() { return _run__WEBPACK_IMPORTED_MODULE_2__["runIBazel"]; });
-/***/ }),
-/* 479 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _yarn_integrity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(554);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeYarnIntegrityFileIfExists", function() { return _yarn_integrity__WEBPACK_IMPORTED_MODULE_3__["removeYarnIntegrityFileIfExists"]; });
+
+/*
+ * 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.
+ */
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return pairwise; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
-function pairwise() {
- return function (source) { return source.lift(new PairwiseOperator()); };
-}
-var PairwiseOperator = /*@__PURE__*/ (function () {
- function PairwiseOperator() {
- }
- PairwiseOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new PairwiseSubscriber(subscriber));
- };
- return PairwiseOperator;
-}());
-var PairwiseSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](PairwiseSubscriber, _super);
- function PairwiseSubscriber(destination) {
- var _this = _super.call(this, destination) || this;
- _this.hasPrev = false;
- return _this;
- }
- PairwiseSubscriber.prototype._next = function (value) {
- var pair;
- if (this.hasPrev) {
- pair = [this.prev, value];
- }
- else {
- this.hasPrev = true;
- }
- this.prev = value;
- if (pair) {
- this.destination.next(pair);
- }
- };
- return PairwiseSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=pairwise.js.map
/***/ }),
-/* 480 */
+/* 545 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; });
-/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(105);
-/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(106);
-/** PURE_IMPORTS_START _util_not,_filter PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBazelDiskCacheFolder", function() { return getBazelDiskCacheFolder; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBazelRepositoryCacheFolder", function() { return getBazelRepositoryCacheFolder; });
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(342);
+/*
+ * 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 partition(predicate, thisArg) {
- return function (source) {
- return [
- Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(predicate, thisArg)(source),
- Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__["not"])(predicate, thisArg))(source)
- ];
- };
+
+async function rawRunBazelInfoRepoCache() {
+ const {
+ stdout: bazelRepositoryCachePath
+ } = await Object(_child_process__WEBPACK_IMPORTED_MODULE_1__["spawn"])('bazel', ['info', 'repository_cache'], {
+ stdio: 'pipe'
+ });
+ return bazelRepositoryCachePath;
}
-//# sourceMappingURL=partition.js.map
+async function getBazelDiskCacheFolder() {
+ return Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["dirname"])(await rawRunBazelInfoRepoCache()), 'disk-cache');
+}
+async function getBazelRepositoryCacheFolder() {
+ return await rawRunBazelInfoRepoCache();
+}
/***/ }),
-/* 481 */
+/* 546 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return pluck; });
-/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67);
-/** PURE_IMPORTS_START _map PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBazelBinAvailable", function() { return isBazelBinAvailable; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "installBazelTools", function() { return installBazelTools; });
+/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
+/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
+/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(342);
+/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(352);
+/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(341);
+/*
+ * 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 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 function (source) { return Object(_map__WEBPACK_IMPORTED_MODULE_0__["map"])(plucker(properties, length))(source); };
-}
-function plucker(props, length) {
- var mapper = function (x) {
- var currentProp = x;
- for (var i = 0; i < length; i++) {
- var p = currentProp != null ? currentProp[props[i]] : undefined;
- if (p !== void 0) {
- currentProp = p;
- }
- else {
- return undefined;
- }
- }
- return currentProp;
- };
- return mapper;
-}
-//# sourceMappingURL=pluck.js.map
-/***/ }),
-/* 482 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return publish; });
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28);
-/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(477);
-/** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */
-function publish(selector) {
- return selector ?
- Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(function () { return new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"](); }, selector) :
- Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"]());
+async function readBazelToolsVersionFile(repoRootPath, versionFilename) {
+ const version = (await Object(_fs__WEBPACK_IMPORTED_MODULE_3__["readFile"])(Object(path__WEBPACK_IMPORTED_MODULE_1__["resolve"])(repoRootPath, versionFilename))).toString().split('\n')[0];
+
+ if (!version) {
+ throw new Error(`[bazel_tools] Failed on reading bazel tools versions\n ${versionFilename} file do not contain any version set`);
+ }
+
+ return version;
}
-//# sourceMappingURL=publish.js.map
+async function isBazelBinAvailable() {
+ try {
+ await Object(_child_process__WEBPACK_IMPORTED_MODULE_2__["spawn"])('bazel', ['--version'], {
+ stdio: 'pipe'
+ });
+ return true;
+ } catch {
+ return false;
+ }
+}
-/***/ }),
-/* 483 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+async function isBazeliskInstalled(bazeliskVersion) {
+ try {
+ const {
+ stdout: bazeliskPkgInstallStdout
+ } = await Object(_child_process__WEBPACK_IMPORTED_MODULE_2__["spawn"])('npm', ['ls', '--global', '--parseable', '--long', `@bazel/bazelisk@${bazeliskVersion}`], {
+ stdio: 'pipe'
+ });
+ return bazeliskPkgInstallStdout.includes(`@bazel/bazelisk@${bazeliskVersion}`);
+ } catch {
+ return false;
+ }
+}
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return publishBehavior; });
-/* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(33);
-/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(477);
-/** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */
+async function tryRemoveBazeliskFromYarnGlobal() {
+ try {
+ // Check if Bazelisk is installed on the yarn global scope
+ const {
+ stdout: bazeliskPkgInstallStdout
+ } = await Object(_child_process__WEBPACK_IMPORTED_MODULE_2__["spawn"])('yarn', ['global', 'list'], {
+ stdio: 'pipe'
+ }); // Bazelisk was found on yarn global scope so lets remove it
+ if (bazeliskPkgInstallStdout.includes(`@bazel/bazelisk@`)) {
+ await Object(_child_process__WEBPACK_IMPORTED_MODULE_2__["spawn"])('yarn', ['global', 'remove', `@bazel/bazelisk`], {
+ stdio: 'pipe'
+ });
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"].info(`[bazel_tools] bazelisk was installed on Yarn global packages and is now removed`);
+ return true;
+ }
-function publishBehavior(value) {
- return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(new _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__["BehaviorSubject"](value))(source); };
+ return false;
+ } catch {
+ return false;
+ }
}
-//# sourceMappingURL=publishBehavior.js.map
+async function installBazelTools(repoRootPath) {
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"].debug(`[bazel_tools] reading bazel tools versions from version files`);
+ const bazeliskVersion = await readBazelToolsVersionFile(repoRootPath, '.bazeliskversion');
+ const bazelVersion = await readBazelToolsVersionFile(repoRootPath, '.bazelversion'); // Check what globals are installed
-/***/ }),
-/* 484 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"].debug(`[bazel_tools] verify if bazelisk is installed`); // Check if we need to remove bazelisk from yarn
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return publishLast; });
-/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51);
-/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(477);
-/** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */
+ await tryRemoveBazeliskFromYarnGlobal(); // Test if bazelisk is already installed in the correct version
+ const isBazeliskPkgInstalled = await isBazeliskInstalled(bazeliskVersion); // Test if bazel bin is available
-function publishLast() {
- return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(new _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__["AsyncSubject"]())(source); };
-}
-//# sourceMappingURL=publishLast.js.map
+ const isBazelBinAlreadyAvailable = await isBazelBinAvailable(); // Install bazelisk if not installed
+
+ if (!isBazeliskPkgInstalled || !isBazelBinAlreadyAvailable) {
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"].info(`[bazel_tools] installing Bazel tools`);
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"].debug(`[bazel_tools] bazelisk is not installed. Installing @bazel/bazelisk@${bazeliskVersion} and bazel@${bazelVersion}`);
+ await Object(_child_process__WEBPACK_IMPORTED_MODULE_2__["spawn"])('npm', ['install', '--global', `@bazel/bazelisk@${bazeliskVersion}`], {
+ env: {
+ USE_BAZEL_VERSION: bazelVersion
+ },
+ stdio: 'pipe'
+ });
+ const isBazelBinAvailableAfterInstall = await isBazelBinAvailable();
+
+ if (!isBazelBinAvailableAfterInstall) {
+ throw new Error(dedent__WEBPACK_IMPORTED_MODULE_0___default.a`
+ [bazel_tools] an error occurred when installing the Bazel tools. Please make sure you have access to npm globally installed modules on your $PATH
+ `);
+ }
+ }
+ _log__WEBPACK_IMPORTED_MODULE_4__["log"].success(`[bazel_tools] all bazel tools are correctly installed`);
+}
/***/ }),
-/* 485 */
+/* 547 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return publishReplay; });
-/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
-/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(477);
-/** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runBazel", function() { return runBazel; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runIBazel", function() { return runIBazel; });
+/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(235);
+/* 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__(9);
+/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(548);
+/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(551);
+/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(342);
+/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(341);
+/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(462);
+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 publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) {
- if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') {
- scheduler = selectorOrScheduler;
- }
- var selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined;
- var subject = new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__["ReplaySubject"](bufferSize, windowTime, scheduler);
- return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(function () { return subject; }, selector)(source); };
-}
-//# sourceMappingURL=publishReplay.js.map
+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.
+ */
-/***/ }),
-/* 486 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return race; });
-/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19);
-/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(107);
-/** PURE_IMPORTS_START _util_isArray,_observable_race PURE_IMPORTS_END */
-function race() {
- var observables = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i] = arguments[_i];
- }
- return function raceOperatorFunction(source) {
- if (observables.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(observables[0])) {
- observables = observables[0];
- }
- return source.lift.call(_observable_race__WEBPACK_IMPORTED_MODULE_1__["race"].apply(void 0, [source].concat(observables)));
- };
-}
-//# sourceMappingURL=race.js.map
-/***/ }),
-/* 487 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return repeat; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
-/** PURE_IMPORTS_START tslib,_Subscriber,_observable_empty PURE_IMPORTS_END */
+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_4__["spawn"])(bazelCommandRunner, bazelArgs, bazelOpts);
+ const bazelLogs$ = new rxjs__WEBPACK_IMPORTED_MODULE_1__["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
-function repeat(count) {
- if (count === void 0) {
- count = -1;
- }
- return function (source) {
- if (count === 0) {
- return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_2__["empty"])();
- }
- else if (count < 0) {
- return source.lift(new RepeatOperator(-1, source));
- }
- else {
- return source.lift(new RepeatOperator(count - 1, source));
- }
- };
-}
-var RepeatOperator = /*@__PURE__*/ (function () {
- function RepeatOperator(count, source) {
- this.count = count;
- this.source = source;
- }
- RepeatOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source));
- };
- return RepeatOperator;
-}());
-var RepeatSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RepeatSubscriber, _super);
- function RepeatSubscriber(destination, count, source) {
- var _this = _super.call(this, destination) || this;
- _this.count = count;
- _this.source = source;
- return _this;
- }
- RepeatSubscriber.prototype.complete = function () {
- if (!this.isStopped) {
- var _a = this, source = _a.source, count = _a.count;
- if (count === 0) {
- return _super.prototype.complete.call(this);
- }
- else if (count > -1) {
- this.count = count - 1;
- }
- source.subscribe(this._unsubscribeAndRecycle());
- }
- };
- return RepeatSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=repeat.js.map
+ const bazelLogSubscription = rxjs__WEBPACK_IMPORTED_MODULE_1__["merge"](Object(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__["observeLines"])(bazelProc.stdout).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["tap"])(line => _log__WEBPACK_IMPORTED_MODULE_5__["log"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`))), Object(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_3__["observeLines"])(bazelProc.stderr).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["tap"])(line => _log__WEBPACK_IMPORTED_MODULE_5__["log"].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_5__["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 _errors__WEBPACK_IMPORTED_MODULE_6__["CliError"](`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
+ }));
+}
/***/ }),
-/* 488 */
+/* 548 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return repeatWhen; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_Subject,_innerSubscribe PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(129);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__["audit"]; });
+/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(130);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__["auditTime"]; });
+/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(131);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__["buffer"]; });
-function repeatWhen(notifier) {
- return function (source) { return source.lift(new RepeatWhenOperator(notifier)); };
-}
-var RepeatWhenOperator = /*@__PURE__*/ (function () {
- function RepeatWhenOperator(notifier) {
- this.notifier = notifier;
- }
- RepeatWhenOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source));
- };
- return RepeatWhenOperator;
-}());
-var RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RepeatWhenSubscriber, _super);
- function RepeatWhenSubscriber(destination, notifier, source) {
- var _this = _super.call(this, destination) || this;
- _this.notifier = notifier;
- _this.source = source;
- _this.sourceIsBeingSubscribedTo = true;
- return _this;
- }
- RepeatWhenSubscriber.prototype.notifyNext = function () {
- this.sourceIsBeingSubscribedTo = true;
- this.source.subscribe(this);
- };
- RepeatWhenSubscriber.prototype.notifyComplete = function () {
- if (this.sourceIsBeingSubscribedTo === false) {
- return _super.prototype.complete.call(this);
- }
- };
- RepeatWhenSubscriber.prototype.complete = function () {
- this.sourceIsBeingSubscribedTo = false;
- if (!this.isStopped) {
- if (!this.retries) {
- this.subscribeToRetries();
- }
- if (!this.retriesSubscription || this.retriesSubscription.closed) {
- return _super.prototype.complete.call(this);
- }
- this._unsubscribeAndRecycle();
- this.notifications.next(undefined);
- }
- };
- RepeatWhenSubscriber.prototype._unsubscribe = function () {
- var _a = this, notifications = _a.notifications, retriesSubscription = _a.retriesSubscription;
- if (notifications) {
- notifications.unsubscribe();
- this.notifications = undefined;
- }
- if (retriesSubscription) {
- retriesSubscription.unsubscribe();
- this.retriesSubscription = undefined;
- }
- this.retries = undefined;
- };
- RepeatWhenSubscriber.prototype._unsubscribeAndRecycle = function () {
- var _unsubscribe = this._unsubscribe;
- this._unsubscribe = null;
- _super.prototype._unsubscribeAndRecycle.call(this);
- this._unsubscribe = _unsubscribe;
- return this;
- };
- RepeatWhenSubscriber.prototype.subscribeToRetries = function () {
- this.notifications = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]();
- var retries;
- try {
- var notifier = this.notifier;
- retries = notifier(this.notifications);
- }
- catch (e) {
- return _super.prototype.complete.call(this);
- }
- this.retries = retries;
- this.retriesSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["innerSubscribe"])(retries, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["SimpleInnerSubscriber"](this));
- };
- return RepeatWhenSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=repeatWhen.js.map
+/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(132);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__["bufferCount"]; });
+/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(133);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__["bufferTime"]; });
-/***/ }),
-/* 489 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(134);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__["bufferToggle"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return retry; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(135);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__["bufferWhen"]; });
+/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(136);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__["catchError"]; });
-function retry(count) {
- if (count === void 0) {
- count = -1;
- }
- return function (source) { return source.lift(new RetryOperator(count, source)); };
-}
-var RetryOperator = /*@__PURE__*/ (function () {
- function RetryOperator(count, source) {
- this.count = count;
- this.source = source;
- }
- RetryOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));
- };
- return RetryOperator;
-}());
-var RetrySubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RetrySubscriber, _super);
- function RetrySubscriber(destination, count, source) {
- var _this = _super.call(this, destination) || this;
- _this.count = count;
- _this.source = source;
- return _this;
- }
- RetrySubscriber.prototype.error = function (err) {
- if (!this.isStopped) {
- var _a = this, source = _a.source, count = _a.count;
- if (count === 0) {
- return _super.prototype.error.call(this, err);
- }
- else if (count > -1) {
- this.count = count - 1;
- }
- source.subscribe(this._unsubscribeAndRecycle());
- }
- };
- return RetrySubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=retry.js.map
+/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(137);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__["combineAll"]; });
+/* harmony import */ var _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(138);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestAll", function() { return _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_9__["combineLatestAll"]; });
-/***/ }),
-/* 490 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(144);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_10__["combineLatest"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return retryWhen; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_Subject,_innerSubscribe PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(143);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestWith", function() { return _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_11__["combineLatestWith"]; });
+/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(148);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_operators_concat__WEBPACK_IMPORTED_MODULE_12__["concat"]; });
+/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(102);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_13__["concatAll"]; });
-function retryWhen(notifier) {
- return function (source) { return source.lift(new RetryWhenOperator(notifier, source)); };
-}
-var RetryWhenOperator = /*@__PURE__*/ (function () {
- function RetryWhenOperator(notifier, source) {
- this.notifier = notifier;
- this.source = source;
- }
- RetryWhenOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));
- };
- return RetryWhenOperator;
-}());
-var RetryWhenSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RetryWhenSubscriber, _super);
- function RetryWhenSubscriber(destination, notifier, source) {
- var _this = _super.call(this, destination) || this;
- _this.notifier = notifier;
- _this.source = source;
- return _this;
- }
- RetryWhenSubscriber.prototype.error = function (err) {
- if (!this.isStopped) {
- var errors = this.errors;
- var retries = this.retries;
- var retriesSubscription = this.retriesSubscription;
- if (!retries) {
- errors = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]();
- try {
- var notifier = this.notifier;
- retries = notifier(errors);
- }
- catch (e) {
- return _super.prototype.error.call(this, e);
- }
- retriesSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["innerSubscribe"])(retries, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["SimpleInnerSubscriber"](this));
- }
- else {
- this.errors = undefined;
- this.retriesSubscription = undefined;
- }
- this._unsubscribeAndRecycle();
- this.errors = errors;
- this.retries = retries;
- this.retriesSubscription = retriesSubscription;
- errors.next(err);
- }
- };
- RetryWhenSubscriber.prototype._unsubscribe = function () {
- var _a = this, errors = _a.errors, retriesSubscription = _a.retriesSubscription;
- if (errors) {
- errors.unsubscribe();
- this.errors = undefined;
- }
- if (retriesSubscription) {
- retriesSubscription.unsubscribe();
- this.retriesSubscription = undefined;
- }
- this.retries = undefined;
- };
- RetryWhenSubscriber.prototype.notifyNext = function () {
- var _unsubscribe = this._unsubscribe;
- this._unsubscribe = null;
- this._unsubscribeAndRecycle();
- this._unsubscribe = _unsubscribe;
- this.source.subscribe(this);
- };
- return RetryWhenSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=retryWhen.js.map
+/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(145);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_14__["concatMap"]; });
+/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(146);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_15__["concatMapTo"]; });
-/***/ }),
-/* 491 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(147);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatWith", function() { return _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_16__["concatWith"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return sample; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_connect__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(149);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "connect", function() { return _internal_operators_connect__WEBPACK_IMPORTED_MODULE_17__["connect"]; });
+/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(151);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_18__["count"]; });
-function sample(notifier) {
- return function (source) { return source.lift(new SampleOperator(notifier)); };
-}
-var SampleOperator = /*@__PURE__*/ (function () {
- function SampleOperator(notifier) {
- this.notifier = notifier;
- }
- SampleOperator.prototype.call = function (subscriber, source) {
- var sampleSubscriber = new SampleSubscriber(subscriber);
- var subscription = source.subscribe(sampleSubscriber);
- subscription.add(Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(this.notifier, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](sampleSubscriber)));
- return subscription;
- };
- return SampleOperator;
-}());
-var SampleSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SampleSubscriber, _super);
- function SampleSubscriber() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.hasValue = false;
- return _this;
- }
- SampleSubscriber.prototype._next = function (value) {
- this.value = value;
- this.hasValue = true;
- };
- SampleSubscriber.prototype.notifyNext = function () {
- this.emitValue();
- };
- SampleSubscriber.prototype.notifyComplete = function () {
- this.emitValue();
- };
- SampleSubscriber.prototype.emitValue = function () {
- if (this.hasValue) {
- this.hasValue = false;
- this.destination.next(this.value);
- }
- };
- return SampleSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=sample.js.map
+/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(152);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_19__["debounce"]; });
+/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(153);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_20__["debounceTime"]; });
-/***/ }),
-/* 492 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(154);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_21__["defaultIfEmpty"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return sampleTime; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(56);
-/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(155);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_22__["delay"]; });
+/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(156);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_23__["delayWhen"]; });
+/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(160);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_24__["dematerialize"]; });
-function sampleTime(period, scheduler) {
- if (scheduler === void 0) {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"];
- }
- return function (source) { return source.lift(new SampleTimeOperator(period, scheduler)); };
-}
-var SampleTimeOperator = /*@__PURE__*/ (function () {
- function SampleTimeOperator(period, scheduler) {
- this.period = period;
- this.scheduler = scheduler;
- }
- SampleTimeOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));
- };
- return SampleTimeOperator;
-}());
-var SampleTimeSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SampleTimeSubscriber, _super);
- function SampleTimeSubscriber(destination, period, scheduler) {
- var _this = _super.call(this, destination) || this;
- _this.period = period;
- _this.scheduler = scheduler;
- _this.hasValue = false;
- _this.add(scheduler.schedule(dispatchNotification, period, { subscriber: _this, period: period }));
- return _this;
- }
- SampleTimeSubscriber.prototype._next = function (value) {
- this.lastValue = value;
- this.hasValue = true;
- };
- SampleTimeSubscriber.prototype.notifyNext = function () {
- if (this.hasValue) {
- this.hasValue = false;
- this.destination.next(this.lastValue);
- }
- };
- return SampleTimeSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-function dispatchNotification(state) {
- var subscriber = state.subscriber, period = state.period;
- subscriber.notifyNext();
- this.schedule(state, period);
-}
-//# sourceMappingURL=sampleTime.js.map
+/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(161);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_25__["distinct"]; });
+/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(162);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_26__["distinctUntilChanged"]; });
-/***/ }),
-/* 493 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(163);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_27__["distinctUntilKeyChanged"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return sequenceEqual; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SequenceEqualOperator", function() { return SequenceEqualOperator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SequenceEqualSubscriber", function() { return SequenceEqualSubscriber; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(164);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_28__["elementAt"]; });
+/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(166);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_29__["endWith"]; });
-function sequenceEqual(compareTo, comparator) {
- return function (source) { return source.lift(new SequenceEqualOperator(compareTo, comparator)); };
-}
-var SequenceEqualOperator = /*@__PURE__*/ (function () {
- function SequenceEqualOperator(compareTo, comparator) {
- this.compareTo = compareTo;
- this.comparator = comparator;
- }
- SequenceEqualOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator));
- };
- return SequenceEqualOperator;
-}());
+/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(167);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_30__["every"]; });
-var SequenceEqualSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SequenceEqualSubscriber, _super);
- function SequenceEqualSubscriber(destination, compareTo, comparator) {
- var _this = _super.call(this, destination) || this;
- _this.compareTo = compareTo;
- _this.comparator = comparator;
- _this._a = [];
- _this._b = [];
- _this._oneComplete = false;
- _this.destination.add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, _this)));
- return _this;
- }
- SequenceEqualSubscriber.prototype._next = function (value) {
- if (this._oneComplete && this._b.length === 0) {
- this.emit(false);
- }
- else {
- this._a.push(value);
- this.checkValues();
- }
- };
- SequenceEqualSubscriber.prototype._complete = function () {
- if (this._oneComplete) {
- this.emit(this._a.length === 0 && this._b.length === 0);
- }
- else {
- this._oneComplete = true;
- }
- this.unsubscribe();
- };
- SequenceEqualSubscriber.prototype.checkValues = function () {
- var _c = this, _a = _c._a, _b = _c._b, comparator = _c.comparator;
- while (_a.length > 0 && _b.length > 0) {
- var a = _a.shift();
- var b = _b.shift();
- var areEqual = false;
- try {
- areEqual = comparator ? comparator(a, b) : a === b;
- }
- catch (e) {
- this.destination.error(e);
- }
- if (!areEqual) {
- this.emit(false);
- }
- }
- };
- SequenceEqualSubscriber.prototype.emit = function (value) {
- var destination = this.destination;
- destination.next(value);
- destination.complete();
- };
- SequenceEqualSubscriber.prototype.nextB = function (value) {
- if (this._oneComplete && this._a.length === 0) {
- this.emit(false);
- }
- else {
- this._b.push(value);
- this.checkValues();
- }
- };
- SequenceEqualSubscriber.prototype.completeB = function () {
- if (this._oneComplete) {
- this.emit(this._a.length === 0 && this._b.length === 0);
- }
- else {
- this._oneComplete = true;
- }
- };
- return SequenceEqualSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
+/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(168);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_31__["exhaust"]; });
-var SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SequenceEqualCompareToSubscriber, _super);
- function SequenceEqualCompareToSubscriber(destination, parent) {
- var _this = _super.call(this, destination) || this;
- _this.parent = parent;
- return _this;
- }
- SequenceEqualCompareToSubscriber.prototype._next = function (value) {
- this.parent.nextB(value);
- };
- SequenceEqualCompareToSubscriber.prototype._error = function (err) {
- this.parent.error(err);
- this.unsubscribe();
- };
- SequenceEqualCompareToSubscriber.prototype._complete = function () {
- this.parent.completeB();
- this.unsubscribe();
- };
- return SequenceEqualCompareToSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=sequenceEqual.js.map
+/* harmony import */ var _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(169);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustAll", function() { return _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_32__["exhaustAll"]; });
+/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(170);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_33__["exhaustMap"]; });
-/***/ }),
-/* 494 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(171);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_34__["expand"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return share; });
-/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(477);
-/* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28);
-/** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(123);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_35__["filter"]; });
+/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(172);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_36__["finalize"]; });
+/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(173);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_37__["find"]; });
-function shareSubjectFactory() {
- return new _Subject__WEBPACK_IMPORTED_MODULE_2__["Subject"]();
-}
-function share() {
- return function (source) { return Object(_refCount__WEBPACK_IMPORTED_MODULE_1__["refCount"])()(Object(_multicast__WEBPACK_IMPORTED_MODULE_0__["multicast"])(shareSubjectFactory)(source)); };
-}
-//# sourceMappingURL=share.js.map
+/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(174);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_38__["findIndex"]; });
+/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(175);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_39__["first"]; });
-/***/ }),
-/* 495 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(176);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_40__["groupBy"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return shareReplay; });
-/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
-/** PURE_IMPORTS_START _ReplaySubject PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(158);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_41__["ignoreElements"]; });
-function shareReplay(configOrBufferSize, windowTime, scheduler) {
- var config;
- if (configOrBufferSize && typeof configOrBufferSize === 'object') {
- config = configOrBufferSize;
- }
- else {
- config = {
- bufferSize: configOrBufferSize,
- windowTime: windowTime,
- refCount: false,
- scheduler: scheduler
- };
- }
- return function (source) { return source.lift(shareReplayOperator(config)); };
-}
-function shareReplayOperator(_a) {
- var _b = _a.bufferSize, bufferSize = _b === void 0 ? Number.POSITIVE_INFINITY : _b, _c = _a.windowTime, windowTime = _c === void 0 ? Number.POSITIVE_INFINITY : _c, useRefCount = _a.refCount, scheduler = _a.scheduler;
- var subject;
- var refCount = 0;
- var subscription;
- var hasError = false;
- var isComplete = false;
- return function shareReplayOperation(source) {
- refCount++;
- var innerSub;
- if (!subject || hasError) {
- hasError = false;
- subject = new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__["ReplaySubject"](bufferSize, windowTime, scheduler);
- innerSub = subject.subscribe(this);
- subscription = source.subscribe({
- next: function (value) { subject.next(value); },
- error: function (err) {
- hasError = true;
- subject.error(err);
- },
- complete: function () {
- isComplete = true;
- subscription = undefined;
- subject.complete();
- },
- });
- }
- else {
- innerSub = subject.subscribe(this);
- }
- this.add(function () {
- refCount--;
- innerSub.unsubscribe();
- if (subscription && !isComplete && useRefCount && refCount === 0) {
- subscription.unsubscribe();
- subscription = undefined;
- subject = undefined;
- }
- });
- };
-}
-//# sourceMappingURL=shareReplay.js.map
+/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(177);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_42__["isEmpty"]; });
+/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(178);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_43__["last"]; });
-/***/ }),
-/* 496 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(96);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_44__["map"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "single", function() { return single; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(64);
-/** PURE_IMPORTS_START tslib,_Subscriber,_util_EmptyError PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(159);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_45__["mapTo"]; });
+/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(180);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_46__["materialize"]; });
+/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(181);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_47__["max"]; });
-function single(predicate) {
- return function (source) { return source.lift(new SingleOperator(predicate, source)); };
-}
-var SingleOperator = /*@__PURE__*/ (function () {
- function SingleOperator(predicate, source) {
- this.predicate = predicate;
- this.source = source;
- }
- SingleOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source));
- };
- return SingleOperator;
-}());
-var SingleSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SingleSubscriber, _super);
- function SingleSubscriber(destination, predicate, source) {
- var _this = _super.call(this, destination) || this;
- _this.predicate = predicate;
- _this.source = source;
- _this.seenValue = false;
- _this.index = 0;
- return _this;
- }
- SingleSubscriber.prototype.applySingleValue = function (value) {
- if (this.seenValue) {
- this.destination.error('Sequence contains more than one element');
- }
- else {
- this.seenValue = true;
- this.singleValue = value;
- }
- };
- SingleSubscriber.prototype._next = function (value) {
- var index = this.index++;
- if (this.predicate) {
- this.tryNext(value, index);
- }
- else {
- this.applySingleValue(value);
- }
- };
- SingleSubscriber.prototype.tryNext = function (value, index) {
- try {
- if (this.predicate(value, index, this.source)) {
- this.applySingleValue(value);
- }
- }
- catch (err) {
- this.destination.error(err);
- }
- };
- SingleSubscriber.prototype._complete = function () {
- var destination = this.destination;
- if (this.index > 0) {
- destination.next(this.seenValue ? this.singleValue : undefined);
- destination.complete();
- }
- else {
- destination.error(new _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__["EmptyError"]);
- }
- };
- return SingleSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=single.js.map
+/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(186);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_operators_merge__WEBPACK_IMPORTED_MODULE_48__["merge"]; });
+/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(103);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_49__["mergeAll"]; });
-/***/ }),
-/* 497 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(182);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_50__["flatMap"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return skip; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(104);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_51__["mergeMap"]; });
+/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(183);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_52__["mergeMapTo"]; });
-function skip(count) {
- return function (source) { return source.lift(new SkipOperator(count)); };
-}
-var SkipOperator = /*@__PURE__*/ (function () {
- function SkipOperator(total) {
- this.total = total;
- }
- SkipOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new SkipSubscriber(subscriber, this.total));
- };
- return SkipOperator;
-}());
-var SkipSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipSubscriber, _super);
- function SkipSubscriber(destination, total) {
- var _this = _super.call(this, destination) || this;
- _this.total = total;
- _this.count = 0;
- return _this;
- }
- SkipSubscriber.prototype._next = function (x) {
- if (++this.count > this.total) {
- this.destination.next(x);
- }
- };
- return SkipSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=skip.js.map
+/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(184);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_53__["mergeScan"]; });
+/* harmony import */ var _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(185);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeWith", function() { return _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_54__["mergeWith"]; });
-/***/ }),
-/* 498 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(187);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_55__["min"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return skipLast; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(63);
-/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(188);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_56__["multicast"]; });
+/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(75);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_57__["observeOn"]; });
+/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(118);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_58__["onErrorResumeNext"]; });
-function skipLast(count) {
- return function (source) { return source.lift(new SkipLastOperator(count)); };
-}
-var SkipLastOperator = /*@__PURE__*/ (function () {
- function SkipLastOperator(_skipCount) {
- this._skipCount = _skipCount;
- if (this._skipCount < 0) {
- throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__["ArgumentOutOfRangeError"];
- }
- }
- SkipLastOperator.prototype.call = function (subscriber, source) {
- if (this._skipCount === 0) {
- return source.subscribe(new _Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"](subscriber));
- }
- else {
- return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));
- }
- };
- return SkipLastOperator;
-}());
-var SkipLastSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipLastSubscriber, _super);
- function SkipLastSubscriber(destination, _skipCount) {
- var _this = _super.call(this, destination) || this;
- _this._skipCount = _skipCount;
- _this._count = 0;
- _this._ring = new Array(_skipCount);
- return _this;
- }
- SkipLastSubscriber.prototype._next = function (value) {
- var skipCount = this._skipCount;
- var count = this._count++;
- if (count < skipCount) {
- this._ring[count] = value;
- }
- else {
- var currentIndex = count % skipCount;
- var ring = this._ring;
- var oldValue = ring[currentIndex];
- ring[currentIndex] = value;
- this.destination.next(oldValue);
- }
- };
- return SkipLastSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=skipLast.js.map
+/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(189);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_59__["pairwise"]; });
+/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(549);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_operators_partition__WEBPACK_IMPORTED_MODULE_60__["partition"]; });
-/***/ }),
-/* 499 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(190);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_61__["pluck"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return skipUntil; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(191);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_62__["publish"]; });
+/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(192);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_63__["publishBehavior"]; });
-function skipUntil(notifier) {
- return function (source) { return source.lift(new SkipUntilOperator(notifier)); };
-}
-var SkipUntilOperator = /*@__PURE__*/ (function () {
- function SkipUntilOperator(notifier) {
- this.notifier = notifier;
- }
- SkipUntilOperator.prototype.call = function (destination, source) {
- return source.subscribe(new SkipUntilSubscriber(destination, this.notifier));
- };
- return SkipUntilOperator;
-}());
-var SkipUntilSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipUntilSubscriber, _super);
- function SkipUntilSubscriber(destination, notifier) {
- var _this = _super.call(this, destination) || this;
- _this.hasValue = false;
- var innerSubscriber = new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](_this);
- _this.add(innerSubscriber);
- _this.innerSubscription = innerSubscriber;
- var innerSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(notifier, innerSubscriber);
- if (innerSubscription !== innerSubscriber) {
- _this.add(innerSubscription);
- _this.innerSubscription = innerSubscription;
- }
- return _this;
- }
- SkipUntilSubscriber.prototype._next = function (value) {
- if (this.hasValue) {
- _super.prototype._next.call(this, value);
- }
- };
- SkipUntilSubscriber.prototype.notifyNext = function () {
- this.hasValue = true;
- if (this.innerSubscription) {
- this.innerSubscription.unsubscribe();
- }
- };
- SkipUntilSubscriber.prototype.notifyComplete = function () {
- };
- return SkipUntilSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=skipUntil.js.map
+/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(193);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_64__["publishLast"]; });
+/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(194);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_65__["publishReplay"]; });
-/***/ }),
-/* 500 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(550);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_operators_race__WEBPACK_IMPORTED_MODULE_66__["race"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return skipWhile; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(195);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "raceWith", function() { return _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_67__["raceWith"]; });
+/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(141);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_68__["reduce"]; });
-function skipWhile(predicate) {
- return function (source) { return source.lift(new SkipWhileOperator(predicate)); };
-}
-var SkipWhileOperator = /*@__PURE__*/ (function () {
- function SkipWhileOperator(predicate) {
- this.predicate = predicate;
- }
- SkipWhileOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));
- };
- return SkipWhileOperator;
-}());
-var SkipWhileSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipWhileSubscriber, _super);
- function SkipWhileSubscriber(destination, predicate) {
- var _this = _super.call(this, destination) || this;
- _this.predicate = predicate;
- _this.skipping = true;
- _this.index = 0;
- return _this;
- }
- SkipWhileSubscriber.prototype._next = function (value) {
- var destination = this.destination;
- if (this.skipping) {
- this.tryCallPredicate(value);
- }
- if (!this.skipping) {
- destination.next(value);
- }
- };
- SkipWhileSubscriber.prototype.tryCallPredicate = function (value) {
- try {
- var result = this.predicate(value, this.index++);
- this.skipping = Boolean(result);
- }
- catch (err) {
- this.destination.error(err);
- }
- };
- return SkipWhileSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=skipWhile.js.map
+/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(196);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_69__["repeat"]; });
+/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(197);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_70__["repeatWhen"]; });
-/***/ }),
-/* 501 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(198);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_71__["retry"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return startWith; });
-/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80);
-/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46);
-/** PURE_IMPORTS_START _observable_concat,_util_isScheduler PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(199);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_72__["retryWhen"]; });
+/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(28);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_73__["refCount"]; });
-function startWith() {
- var array = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- array[_i] = arguments[_i];
- }
- var scheduler = array[array.length - 1];
- if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__["isScheduler"])(scheduler)) {
- array.pop();
- return function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(array, source, scheduler); };
- }
- else {
- return function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(array, source); };
- }
-}
-//# sourceMappingURL=startWith.js.map
+/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(200);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_74__["sample"]; });
+/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(201);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_75__["sampleTime"]; });
-/***/ }),
-/* 502 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(202);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_76__["scan"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return subscribeOn; });
-/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(503);
-/** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(203);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_77__["sequenceEqual"]; });
-function subscribeOn(scheduler, delay) {
- if (delay === void 0) {
- delay = 0;
- }
- return function subscribeOnOperatorFunction(source) {
- return source.lift(new SubscribeOnOperator(scheduler, delay));
- };
-}
-var SubscribeOnOperator = /*@__PURE__*/ (function () {
- function SubscribeOnOperator(scheduler, delay) {
- this.scheduler = scheduler;
- this.delay = delay;
- }
- SubscribeOnOperator.prototype.call = function (subscriber, source) {
- return new _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__["SubscribeOnObservable"](source, this.delay, this.scheduler).subscribe(subscriber);
- };
- return SubscribeOnOperator;
-}());
-//# sourceMappingURL=subscribeOn.js.map
+/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(204);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_78__["share"]; });
+/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(205);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_79__["shareReplay"]; });
-/***/ }),
-/* 503 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(206);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_80__["single"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubscribeOnObservable", function() { return SubscribeOnObservable; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
-/* harmony import */ var _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(52);
-/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(99);
-/** PURE_IMPORTS_START tslib,_Observable,_scheduler_asap,_util_isNumeric PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(207);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_81__["skip"]; });
+/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(208);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_82__["skipLast"]; });
+/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(209);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_83__["skipUntil"]; });
+/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(210);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_84__["skipWhile"]; });
-var SubscribeOnObservable = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubscribeOnObservable, _super);
- function SubscribeOnObservable(source, delayTime, scheduler) {
- if (delayTime === void 0) {
- delayTime = 0;
- }
- if (scheduler === void 0) {
- scheduler = _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__["asap"];
- }
- var _this = _super.call(this) || this;
- _this.source = source;
- _this.delayTime = delayTime;
- _this.scheduler = scheduler;
- if (!Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_3__["isNumeric"])(delayTime) || delayTime < 0) {
- _this.delayTime = 0;
- }
- if (!scheduler || typeof scheduler.schedule !== 'function') {
- _this.scheduler = _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__["asap"];
- }
- return _this;
- }
- SubscribeOnObservable.create = function (source, delay, scheduler) {
- if (delay === void 0) {
- delay = 0;
- }
- if (scheduler === void 0) {
- scheduler = _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__["asap"];
- }
- return new SubscribeOnObservable(source, delay, scheduler);
- };
- SubscribeOnObservable.dispatch = function (arg) {
- var source = arg.source, subscriber = arg.subscriber;
- return this.add(source.subscribe(subscriber));
- };
- SubscribeOnObservable.prototype._subscribe = function (subscriber) {
- var delay = this.delayTime;
- var source = this.source;
- var scheduler = this.scheduler;
- return scheduler.schedule(SubscribeOnObservable.dispatch, delay, {
- source: source, subscriber: subscriber
- });
- };
- return SubscribeOnObservable;
-}(_Observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]));
+/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(211);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_85__["startWith"]; });
-//# sourceMappingURL=SubscribeOnObservable.js.map
+/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(77);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_86__["subscribeOn"]; });
+/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(212);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_87__["switchAll"]; });
-/***/ }),
-/* 504 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(213);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_88__["switchMap"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return switchAll; });
-/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(505);
-/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26);
-/** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(214);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_89__["switchMapTo"]; });
+/* harmony import */ var _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(215);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchScan", function() { return _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_90__["switchScan"]; });
-function switchAll() {
- return Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"]);
-}
-//# sourceMappingURL=switchAll.js.map
+/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(157);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_91__["take"]; });
+/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(179);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_92__["takeLast"]; });
-/***/ }),
-/* 505 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(216);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_93__["takeUntil"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return switchMap; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67);
-/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(217);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_94__["takeWhile"]; });
+/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(218);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_95__["tap"]; });
+/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(219);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_96__["throttle"]; });
+/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(220);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_97__["throttleTime"]; });
-function switchMap(project, resultSelector) {
- if (typeof resultSelector === 'function') {
- return function (source) { return source.pipe(switchMap(function (a, i) { return Object(_observable_from__WEBPACK_IMPORTED_MODULE_2__["from"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_1__["map"])(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };
- }
- return function (source) { return source.lift(new SwitchMapOperator(project)); };
-}
-var SwitchMapOperator = /*@__PURE__*/ (function () {
- function SwitchMapOperator(project) {
- this.project = project;
- }
- SwitchMapOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));
- };
- return SwitchMapOperator;
-}());
-var SwitchMapSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SwitchMapSubscriber, _super);
- function SwitchMapSubscriber(destination, project) {
- var _this = _super.call(this, destination) || this;
- _this.project = project;
- _this.index = 0;
- return _this;
- }
- SwitchMapSubscriber.prototype._next = function (value) {
- var result;
- var index = this.index++;
- try {
- result = this.project(value, index);
- }
- catch (error) {
- this.destination.error(error);
- return;
- }
- this._innerSub(result);
- };
- SwitchMapSubscriber.prototype._innerSub = function (result) {
- var innerSubscription = this.innerSubscription;
- if (innerSubscription) {
- innerSubscription.unsubscribe();
- }
- var innerSubscriber = new _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["SimpleInnerSubscriber"](this);
- var destination = this.destination;
- destination.add(innerSubscriber);
- this.innerSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["innerSubscribe"])(result, innerSubscriber);
- if (this.innerSubscription !== innerSubscriber) {
- destination.add(this.innerSubscription);
- }
- };
- SwitchMapSubscriber.prototype._complete = function () {
- var innerSubscription = this.innerSubscription;
- if (!innerSubscription || innerSubscription.closed) {
- _super.prototype._complete.call(this);
- }
- this.unsubscribe();
- };
- SwitchMapSubscriber.prototype._unsubscribe = function () {
- this.innerSubscription = undefined;
- };
- SwitchMapSubscriber.prototype.notifyComplete = function () {
- this.innerSubscription = undefined;
- if (this.isStopped) {
- _super.prototype._complete.call(this);
- }
- };
- SwitchMapSubscriber.prototype.notifyNext = function (innerValue) {
- this.destination.next(innerValue);
- };
- return SwitchMapSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=switchMap.js.map
+/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(165);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_98__["throwIfEmpty"]; });
+/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(221);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_99__["timeInterval"]; });
-/***/ }),
-/* 506 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(91);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_100__["timeout"]; });
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return switchMapTo; });
-/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(505);
-/** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */
+/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(222);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_101__["timeoutWith"]; });
-function switchMapTo(innerObservable, resultSelector) {
- return resultSelector ? Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(function () { return innerObservable; }, resultSelector) : Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(function () { return innerObservable; });
-}
-//# sourceMappingURL=switchMapTo.js.map
+/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(223);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_102__["timestamp"]; });
+/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(140);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_103__["toArray"]; });
+
+/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(224);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_104__["window"]; });
+
+/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(225);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_105__["windowCount"]; });
+
+/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(226);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_106__["windowTime"]; });
+
+/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(227);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_107__["windowToggle"]; });
+
+/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(228);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_108__["windowWhen"]; });
+
+/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(229);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_109__["withLatestFrom"]; });
+
+/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(232);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_operators_zip__WEBPACK_IMPORTED_MODULE_110__["zip"]; });
+
+/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(230);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_111__["zipAll"]; });
+
+/* harmony import */ var _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(231);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipWith", function() { return _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_112__["zipWith"]; });
-/***/ }),
-/* 507 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return takeUntil; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
-function takeUntil(notifier) {
- return function (source) { return source.lift(new TakeUntilOperator(notifier)); };
-}
-var TakeUntilOperator = /*@__PURE__*/ (function () {
- function TakeUntilOperator(notifier) {
- this.notifier = notifier;
- }
- TakeUntilOperator.prototype.call = function (subscriber, source) {
- var takeUntilSubscriber = new TakeUntilSubscriber(subscriber);
- var notifierSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(this.notifier, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](takeUntilSubscriber));
- if (notifierSubscription && !takeUntilSubscriber.seenValue) {
- takeUntilSubscriber.add(notifierSubscription);
- return source.subscribe(takeUntilSubscriber);
- }
- return takeUntilSubscriber;
- };
- return TakeUntilOperator;
-}());
-var TakeUntilSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeUntilSubscriber, _super);
- function TakeUntilSubscriber(destination) {
- var _this = _super.call(this, destination) || this;
- _this.seenValue = false;
- return _this;
- }
- TakeUntilSubscriber.prototype.notifyNext = function () {
- this.seenValue = true;
- this.complete();
- };
- TakeUntilSubscriber.prototype.notifyComplete = function () {
- };
- return TakeUntilSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=takeUntil.js.map
-/***/ }),
-/* 508 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return takeWhile; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
-function takeWhile(predicate, inclusive) {
- if (inclusive === void 0) {
- inclusive = false;
- }
- return function (source) {
- return source.lift(new TakeWhileOperator(predicate, inclusive));
- };
-}
-var TakeWhileOperator = /*@__PURE__*/ (function () {
- function TakeWhileOperator(predicate, inclusive) {
- this.predicate = predicate;
- this.inclusive = inclusive;
- }
- TakeWhileOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));
- };
- return TakeWhileOperator;
-}());
-var TakeWhileSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeWhileSubscriber, _super);
- function TakeWhileSubscriber(destination, predicate, inclusive) {
- var _this = _super.call(this, destination) || this;
- _this.predicate = predicate;
- _this.inclusive = inclusive;
- _this.index = 0;
- return _this;
- }
- TakeWhileSubscriber.prototype._next = function (value) {
- var destination = this.destination;
- var result;
- try {
- result = this.predicate(value, this.index++);
- }
- catch (err) {
- destination.error(err);
- return;
- }
- this.nextOrComplete(value, result);
- };
- TakeWhileSubscriber.prototype.nextOrComplete = function (value, predicateResult) {
- var destination = this.destination;
- if (Boolean(predicateResult)) {
- destination.next(value);
- }
- else {
- if (this.inclusive) {
- destination.next(value);
- }
- destination.complete();
- }
- };
- return TakeWhileSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=takeWhile.js.map
-/***/ }),
-/* 509 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return tap; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61);
-/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14);
-/** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */
-function tap(nextOrObserver, error, complete) {
- return function tapOperatorFunction(source) {
- return source.lift(new DoOperator(nextOrObserver, error, complete));
- };
-}
-var DoOperator = /*@__PURE__*/ (function () {
- function DoOperator(nextOrObserver, error, complete) {
- this.nextOrObserver = nextOrObserver;
- this.error = error;
- this.complete = complete;
- }
- DoOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));
- };
- return DoOperator;
-}());
-var TapSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TapSubscriber, _super);
- function TapSubscriber(destination, observerOrNext, error, complete) {
- var _this = _super.call(this, destination) || this;
- _this._tapNext = _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"];
- _this._tapError = _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"];
- _this._tapComplete = _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"];
- _this._tapError = error || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"];
- _this._tapComplete = complete || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"];
- if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_3__["isFunction"])(observerOrNext)) {
- _this._context = _this;
- _this._tapNext = observerOrNext;
- }
- else if (observerOrNext) {
- _this._context = observerOrNext;
- _this._tapNext = observerOrNext.next || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"];
- _this._tapError = observerOrNext.error || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"];
- _this._tapComplete = observerOrNext.complete || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"];
- }
- return _this;
- }
- TapSubscriber.prototype._next = function (value) {
- try {
- this._tapNext.call(this._context, value);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.destination.next(value);
- };
- TapSubscriber.prototype._error = function (err) {
- try {
- this._tapError.call(this._context, err);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.destination.error(err);
- };
- TapSubscriber.prototype._complete = function () {
- try {
- this._tapComplete.call(this._context);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- return this.destination.complete();
- };
- return TapSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=tap.js.map
-/***/ }),
-/* 510 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultThrottleConfig", function() { return defaultThrottleConfig; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
-var defaultThrottleConfig = {
- leading: true,
- trailing: false
-};
-function throttle(durationSelector, config) {
- if (config === void 0) {
- config = defaultThrottleConfig;
- }
- return function (source) { return source.lift(new ThrottleOperator(durationSelector, !!config.leading, !!config.trailing)); };
-}
-var ThrottleOperator = /*@__PURE__*/ (function () {
- function ThrottleOperator(durationSelector, leading, trailing) {
- this.durationSelector = durationSelector;
- this.leading = leading;
- this.trailing = trailing;
- }
- ThrottleOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));
- };
- return ThrottleOperator;
-}());
-var ThrottleSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ThrottleSubscriber, _super);
- function ThrottleSubscriber(destination, durationSelector, _leading, _trailing) {
- var _this = _super.call(this, destination) || this;
- _this.destination = destination;
- _this.durationSelector = durationSelector;
- _this._leading = _leading;
- _this._trailing = _trailing;
- _this._hasValue = false;
- return _this;
- }
- ThrottleSubscriber.prototype._next = function (value) {
- this._hasValue = true;
- this._sendValue = value;
- if (!this._throttled) {
- if (this._leading) {
- this.send();
- }
- else {
- this.throttle(value);
- }
- }
- };
- ThrottleSubscriber.prototype.send = function () {
- var _a = this, _hasValue = _a._hasValue, _sendValue = _a._sendValue;
- if (_hasValue) {
- this.destination.next(_sendValue);
- this.throttle(_sendValue);
- }
- this._hasValue = false;
- this._sendValue = undefined;
- };
- ThrottleSubscriber.prototype.throttle = function (value) {
- var duration = this.tryDurationSelector(value);
- if (!!duration) {
- this.add(this._throttled = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["innerSubscribe"])(duration, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleInnerSubscriber"](this)));
- }
- };
- ThrottleSubscriber.prototype.tryDurationSelector = function (value) {
- try {
- return this.durationSelector(value);
- }
- catch (err) {
- this.destination.error(err);
- return null;
- }
- };
- ThrottleSubscriber.prototype.throttlingDone = function () {
- var _a = this, _throttled = _a._throttled, _trailing = _a._trailing;
- if (_throttled) {
- _throttled.unsubscribe();
- }
- this._throttled = undefined;
- if (_trailing) {
- this.send();
- }
- };
- ThrottleSubscriber.prototype.notifyNext = function () {
- this.throttlingDone();
- };
- ThrottleSubscriber.prototype.notifyComplete = function () {
- this.throttlingDone();
- };
- return ThrottleSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_1__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=throttle.js.map
-/***/ }),
-/* 511 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return throttleTime; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(56);
-/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(510);
-/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */
-function throttleTime(duration, scheduler, config) {
- if (scheduler === void 0) {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"];
- }
- if (config === void 0) {
- config = _throttle__WEBPACK_IMPORTED_MODULE_3__["defaultThrottleConfig"];
- }
- return function (source) { return source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); };
-}
-var ThrottleTimeOperator = /*@__PURE__*/ (function () {
- function ThrottleTimeOperator(duration, scheduler, leading, trailing) {
- this.duration = duration;
- this.scheduler = scheduler;
- this.leading = leading;
- this.trailing = trailing;
- }
- ThrottleTimeOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing));
- };
- return ThrottleTimeOperator;
-}());
-var ThrottleTimeSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ThrottleTimeSubscriber, _super);
- function ThrottleTimeSubscriber(destination, duration, scheduler, leading, trailing) {
- var _this = _super.call(this, destination) || this;
- _this.duration = duration;
- _this.scheduler = scheduler;
- _this.leading = leading;
- _this.trailing = trailing;
- _this._hasTrailingValue = false;
- _this._trailingValue = null;
- return _this;
- }
- ThrottleTimeSubscriber.prototype._next = function (value) {
- if (this.throttled) {
- if (this.trailing) {
- this._trailingValue = value;
- this._hasTrailingValue = true;
- }
- }
- else {
- this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this }));
- if (this.leading) {
- this.destination.next(value);
- }
- else if (this.trailing) {
- this._trailingValue = value;
- this._hasTrailingValue = true;
- }
- }
- };
- ThrottleTimeSubscriber.prototype._complete = function () {
- if (this._hasTrailingValue) {
- this.destination.next(this._trailingValue);
- this.destination.complete();
- }
- else {
- this.destination.complete();
- }
- };
- ThrottleTimeSubscriber.prototype.clearThrottle = function () {
- var throttled = this.throttled;
- if (throttled) {
- if (this.trailing && this._hasTrailingValue) {
- this.destination.next(this._trailingValue);
- this._trailingValue = null;
- this._hasTrailingValue = false;
- }
- throttled.unsubscribe();
- this.remove(throttled);
- this.throttled = null;
- }
- };
- return ThrottleTimeSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-function dispatchNext(arg) {
- var subscriber = arg.subscriber;
- subscriber.clearThrottle();
-}
-//# sourceMappingURL=throttleTime.js.map
-/***/ }),
-/* 512 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return timeInterval; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeInterval", function() { return TimeInterval; });
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56);
-/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(472);
-/* harmony import */ var _observable_defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(92);
-/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67);
-/** PURE_IMPORTS_START _scheduler_async,_scan,_observable_defer,_map PURE_IMPORTS_END */
-function timeInterval(scheduler) {
- if (scheduler === void 0) {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"];
- }
- return function (source) {
- return Object(_observable_defer__WEBPACK_IMPORTED_MODULE_2__["defer"])(function () {
- return source.pipe(Object(_scan__WEBPACK_IMPORTED_MODULE_1__["scan"])(function (_a, value) {
- var current = _a.current;
- return ({ value: value, current: scheduler.now(), last: current });
- }, { current: scheduler.now(), value: undefined, last: undefined }), Object(_map__WEBPACK_IMPORTED_MODULE_3__["map"])(function (_a) {
- var current = _a.current, last = _a.last, value = _a.value;
- return new TimeInterval(value, current - last);
- }));
- });
- };
-}
-var TimeInterval = /*@__PURE__*/ (function () {
- function TimeInterval(value, interval) {
- this.value = value;
- this.interval = interval;
- }
- return TimeInterval;
-}());
-//# sourceMappingURL=timeInterval.js.map
-/***/ }),
-/* 513 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return timeout; });
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56);
-/* harmony import */ var _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);
-/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(514);
-/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(50);
-/** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */
-function timeout(due, scheduler) {
- if (scheduler === void 0) {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"];
- }
- return Object(_timeoutWith__WEBPACK_IMPORTED_MODULE_2__["timeoutWith"])(due, Object(_observable_throwError__WEBPACK_IMPORTED_MODULE_3__["throwError"])(new _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__["TimeoutError"]()), scheduler);
-}
-//# sourceMappingURL=timeout.js.map
-/***/ }),
-/* 514 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return timeoutWith; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56);
-/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(446);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_innerSubscribe PURE_IMPORTS_END */
-function timeoutWith(due, withObservable, scheduler) {
- if (scheduler === void 0) {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"];
- }
- return function (source) {
- var absoluteTimeout = Object(_util_isDate__WEBPACK_IMPORTED_MODULE_2__["isDate"])(due);
- var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);
- return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));
- };
-}
-var TimeoutWithOperator = /*@__PURE__*/ (function () {
- function TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler) {
- this.waitFor = waitFor;
- this.absoluteTimeout = absoluteTimeout;
- this.withObservable = withObservable;
- this.scheduler = scheduler;
- }
- TimeoutWithOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));
- };
- return TimeoutWithOperator;
-}());
-var TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TimeoutWithSubscriber, _super);
- function TimeoutWithSubscriber(destination, absoluteTimeout, waitFor, withObservable, scheduler) {
- var _this = _super.call(this, destination) || this;
- _this.absoluteTimeout = absoluteTimeout;
- _this.waitFor = waitFor;
- _this.withObservable = withObservable;
- _this.scheduler = scheduler;
- _this.scheduleTimeout();
- return _this;
- }
- TimeoutWithSubscriber.dispatchTimeout = function (subscriber) {
- var withObservable = subscriber.withObservable;
- subscriber._unsubscribeAndRecycle();
- subscriber.add(Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["innerSubscribe"])(withObservable, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["SimpleInnerSubscriber"](subscriber)));
- };
- TimeoutWithSubscriber.prototype.scheduleTimeout = function () {
- var action = this.action;
- if (action) {
- this.action = action.schedule(this, this.waitFor);
- }
- else {
- this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));
- }
- };
- TimeoutWithSubscriber.prototype._next = function (value) {
- if (!this.absoluteTimeout) {
- this.scheduleTimeout();
- }
- _super.prototype._next.call(this, value);
- };
- TimeoutWithSubscriber.prototype._unsubscribe = function () {
- this.action = undefined;
- this.scheduler = null;
- this.withObservable = null;
- };
- return TimeoutWithSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_3__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=timeoutWith.js.map
-/***/ }),
-/* 515 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return timestamp; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timestamp", function() { return Timestamp; });
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56);
-/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67);
-/** PURE_IMPORTS_START _scheduler_async,_map PURE_IMPORTS_END */
-function timestamp(scheduler) {
- if (scheduler === void 0) {
- scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"];
- }
- return Object(_map__WEBPACK_IMPORTED_MODULE_1__["map"])(function (value) { return new Timestamp(value, scheduler.now()); });
-}
-var Timestamp = /*@__PURE__*/ (function () {
- function Timestamp(value, timestamp) {
- this.value = value;
- this.timestamp = timestamp;
- }
- return Timestamp;
-}());
-//# sourceMappingURL=timestamp.js.map
-/***/ }),
-/* 516 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray; });
-/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(471);
-/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */
-function toArrayReducer(arr, item, index) {
- if (index === 0) {
- return [item];
- }
- arr.push(item);
- return arr;
-}
-function toArray() {
- return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(toArrayReducer, []);
-}
-//# sourceMappingURL=toArray.js.map
-/***/ }),
-/* 517 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return window; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28);
-/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91);
-/** PURE_IMPORTS_START tslib,_Subject,_innerSubscribe PURE_IMPORTS_END */
-function window(windowBoundaries) {
- return function windowOperatorFunction(source) {
- return source.lift(new WindowOperator(windowBoundaries));
- };
-}
-var WindowOperator = /*@__PURE__*/ (function () {
- function WindowOperator(windowBoundaries) {
- this.windowBoundaries = windowBoundaries;
- }
- WindowOperator.prototype.call = function (subscriber, source) {
- var windowSubscriber = new WindowSubscriber(subscriber);
- var sourceSubscription = source.subscribe(windowSubscriber);
- if (!sourceSubscription.closed) {
- windowSubscriber.add(Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["innerSubscribe"])(this.windowBoundaries, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["SimpleInnerSubscriber"](windowSubscriber)));
- }
- return sourceSubscription;
- };
- return WindowOperator;
-}());
-var WindowSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowSubscriber, _super);
- function WindowSubscriber(destination) {
- var _this = _super.call(this, destination) || this;
- _this.window = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]();
- destination.next(_this.window);
- return _this;
- }
- WindowSubscriber.prototype.notifyNext = function () {
- this.openWindow();
- };
- WindowSubscriber.prototype.notifyError = function (error) {
- this._error(error);
- };
- WindowSubscriber.prototype.notifyComplete = function () {
- this._complete();
- };
- WindowSubscriber.prototype._next = function (value) {
- this.window.next(value);
- };
- WindowSubscriber.prototype._error = function (err) {
- this.window.error(err);
- this.destination.error(err);
- };
- WindowSubscriber.prototype._complete = function () {
- this.window.complete();
- this.destination.complete();
- };
- WindowSubscriber.prototype._unsubscribe = function () {
- this.window = null;
- };
- WindowSubscriber.prototype.openWindow = function () {
- var prevWindow = this.window;
- if (prevWindow) {
- prevWindow.complete();
- }
- var destination = this.destination;
- var newWindow = this.window = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]();
- destination.next(newWindow);
- };
- return WindowSubscriber;
-}(_innerSubscribe__WEBPACK_IMPORTED_MODULE_2__["SimpleOuterSubscriber"]));
-//# sourceMappingURL=window.js.map
-/***/ }),
-/* 518 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return windowCount; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28);
-/** PURE_IMPORTS_START tslib,_Subscriber,_Subject PURE_IMPORTS_END */
-function windowCount(windowSize, startWindowEvery) {
- if (startWindowEvery === void 0) {
- startWindowEvery = 0;
- }
- return function windowCountOperatorFunction(source) {
- return source.lift(new WindowCountOperator(windowSize, startWindowEvery));
- };
-}
-var WindowCountOperator = /*@__PURE__*/ (function () {
- function WindowCountOperator(windowSize, startWindowEvery) {
- this.windowSize = windowSize;
- this.startWindowEvery = startWindowEvery;
- }
- WindowCountOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery));
- };
- return WindowCountOperator;
-}());
-var WindowCountSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowCountSubscriber, _super);
- function WindowCountSubscriber(destination, windowSize, startWindowEvery) {
- var _this = _super.call(this, destination) || this;
- _this.destination = destination;
- _this.windowSize = windowSize;
- _this.startWindowEvery = startWindowEvery;
- _this.windows = [new _Subject__WEBPACK_IMPORTED_MODULE_2__["Subject"]()];
- _this.count = 0;
- destination.next(_this.windows[0]);
- return _this;
- }
- WindowCountSubscriber.prototype._next = function (value) {
- var startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize;
- var destination = this.destination;
- var windowSize = this.windowSize;
- var windows = this.windows;
- var len = windows.length;
- for (var i = 0; i < len && !this.closed; i++) {
- windows[i].next(value);
- }
- var c = this.count - windowSize + 1;
- if (c >= 0 && c % startWindowEvery === 0 && !this.closed) {
- windows.shift().complete();
- }
- if (++this.count % startWindowEvery === 0 && !this.closed) {
- var window_1 = new _Subject__WEBPACK_IMPORTED_MODULE_2__["Subject"]();
- windows.push(window_1);
- destination.next(window_1);
- }
- };
- WindowCountSubscriber.prototype._error = function (err) {
- var windows = this.windows;
- if (windows) {
- while (windows.length > 0 && !this.closed) {
- windows.shift().error(err);
- }
- }
- this.destination.error(err);
- };
- WindowCountSubscriber.prototype._complete = function () {
- var windows = this.windows;
- if (windows) {
- while (windows.length > 0 && !this.closed) {
- windows.shift().complete();
- }
- }
- this.destination.complete();
- };
- WindowCountSubscriber.prototype._unsubscribe = function () {
- this.count = 0;
- this.windows = null;
- };
- return WindowCountSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"]));
-//# sourceMappingURL=windowCount.js.map
-/***/ }),
-/* 519 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return windowTime; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28);
-/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(56);
-/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
-/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(99);
-/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(46);
-/** PURE_IMPORTS_START tslib,_Subject,_scheduler_async,_Subscriber,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */
-function windowTime(windowTimeSpan) {
- var scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"];
- var windowCreationInterval = null;
- var maxWindowSize = Number.POSITIVE_INFINITY;
- if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(arguments[3])) {
- scheduler = arguments[3];
- }
- if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(arguments[2])) {
- scheduler = arguments[2];
- }
- else if (Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_4__["isNumeric"])(arguments[2])) {
- maxWindowSize = Number(arguments[2]);
- }
- if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(arguments[1])) {
- scheduler = arguments[1];
- }
- else if (Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_4__["isNumeric"])(arguments[1])) {
- windowCreationInterval = Number(arguments[1]);
- }
- return function windowTimeOperatorFunction(source) {
- return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler));
- };
-}
-var WindowTimeOperator = /*@__PURE__*/ (function () {
- function WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {
- this.windowTimeSpan = windowTimeSpan;
- this.windowCreationInterval = windowCreationInterval;
- this.maxWindowSize = maxWindowSize;
- this.scheduler = scheduler;
- }
- WindowTimeOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new WindowTimeSubscriber(subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler));
- };
- return WindowTimeOperator;
-}());
-var CountedSubject = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CountedSubject, _super);
- function CountedSubject() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this._numberOfNextedValues = 0;
- return _this;
- }
- CountedSubject.prototype.next = function (value) {
- this._numberOfNextedValues++;
- _super.prototype.next.call(this, value);
- };
- Object.defineProperty(CountedSubject.prototype, "numberOfNextedValues", {
- get: function () {
- return this._numberOfNextedValues;
- },
- enumerable: true,
- configurable: true
- });
- return CountedSubject;
-}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]));
-var WindowTimeSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowTimeSubscriber, _super);
- function WindowTimeSubscriber(destination, windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {
- var _this = _super.call(this, destination) || this;
- _this.destination = destination;
- _this.windowTimeSpan = windowTimeSpan;
- _this.windowCreationInterval = windowCreationInterval;
- _this.maxWindowSize = maxWindowSize;
- _this.scheduler = scheduler;
- _this.windows = [];
- var window = _this.openWindow();
- if (windowCreationInterval !== null && windowCreationInterval >= 0) {
- var closeState = { subscriber: _this, window: window, context: null };
- var creationState = { windowTimeSpan: windowTimeSpan, windowCreationInterval: windowCreationInterval, subscriber: _this, scheduler: scheduler };
- _this.add(scheduler.schedule(dispatchWindowClose, windowTimeSpan, closeState));
- _this.add(scheduler.schedule(dispatchWindowCreation, windowCreationInterval, creationState));
- }
- else {
- var timeSpanOnlyState = { subscriber: _this, window: window, windowTimeSpan: windowTimeSpan };
- _this.add(scheduler.schedule(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState));
- }
- return _this;
- }
- WindowTimeSubscriber.prototype._next = function (value) {
- var windows = this.windows;
- var len = windows.length;
- for (var i = 0; i < len; i++) {
- var window_1 = windows[i];
- if (!window_1.closed) {
- window_1.next(value);
- if (window_1.numberOfNextedValues >= this.maxWindowSize) {
- this.closeWindow(window_1);
- }
- }
- }
- };
- WindowTimeSubscriber.prototype._error = function (err) {
- var windows = this.windows;
- while (windows.length > 0) {
- windows.shift().error(err);
- }
- this.destination.error(err);
- };
- WindowTimeSubscriber.prototype._complete = function () {
- var windows = this.windows;
- while (windows.length > 0) {
- var window_2 = windows.shift();
- if (!window_2.closed) {
- window_2.complete();
- }
- }
- this.destination.complete();
- };
- WindowTimeSubscriber.prototype.openWindow = function () {
- var window = new CountedSubject();
- this.windows.push(window);
- var destination = this.destination;
- destination.next(window);
- return window;
- };
- WindowTimeSubscriber.prototype.closeWindow = function (window) {
- window.complete();
- var windows = this.windows;
- windows.splice(windows.indexOf(window), 1);
- };
- return WindowTimeSubscriber;
-}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"]));
-function dispatchWindowTimeSpanOnly(state) {
- var subscriber = state.subscriber, windowTimeSpan = state.windowTimeSpan, window = state.window;
- if (window) {
- subscriber.closeWindow(window);
- }
- state.window = subscriber.openWindow();
- this.schedule(state, windowTimeSpan);
-}
-function dispatchWindowCreation(state) {
- var windowTimeSpan = state.windowTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler, windowCreationInterval = state.windowCreationInterval;
- var window = subscriber.openWindow();
- var action = this;
- var context = { action: action, subscription: null };
- var timeSpanState = { subscriber: subscriber, window: window, context: context };
- context.subscription = scheduler.schedule(dispatchWindowClose, windowTimeSpan, timeSpanState);
- action.add(context.subscription);
- action.schedule(state, windowCreationInterval);
-}
-function dispatchWindowClose(state) {
- var subscriber = state.subscriber, window = state.window, context = state.context;
- if (context && context.action && context.subscription) {
- context.action.remove(context.subscription);
- }
- subscriber.closeWindow(window);
-}
-//# sourceMappingURL=windowTime.js.map
-/***/ }),
-/* 520 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return windowToggle; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28);
-/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18);
-/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70);
-/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(71);
-/** PURE_IMPORTS_START tslib,_Subject,_Subscription,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
-function windowToggle(openings, closingSelector) {
- return function (source) { return source.lift(new WindowToggleOperator(openings, closingSelector)); };
-}
-var WindowToggleOperator = /*@__PURE__*/ (function () {
- function WindowToggleOperator(openings, closingSelector) {
- this.openings = openings;
- this.closingSelector = closingSelector;
- }
- WindowToggleOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new WindowToggleSubscriber(subscriber, this.openings, this.closingSelector));
- };
- return WindowToggleOperator;
-}());
-var WindowToggleSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowToggleSubscriber, _super);
- function WindowToggleSubscriber(destination, openings, closingSelector) {
- var _this = _super.call(this, destination) || this;
- _this.openings = openings;
- _this.closingSelector = closingSelector;
- _this.contexts = [];
- _this.add(_this.openSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(_this, openings, openings));
- return _this;
- }
- WindowToggleSubscriber.prototype._next = function (value) {
- var contexts = this.contexts;
- if (contexts) {
- var len = contexts.length;
- for (var i = 0; i < len; i++) {
- contexts[i].window.next(value);
- }
- }
- };
- WindowToggleSubscriber.prototype._error = function (err) {
- var contexts = this.contexts;
- this.contexts = null;
- if (contexts) {
- var len = contexts.length;
- var index = -1;
- while (++index < len) {
- var context_1 = contexts[index];
- context_1.window.error(err);
- context_1.subscription.unsubscribe();
- }
- }
- _super.prototype._error.call(this, err);
- };
- WindowToggleSubscriber.prototype._complete = function () {
- var contexts = this.contexts;
- this.contexts = null;
- if (contexts) {
- var len = contexts.length;
- var index = -1;
- while (++index < len) {
- var context_2 = contexts[index];
- context_2.window.complete();
- context_2.subscription.unsubscribe();
- }
- }
- _super.prototype._complete.call(this);
- };
- WindowToggleSubscriber.prototype._unsubscribe = function () {
- var contexts = this.contexts;
- this.contexts = null;
- if (contexts) {
- var len = contexts.length;
- var index = -1;
- while (++index < len) {
- var context_3 = contexts[index];
- context_3.window.unsubscribe();
- context_3.subscription.unsubscribe();
- }
- }
- };
- WindowToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
- if (outerValue === this.openings) {
- var closingNotifier = void 0;
- try {
- var closingSelector = this.closingSelector;
- closingNotifier = closingSelector(innerValue);
- }
- catch (e) {
- return this.error(e);
- }
- var window_1 = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]();
- var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"]();
- var context_4 = { window: window_1, subscription: subscription };
- this.contexts.push(context_4);
- var innerSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, closingNotifier, context_4);
- if (innerSubscription.closed) {
- this.closeWindow(this.contexts.length - 1);
- }
- else {
- innerSubscription.context = context_4;
- subscription.add(innerSubscription);
- }
- this.destination.next(window_1);
- }
- else {
- this.closeWindow(this.contexts.indexOf(outerValue));
- }
- };
- WindowToggleSubscriber.prototype.notifyError = function (err) {
- this.error(err);
- };
- WindowToggleSubscriber.prototype.notifyComplete = function (inner) {
- if (inner !== this.openSubscription) {
- this.closeWindow(this.contexts.indexOf(inner.context));
- }
- };
- WindowToggleSubscriber.prototype.closeWindow = function (index) {
- if (index === -1) {
- return;
- }
- var contexts = this.contexts;
- var context = contexts[index];
- var window = context.window, subscription = context.subscription;
- contexts.splice(index, 1);
- window.complete();
- subscription.unsubscribe();
- };
- return WindowToggleSubscriber;
-}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"]));
-//# sourceMappingURL=windowToggle.js.map
-/***/ }),
-/* 521 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return windowWhen; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28);
-/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(70);
-/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(71);
-/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
-function windowWhen(closingSelector) {
- return function windowWhenOperatorFunction(source) {
- return source.lift(new WindowOperator(closingSelector));
- };
-}
-var WindowOperator = /*@__PURE__*/ (function () {
- function WindowOperator(closingSelector) {
- this.closingSelector = closingSelector;
- }
- WindowOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector));
- };
- return WindowOperator;
-}());
-var WindowSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowSubscriber, _super);
- function WindowSubscriber(destination, closingSelector) {
- var _this = _super.call(this, destination) || this;
- _this.destination = destination;
- _this.closingSelector = closingSelector;
- _this.openWindow();
- return _this;
- }
- WindowSubscriber.prototype.notifyNext = function (_outerValue, _innerValue, _outerIndex, _innerIndex, innerSub) {
- this.openWindow(innerSub);
- };
- WindowSubscriber.prototype.notifyError = function (error) {
- this._error(error);
- };
- WindowSubscriber.prototype.notifyComplete = function (innerSub) {
- this.openWindow(innerSub);
- };
- WindowSubscriber.prototype._next = function (value) {
- this.window.next(value);
- };
- WindowSubscriber.prototype._error = function (err) {
- this.window.error(err);
- this.destination.error(err);
- this.unsubscribeClosingNotification();
- };
- WindowSubscriber.prototype._complete = function () {
- this.window.complete();
- this.destination.complete();
- this.unsubscribeClosingNotification();
- };
- WindowSubscriber.prototype.unsubscribeClosingNotification = function () {
- if (this.closingNotification) {
- this.closingNotification.unsubscribe();
- }
- };
- WindowSubscriber.prototype.openWindow = function (innerSub) {
- if (innerSub === void 0) {
- innerSub = null;
- }
- if (innerSub) {
- this.remove(innerSub);
- innerSub.unsubscribe();
- }
- var prevWindow = this.window;
- if (prevWindow) {
- prevWindow.complete();
- }
- var window = this.window = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"]();
- this.destination.next(window);
- var closingNotifier;
- try {
- var closingSelector = this.closingSelector;
- closingNotifier = closingSelector();
- }
- catch (e) {
- this.destination.error(e);
- this.window.error(e);
- return;
- }
- this.add(this.closingNotification = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, closingNotifier));
- };
- return WindowSubscriber;
-}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"]));
-//# sourceMappingURL=windowWhen.js.map
-/***/ }),
-/* 522 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return withLatestFrom; });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(70);
-/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(71);
-/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
-function withLatestFrom() {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return function (source) {
- var project;
- if (typeof args[args.length - 1] === 'function') {
- project = args.pop();
- }
- var observables = args;
- return source.lift(new WithLatestFromOperator(observables, project));
- };
-}
-var WithLatestFromOperator = /*@__PURE__*/ (function () {
- function WithLatestFromOperator(observables, project) {
- this.observables = observables;
- this.project = project;
- }
- WithLatestFromOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));
- };
- return WithLatestFromOperator;
-}());
-var WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) {
- tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WithLatestFromSubscriber, _super);
- function WithLatestFromSubscriber(destination, observables, project) {
- var _this = _super.call(this, destination) || this;
- _this.observables = observables;
- _this.project = project;
- _this.toRespond = [];
- var len = observables.length;
- _this.values = new Array(len);
- for (var i = 0; i < len; i++) {
- _this.toRespond.push(i);
- }
- for (var i = 0; i < len; i++) {
- var observable = observables[i];
- _this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(_this, observable, undefined, i));
- }
- return _this;
- }
- WithLatestFromSubscriber.prototype.notifyNext = function (_outerValue, innerValue, outerIndex) {
- this.values[outerIndex] = innerValue;
- var toRespond = this.toRespond;
- if (toRespond.length > 0) {
- var found = toRespond.indexOf(outerIndex);
- if (found !== -1) {
- toRespond.splice(found, 1);
- }
- }
- };
- WithLatestFromSubscriber.prototype.notifyComplete = function () {
- };
- WithLatestFromSubscriber.prototype._next = function (value) {
- if (this.toRespond.length === 0) {
- var args = [value].concat(this.values);
- if (this.project) {
- this._tryProject(args);
- }
- else {
- this.destination.next(args);
- }
- }
- };
- WithLatestFromSubscriber.prototype._tryProject = function (args) {
- var result;
- try {
- result = this.project.apply(this, args);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.destination.next(result);
- };
- return WithLatestFromSubscriber;
-}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"]));
-//# sourceMappingURL=withLatestFrom.js.map
+
+
+
+
+
+
+
+
+
+
+
+//# sourceMappingURL=index.js.map
/***/ }),
-/* 523 */
+/* 549 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; });
-/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(111);
-/** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; });
+/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(122);
+/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(123);
-function zip() {
- var observables = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i] = arguments[_i];
- }
- return function zipOperatorFunction(source) {
- return source.lift.call(_observable_zip__WEBPACK_IMPORTED_MODULE_0__["zip"].apply(void 0, [source].concat(observables)));
+
+function partition(predicate, thisArg) {
+ return function (source) {
+ return [Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(predicate, thisArg)(source), Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__["not"])(predicate, thisArg))(source)];
};
}
-//# sourceMappingURL=zip.js.map
-
+//# sourceMappingURL=partition.js.map
/***/ }),
-/* 524 */
+/* 550 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return zipAll; });
-/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(111);
-/** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return race; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
+/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(119);
+/* harmony import */ var _raceWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(195);
-function zipAll(project) {
- return function (source) { return source.lift(new _observable_zip__WEBPACK_IMPORTED_MODULE_0__["ZipOperator"](project)); };
-}
-//# sourceMappingURL=zipAll.js.map
+function race() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ return _raceWith__WEBPACK_IMPORTED_MODULE_2__["raceWith"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spreadArray"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_1__["argsOrArgArray"])(args))));
+}
+//# sourceMappingURL=race.js.map
+
/***/ }),
-/* 525 */
+/* 551 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -59011,7 +56405,7 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
-var _observe_lines = __webpack_require__(526);
+var _observe_lines = __webpack_require__(552);
Object.keys(_observe_lines).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
@@ -59024,7 +56418,7 @@ Object.keys(_observe_lines).forEach(function (key) {
});
});
-var _observe_readable = __webpack_require__(527);
+var _observe_readable = __webpack_require__(553);
Object.keys(_observe_readable).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
@@ -59038,7 +56432,7 @@ Object.keys(_observe_readable).forEach(function (key) {
});
/***/ }),
-/* 526 */
+/* 552 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -59051,9 +56445,9 @@ exports.observeLines = observeLines;
var Rx = _interopRequireWildcard(__webpack_require__(9));
-var _operators = __webpack_require__(427);
+var _operators = __webpack_require__(548);
-var _observe_readable = __webpack_require__(527);
+var _observe_readable = __webpack_require__(553);
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); }
@@ -59116,7 +56510,7 @@ function observeLines(readable) {
}
/***/ }),
-/* 527 */
+/* 553 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -59129,7 +56523,7 @@ exports.observeReadable = observeReadable;
var Rx = _interopRequireWildcard(__webpack_require__(9));
-var _operators = __webpack_require__(427);
+var _operators = __webpack_require__(548);
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); }
@@ -59153,7 +56547,7 @@ function observeReadable(readable) {
}
/***/ }),
-/* 528 */
+/* 554 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -59161,7 +56555,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeYarnIntegrityFileIfExists", function() { return removeYarnIntegrityFileIfExists; });
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(231);
+/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(352);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
@@ -59184,7 +56578,7 @@ async function removeYarnIntegrityFileIfExists(nodeModulesPath) {
}
/***/ }),
-/* 529 */
+/* 555 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -59192,12 +56586,12 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupRemoteCache", function() { return setupRemoteCache; });
/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(132);
+/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(253);
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(221);
-/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(220);
+/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(342);
+/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(341);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
@@ -59287,13 +56681,13 @@ async function setupRemoteCache(repoRootPath) {
}
/***/ }),
-/* 530 */
+/* 556 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BuildCommand", function() { return BuildCommand; });
-/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(423);
+/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(544);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
@@ -59321,7 +56715,7 @@ const BuildCommand = {
};
/***/ }),
-/* 531 */
+/* 557 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -59329,15 +56723,15 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CleanCommand", function() { return CleanCommand; });
/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(240);
+/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(361);
/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(532);
+/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(558);
/* 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__(4);
/* 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__(423);
-/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(231);
-/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(220);
+/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(544);
+/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(352);
+/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(341);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
@@ -59433,20 +56827,20 @@ const CleanCommand = {
};
/***/ }),
-/* 532 */
+/* 558 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const readline = __webpack_require__(533);
-const chalk = __webpack_require__(534);
-const cliCursor = __webpack_require__(537);
-const cliSpinners = __webpack_require__(539);
-const logSymbols = __webpack_require__(541);
-const stripAnsi = __webpack_require__(547);
-const wcwidth = __webpack_require__(549);
-const isInteractive = __webpack_require__(553);
-const MuteStream = __webpack_require__(554);
+const readline = __webpack_require__(559);
+const chalk = __webpack_require__(560);
+const cliCursor = __webpack_require__(563);
+const cliSpinners = __webpack_require__(565);
+const logSymbols = __webpack_require__(567);
+const stripAnsi = __webpack_require__(573);
+const wcwidth = __webpack_require__(575);
+const isInteractive = __webpack_require__(579);
+const MuteStream = __webpack_require__(580);
const TEXT = Symbol('text');
const PREFIX_TEXT = Symbol('prefixText');
@@ -59799,23 +57193,23 @@ module.exports.promise = (action, options) => {
/***/ }),
-/* 533 */
+/* 559 */
/***/ (function(module, exports) {
module.exports = require("readline");
/***/ }),
-/* 534 */
+/* 560 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const ansiStyles = __webpack_require__(115);
-const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(121);
+const ansiStyles = __webpack_require__(236);
+const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(242);
const {
stringReplaceAll,
stringEncaseCRLFWithFirstIndex
-} = __webpack_require__(535);
+} = __webpack_require__(561);
// `supportsColor.level` → `ansiStyles.color[name]` mapping
const levelMapping = [
@@ -60016,7 +57410,7 @@ const chalkTag = (chalk, ...strings) => {
}
if (template === undefined) {
- template = __webpack_require__(536);
+ template = __webpack_require__(562);
}
return template(chalk, parts.join(''));
@@ -60045,7 +57439,7 @@ module.exports = chalk;
/***/ }),
-/* 535 */
+/* 561 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -60091,7 +57485,7 @@ module.exports = {
/***/ }),
-/* 536 */
+/* 562 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -60232,12 +57626,12 @@ module.exports = (chalk, temporary) => {
/***/ }),
-/* 537 */
+/* 563 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const restoreCursor = __webpack_require__(538);
+const restoreCursor = __webpack_require__(564);
let isHidden = false;
@@ -60274,13 +57668,13 @@ exports.toggle = (force, writableStream) => {
/***/ }),
-/* 538 */
+/* 564 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const onetime = __webpack_require__(152);
-const signalExit = __webpack_require__(161);
+const onetime = __webpack_require__(273);
+const signalExit = __webpack_require__(282);
module.exports = onetime(() => {
signalExit(() => {
@@ -60290,13 +57684,13 @@ module.exports = onetime(() => {
/***/ }),
-/* 539 */
+/* 565 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const spinners = Object.assign({}, __webpack_require__(540));
+const spinners = Object.assign({}, __webpack_require__(566));
const spinnersList = Object.keys(spinners);
@@ -60314,18 +57708,18 @@ module.exports.default = spinners;
/***/ }),
-/* 540 */
+/* 566 */
/***/ (function(module) {
module.exports = JSON.parse("{\"dots\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠹\",\"⠸\",\"⠼\",\"⠴\",\"⠦\",\"⠧\",\"⠇\",\"⠏\"]},\"dots2\":{\"interval\":80,\"frames\":[\"⣾\",\"⣽\",\"⣻\",\"⢿\",\"⡿\",\"⣟\",\"⣯\",\"⣷\"]},\"dots3\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠚\",\"⠞\",\"⠖\",\"⠦\",\"⠴\",\"⠲\",\"⠳\",\"⠓\"]},\"dots4\":{\"interval\":80,\"frames\":[\"⠄\",\"⠆\",\"⠇\",\"⠋\",\"⠙\",\"⠸\",\"⠰\",\"⠠\",\"⠰\",\"⠸\",\"⠙\",\"⠋\",\"⠇\",\"⠆\"]},\"dots5\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\"]},\"dots6\":{\"interval\":80,\"frames\":[\"⠁\",\"⠉\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠤\",\"⠄\",\"⠄\",\"⠤\",\"⠴\",\"⠲\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠚\",\"⠙\",\"⠉\",\"⠁\"]},\"dots7\":{\"interval\":80,\"frames\":[\"⠈\",\"⠉\",\"⠋\",\"⠓\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠖\",\"⠦\",\"⠤\",\"⠠\",\"⠠\",\"⠤\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\",\"⠉\",\"⠈\"]},\"dots8\":{\"interval\":80,\"frames\":[\"⠁\",\"⠁\",\"⠉\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠤\",\"⠄\",\"⠄\",\"⠤\",\"⠠\",\"⠠\",\"⠤\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\",\"⠉\",\"⠈\",\"⠈\"]},\"dots9\":{\"interval\":80,\"frames\":[\"⢹\",\"⢺\",\"⢼\",\"⣸\",\"⣇\",\"⡧\",\"⡗\",\"⡏\"]},\"dots10\":{\"interval\":80,\"frames\":[\"⢄\",\"⢂\",\"⢁\",\"⡁\",\"⡈\",\"⡐\",\"⡠\"]},\"dots11\":{\"interval\":100,\"frames\":[\"⠁\",\"⠂\",\"⠄\",\"⡀\",\"⢀\",\"⠠\",\"⠐\",\"⠈\"]},\"dots12\":{\"interval\":80,\"frames\":[\"⢀⠀\",\"⡀⠀\",\"⠄⠀\",\"⢂⠀\",\"⡂⠀\",\"⠅⠀\",\"⢃⠀\",\"⡃⠀\",\"⠍⠀\",\"⢋⠀\",\"⡋⠀\",\"⠍⠁\",\"⢋⠁\",\"⡋⠁\",\"⠍⠉\",\"⠋⠉\",\"⠋⠉\",\"⠉⠙\",\"⠉⠙\",\"⠉⠩\",\"⠈⢙\",\"⠈⡙\",\"⢈⠩\",\"⡀⢙\",\"⠄⡙\",\"⢂⠩\",\"⡂⢘\",\"⠅⡘\",\"⢃⠨\",\"⡃⢐\",\"⠍⡐\",\"⢋⠠\",\"⡋⢀\",\"⠍⡁\",\"⢋⠁\",\"⡋⠁\",\"⠍⠉\",\"⠋⠉\",\"⠋⠉\",\"⠉⠙\",\"⠉⠙\",\"⠉⠩\",\"⠈⢙\",\"⠈⡙\",\"⠈⠩\",\"⠀⢙\",\"⠀⡙\",\"⠀⠩\",\"⠀⢘\",\"⠀⡘\",\"⠀⠨\",\"⠀⢐\",\"⠀⡐\",\"⠀⠠\",\"⠀⢀\",\"⠀⡀\"]},\"dots8Bit\":{\"interval\":80,\"frames\":[\"⠀\",\"⠁\",\"⠂\",\"⠃\",\"⠄\",\"⠅\",\"⠆\",\"⠇\",\"⡀\",\"⡁\",\"⡂\",\"⡃\",\"⡄\",\"⡅\",\"⡆\",\"⡇\",\"⠈\",\"⠉\",\"⠊\",\"⠋\",\"⠌\",\"⠍\",\"⠎\",\"⠏\",\"⡈\",\"⡉\",\"⡊\",\"⡋\",\"⡌\",\"⡍\",\"⡎\",\"⡏\",\"⠐\",\"⠑\",\"⠒\",\"⠓\",\"⠔\",\"⠕\",\"⠖\",\"⠗\",\"⡐\",\"⡑\",\"⡒\",\"⡓\",\"⡔\",\"⡕\",\"⡖\",\"⡗\",\"⠘\",\"⠙\",\"⠚\",\"⠛\",\"⠜\",\"⠝\",\"⠞\",\"⠟\",\"⡘\",\"⡙\",\"⡚\",\"⡛\",\"⡜\",\"⡝\",\"⡞\",\"⡟\",\"⠠\",\"⠡\",\"⠢\",\"⠣\",\"⠤\",\"⠥\",\"⠦\",\"⠧\",\"⡠\",\"⡡\",\"⡢\",\"⡣\",\"⡤\",\"⡥\",\"⡦\",\"⡧\",\"⠨\",\"⠩\",\"⠪\",\"⠫\",\"⠬\",\"⠭\",\"⠮\",\"⠯\",\"⡨\",\"⡩\",\"⡪\",\"⡫\",\"⡬\",\"⡭\",\"⡮\",\"⡯\",\"⠰\",\"⠱\",\"⠲\",\"⠳\",\"⠴\",\"⠵\",\"⠶\",\"⠷\",\"⡰\",\"⡱\",\"⡲\",\"⡳\",\"⡴\",\"⡵\",\"⡶\",\"⡷\",\"⠸\",\"⠹\",\"⠺\",\"⠻\",\"⠼\",\"⠽\",\"⠾\",\"⠿\",\"⡸\",\"⡹\",\"⡺\",\"⡻\",\"⡼\",\"⡽\",\"⡾\",\"⡿\",\"⢀\",\"⢁\",\"⢂\",\"⢃\",\"⢄\",\"⢅\",\"⢆\",\"⢇\",\"⣀\",\"⣁\",\"⣂\",\"⣃\",\"⣄\",\"⣅\",\"⣆\",\"⣇\",\"⢈\",\"⢉\",\"⢊\",\"⢋\",\"⢌\",\"⢍\",\"⢎\",\"⢏\",\"⣈\",\"⣉\",\"⣊\",\"⣋\",\"⣌\",\"⣍\",\"⣎\",\"⣏\",\"⢐\",\"⢑\",\"⢒\",\"⢓\",\"⢔\",\"⢕\",\"⢖\",\"⢗\",\"⣐\",\"⣑\",\"⣒\",\"⣓\",\"⣔\",\"⣕\",\"⣖\",\"⣗\",\"⢘\",\"⢙\",\"⢚\",\"⢛\",\"⢜\",\"⢝\",\"⢞\",\"⢟\",\"⣘\",\"⣙\",\"⣚\",\"⣛\",\"⣜\",\"⣝\",\"⣞\",\"⣟\",\"⢠\",\"⢡\",\"⢢\",\"⢣\",\"⢤\",\"⢥\",\"⢦\",\"⢧\",\"⣠\",\"⣡\",\"⣢\",\"⣣\",\"⣤\",\"⣥\",\"⣦\",\"⣧\",\"⢨\",\"⢩\",\"⢪\",\"⢫\",\"⢬\",\"⢭\",\"⢮\",\"⢯\",\"⣨\",\"⣩\",\"⣪\",\"⣫\",\"⣬\",\"⣭\",\"⣮\",\"⣯\",\"⢰\",\"⢱\",\"⢲\",\"⢳\",\"⢴\",\"⢵\",\"⢶\",\"⢷\",\"⣰\",\"⣱\",\"⣲\",\"⣳\",\"⣴\",\"⣵\",\"⣶\",\"⣷\",\"⢸\",\"⢹\",\"⢺\",\"⢻\",\"⢼\",\"⢽\",\"⢾\",\"⢿\",\"⣸\",\"⣹\",\"⣺\",\"⣻\",\"⣼\",\"⣽\",\"⣾\",\"⣿\"]},\"line\":{\"interval\":130,\"frames\":[\"-\",\"\\\\\",\"|\",\"/\"]},\"line2\":{\"interval\":100,\"frames\":[\"⠂\",\"-\",\"–\",\"—\",\"–\",\"-\"]},\"pipe\":{\"interval\":100,\"frames\":[\"┤\",\"┘\",\"┴\",\"└\",\"├\",\"┌\",\"┬\",\"┐\"]},\"simpleDots\":{\"interval\":400,\"frames\":[\". \",\".. \",\"...\",\" \"]},\"simpleDotsScrolling\":{\"interval\":200,\"frames\":[\". \",\".. \",\"...\",\" ..\",\" .\",\" \"]},\"star\":{\"interval\":70,\"frames\":[\"✶\",\"✸\",\"✹\",\"✺\",\"✹\",\"✷\"]},\"star2\":{\"interval\":80,\"frames\":[\"+\",\"x\",\"*\"]},\"flip\":{\"interval\":70,\"frames\":[\"_\",\"_\",\"_\",\"-\",\"`\",\"`\",\"'\",\"´\",\"-\",\"_\",\"_\",\"_\"]},\"hamburger\":{\"interval\":100,\"frames\":[\"☱\",\"☲\",\"☴\"]},\"growVertical\":{\"interval\":120,\"frames\":[\"▁\",\"▃\",\"▄\",\"▅\",\"▆\",\"▇\",\"▆\",\"▅\",\"▄\",\"▃\"]},\"growHorizontal\":{\"interval\":120,\"frames\":[\"▏\",\"▎\",\"▍\",\"▌\",\"▋\",\"▊\",\"▉\",\"▊\",\"▋\",\"▌\",\"▍\",\"▎\"]},\"balloon\":{\"interval\":140,\"frames\":[\" \",\".\",\"o\",\"O\",\"@\",\"*\",\" \"]},\"balloon2\":{\"interval\":120,\"frames\":[\".\",\"o\",\"O\",\"°\",\"O\",\"o\",\".\"]},\"noise\":{\"interval\":100,\"frames\":[\"▓\",\"▒\",\"░\"]},\"bounce\":{\"interval\":120,\"frames\":[\"⠁\",\"⠂\",\"⠄\",\"⠂\"]},\"boxBounce\":{\"interval\":120,\"frames\":[\"▖\",\"▘\",\"▝\",\"▗\"]},\"boxBounce2\":{\"interval\":100,\"frames\":[\"▌\",\"▀\",\"▐\",\"▄\"]},\"triangle\":{\"interval\":50,\"frames\":[\"◢\",\"◣\",\"◤\",\"◥\"]},\"arc\":{\"interval\":100,\"frames\":[\"◜\",\"◠\",\"◝\",\"◞\",\"◡\",\"◟\"]},\"circle\":{\"interval\":120,\"frames\":[\"◡\",\"⊙\",\"◠\"]},\"squareCorners\":{\"interval\":180,\"frames\":[\"◰\",\"◳\",\"◲\",\"◱\"]},\"circleQuarters\":{\"interval\":120,\"frames\":[\"◴\",\"◷\",\"◶\",\"◵\"]},\"circleHalves\":{\"interval\":50,\"frames\":[\"◐\",\"◓\",\"◑\",\"◒\"]},\"squish\":{\"interval\":100,\"frames\":[\"╫\",\"╪\"]},\"toggle\":{\"interval\":250,\"frames\":[\"⊶\",\"⊷\"]},\"toggle2\":{\"interval\":80,\"frames\":[\"▫\",\"▪\"]},\"toggle3\":{\"interval\":120,\"frames\":[\"□\",\"■\"]},\"toggle4\":{\"interval\":100,\"frames\":[\"■\",\"□\",\"▪\",\"▫\"]},\"toggle5\":{\"interval\":100,\"frames\":[\"▮\",\"▯\"]},\"toggle6\":{\"interval\":300,\"frames\":[\"ဝ\",\"၀\"]},\"toggle7\":{\"interval\":80,\"frames\":[\"⦾\",\"⦿\"]},\"toggle8\":{\"interval\":100,\"frames\":[\"◍\",\"◌\"]},\"toggle9\":{\"interval\":100,\"frames\":[\"◉\",\"◎\"]},\"toggle10\":{\"interval\":100,\"frames\":[\"㊂\",\"㊀\",\"㊁\"]},\"toggle11\":{\"interval\":50,\"frames\":[\"⧇\",\"⧆\"]},\"toggle12\":{\"interval\":120,\"frames\":[\"☗\",\"☖\"]},\"toggle13\":{\"interval\":80,\"frames\":[\"=\",\"*\",\"-\"]},\"arrow\":{\"interval\":100,\"frames\":[\"←\",\"↖\",\"↑\",\"↗\",\"→\",\"↘\",\"↓\",\"↙\"]},\"arrow2\":{\"interval\":80,\"frames\":[\"⬆️ \",\"↗️ \",\"➡️ \",\"↘️ \",\"⬇️ \",\"↙️ \",\"⬅️ \",\"↖️ \"]},\"arrow3\":{\"interval\":120,\"frames\":[\"▹▹▹▹▹\",\"▸▹▹▹▹\",\"▹▸▹▹▹\",\"▹▹▸▹▹\",\"▹▹▹▸▹\",\"▹▹▹▹▸\"]},\"bouncingBar\":{\"interval\":80,\"frames\":[\"[ ]\",\"[= ]\",\"[== ]\",\"[=== ]\",\"[ ===]\",\"[ ==]\",\"[ =]\",\"[ ]\",\"[ =]\",\"[ ==]\",\"[ ===]\",\"[====]\",\"[=== ]\",\"[== ]\",\"[= ]\"]},\"bouncingBall\":{\"interval\":80,\"frames\":[\"( ● )\",\"( ● )\",\"( ● )\",\"( ● )\",\"( ●)\",\"( ● )\",\"( ● )\",\"( ● )\",\"( ● )\",\"(● )\"]},\"smiley\":{\"interval\":200,\"frames\":[\"😄 \",\"😝 \"]},\"monkey\":{\"interval\":300,\"frames\":[\"🙈 \",\"🙈 \",\"🙉 \",\"🙊 \"]},\"hearts\":{\"interval\":100,\"frames\":[\"💛 \",\"💙 \",\"💜 \",\"💚 \",\"❤️ \"]},\"clock\":{\"interval\":100,\"frames\":[\"🕛 \",\"🕐 \",\"🕑 \",\"🕒 \",\"🕓 \",\"🕔 \",\"🕕 \",\"🕖 \",\"🕗 \",\"🕘 \",\"🕙 \",\"🕚 \"]},\"earth\":{\"interval\":180,\"frames\":[\"🌍 \",\"🌎 \",\"🌏 \"]},\"material\":{\"interval\":17,\"frames\":[\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"███████▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"██████████▁▁▁▁▁▁▁▁▁▁\",\"███████████▁▁▁▁▁▁▁▁▁\",\"█████████████▁▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁▁██████████████▁▁▁▁\",\"▁▁▁██████████████▁▁▁\",\"▁▁▁▁█████████████▁▁▁\",\"▁▁▁▁██████████████▁▁\",\"▁▁▁▁██████████████▁▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁▁██████████████\",\"▁▁▁▁▁▁██████████████\",\"▁▁▁▁▁▁▁█████████████\",\"▁▁▁▁▁▁▁█████████████\",\"▁▁▁▁▁▁▁▁████████████\",\"▁▁▁▁▁▁▁▁████████████\",\"▁▁▁▁▁▁▁▁▁███████████\",\"▁▁▁▁▁▁▁▁▁███████████\",\"▁▁▁▁▁▁▁▁▁▁██████████\",\"▁▁▁▁▁▁▁▁▁▁██████████\",\"▁▁▁▁▁▁▁▁▁▁▁▁████████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"███████████▁▁▁▁▁▁▁▁▁\",\"████████████▁▁▁▁▁▁▁▁\",\"████████████▁▁▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁▁▁█████████████▁▁▁▁\",\"▁▁▁▁▁████████████▁▁▁\",\"▁▁▁▁▁████████████▁▁▁\",\"▁▁▁▁▁▁███████████▁▁▁\",\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\"▁▁▁▁▁▁▁▁▁▁█████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\"]},\"moon\":{\"interval\":80,\"frames\":[\"🌑 \",\"🌒 \",\"🌓 \",\"🌔 \",\"🌕 \",\"🌖 \",\"🌗 \",\"🌘 \"]},\"runner\":{\"interval\":140,\"frames\":[\"🚶 \",\"🏃 \"]},\"pong\":{\"interval\":80,\"frames\":[\"▐⠂ ▌\",\"▐⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂▌\",\"▐ ⠠▌\",\"▐ ⡀▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐⠠ ▌\"]},\"shark\":{\"interval\":120,\"frames\":[\"▐|\\\\____________▌\",\"▐_|\\\\___________▌\",\"▐__|\\\\__________▌\",\"▐___|\\\\_________▌\",\"▐____|\\\\________▌\",\"▐_____|\\\\_______▌\",\"▐______|\\\\______▌\",\"▐_______|\\\\_____▌\",\"▐________|\\\\____▌\",\"▐_________|\\\\___▌\",\"▐__________|\\\\__▌\",\"▐___________|\\\\_▌\",\"▐____________|\\\\▌\",\"▐____________/|▌\",\"▐___________/|_▌\",\"▐__________/|__▌\",\"▐_________/|___▌\",\"▐________/|____▌\",\"▐_______/|_____▌\",\"▐______/|______▌\",\"▐_____/|_______▌\",\"▐____/|________▌\",\"▐___/|_________▌\",\"▐__/|__________▌\",\"▐_/|___________▌\",\"▐/|____________▌\"]},\"dqpb\":{\"interval\":100,\"frames\":[\"d\",\"q\",\"p\",\"b\"]},\"weather\":{\"interval\":100,\"frames\":[\"☀️ \",\"☀️ \",\"☀️ \",\"🌤 \",\"⛅️ \",\"🌥 \",\"☁️ \",\"🌧 \",\"🌨 \",\"🌧 \",\"🌨 \",\"🌧 \",\"🌨 \",\"⛈ \",\"🌨 \",\"🌧 \",\"🌨 \",\"☁️ \",\"🌥 \",\"⛅️ \",\"🌤 \",\"☀️ \",\"☀️ \"]},\"christmas\":{\"interval\":400,\"frames\":[\"🌲\",\"🎄\"]},\"grenade\":{\"interval\":80,\"frames\":[\"، \",\"′ \",\" ´ \",\" ‾ \",\" ⸌\",\" ⸊\",\" |\",\" ⁎\",\" ⁕\",\" ෴ \",\" ⁓\",\" \",\" \",\" \"]},\"point\":{\"interval\":125,\"frames\":[\"∙∙∙\",\"●∙∙\",\"∙●∙\",\"∙∙●\",\"∙∙∙\"]},\"layer\":{\"interval\":150,\"frames\":[\"-\",\"=\",\"≡\"]},\"betaWave\":{\"interval\":80,\"frames\":[\"ρββββββ\",\"βρβββββ\",\"ββρββββ\",\"βββρβββ\",\"ββββρββ\",\"βββββρβ\",\"ββββββρ\"]},\"aesthetic\":{\"interval\":80,\"frames\":[\"▰▱▱▱▱▱▱\",\"▰▰▱▱▱▱▱\",\"▰▰▰▱▱▱▱\",\"▰▰▰▰▱▱▱\",\"▰▰▰▰▰▱▱\",\"▰▰▰▰▰▰▱\",\"▰▰▰▰▰▰▰\",\"▰▱▱▱▱▱▱\"]}}");
/***/ }),
-/* 541 */
+/* 567 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const chalk = __webpack_require__(542);
+const chalk = __webpack_require__(568);
const isSupported = process.platform !== 'win32' || process.env.CI || process.env.TERM === 'xterm-256color';
@@ -60347,16 +57741,16 @@ module.exports = isSupported ? main : fallbacks;
/***/ }),
-/* 542 */
+/* 568 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const escapeStringRegexp = __webpack_require__(357);
-const ansiStyles = __webpack_require__(543);
-const stdoutColor = __webpack_require__(544).stdout;
+const escapeStringRegexp = __webpack_require__(478);
+const ansiStyles = __webpack_require__(569);
+const stdoutColor = __webpack_require__(570).stdout;
-const template = __webpack_require__(546);
+const template = __webpack_require__(572);
const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');
@@ -60582,12 +57976,12 @@ module.exports.default = module.exports; // For TypeScript
/***/ }),
-/* 543 */
+/* 569 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(module) {
-const colorConvert = __webpack_require__(359);
+const colorConvert = __webpack_require__(480);
const wrapAnsi16 = (fn, offset) => function () {
const code = fn.apply(colorConvert, arguments);
@@ -60752,16 +58146,16 @@ Object.defineProperty(module, 'exports', {
get: assembleStyles
});
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(116)(module)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(237)(module)))
/***/ }),
-/* 544 */
+/* 570 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const os = __webpack_require__(122);
-const hasFlag = __webpack_require__(545);
+const os = __webpack_require__(243);
+const hasFlag = __webpack_require__(571);
const env = process.env;
@@ -60893,7 +58287,7 @@ module.exports = {
/***/ }),
-/* 545 */
+/* 571 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -60908,7 +58302,7 @@ module.exports = (flag, argv) => {
/***/ }),
-/* 546 */
+/* 572 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -61043,18 +58437,18 @@ module.exports = (chalk, tmp) => {
/***/ }),
-/* 547 */
+/* 573 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const ansiRegex = __webpack_require__(548);
+const ansiRegex = __webpack_require__(574);
module.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
/***/ }),
-/* 548 */
+/* 574 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -61071,14 +58465,14 @@ module.exports = ({onlyFirst = false} = {}) => {
/***/ }),
-/* 549 */
+/* 575 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var defaults = __webpack_require__(550)
-var combining = __webpack_require__(552)
+var defaults = __webpack_require__(576)
+var combining = __webpack_require__(578)
var DEFAULTS = {
nul: 0,
@@ -61177,10 +58571,10 @@ function bisearch(ucs) {
/***/ }),
-/* 550 */
+/* 576 */
/***/ (function(module, exports, __webpack_require__) {
-var clone = __webpack_require__(551);
+var clone = __webpack_require__(577);
module.exports = function(options, defaults) {
options = options || {};
@@ -61195,7 +58589,7 @@ module.exports = function(options, defaults) {
};
/***/ }),
-/* 551 */
+/* 577 */
/***/ (function(module, exports, __webpack_require__) {
var clone = (function() {
@@ -61367,7 +58761,7 @@ if ( true && module.exports) {
/***/ }),
-/* 552 */
+/* 578 */
/***/ (function(module, exports) {
module.exports = [
@@ -61423,7 +58817,7 @@ module.exports = [
/***/ }),
-/* 553 */
+/* 579 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -61439,10 +58833,10 @@ module.exports = ({stream = process.stdout} = {}) => {
/***/ }),
-/* 554 */
+/* 580 */
/***/ (function(module, exports, __webpack_require__) {
-var Stream = __webpack_require__(173)
+var Stream = __webpack_require__(294)
module.exports = MuteStream
@@ -61590,7 +58984,7 @@ MuteStream.prototype.close = proxy('close')
/***/ }),
-/* 555 */
+/* 581 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -61598,15 +58992,15 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResetCommand", function() { return ResetCommand; });
/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(240);
+/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(361);
/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(532);
+/* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(558);
/* 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__(4);
/* 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__(423);
-/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(231);
-/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(220);
+/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(544);
+/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(352);
+/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(341);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
@@ -61714,7 +59108,7 @@ const ResetCommand = {
};
/***/ }),
-/* 556 */
+/* 582 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -61722,10 +59116,10 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RunCommand", function() { return RunCommand; });
/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(341);
-/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(220);
-/* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(557);
-/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(340);
+/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(462);
+/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(341);
+/* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(583);
+/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(461);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
@@ -61783,7 +59177,7 @@ const RunCommand = {
};
/***/ }),
-/* 557 */
+/* 583 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -61838,13 +59232,13 @@ async function parallelize(items, fn, concurrency = 4) {
}
/***/ }),
-/* 558 */
+/* 584 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WatchCommand", function() { return WatchCommand; });
-/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(423);
+/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(544);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
@@ -61875,19 +59269,19 @@ const WatchCommand = {
};
/***/ }),
-/* 559 */
+/* 585 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runCommand", function() { return runCommand; });
-/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(131);
+/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(252);
/* 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 _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(341);
-/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(220);
-/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(340);
-/* harmony import */ var _utils_projects_tree__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(422);
-/* harmony import */ var _utils_kibana__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(560);
+/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(462);
+/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(341);
+/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(461);
+/* harmony import */ var _utils_projects_tree__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(543);
+/* harmony import */ var _utils_kibana__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(586);
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; }
@@ -62006,7 +59400,7 @@ function toArray(value) {
}
/***/ }),
-/* 560 */
+/* 586 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -62014,15 +59408,15 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Kibana", function() { return Kibana; });
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(132);
+/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(253);
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(561);
+/* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(587);
/* harmony import */ var multimatch__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(multimatch__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(333);
+/* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(454);
/* harmony import */ var is_path_inside__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(is_path_inside__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(409);
-/* harmony import */ var _projects__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(340);
-/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(564);
+/* harmony import */ var _yarn_lock__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(530);
+/* harmony import */ var _projects__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(461);
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(590);
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; }
@@ -62186,15 +59580,15 @@ class Kibana {
}
/***/ }),
-/* 561 */
+/* 587 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const minimatch = __webpack_require__(247);
-const arrayUnion = __webpack_require__(242);
-const arrayDiffer = __webpack_require__(562);
-const arrify = __webpack_require__(563);
+const minimatch = __webpack_require__(368);
+const arrayUnion = __webpack_require__(363);
+const arrayDiffer = __webpack_require__(588);
+const arrify = __webpack_require__(589);
module.exports = (list, patterns, options = {}) => {
list = arrify(list);
@@ -62218,7 +59612,7 @@ module.exports = (list, patterns, options = {}) => {
/***/ }),
-/* 562 */
+/* 588 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -62233,7 +59627,7 @@ module.exports = arrayDiffer;
/***/ }),
-/* 563 */
+/* 589 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -62263,7 +59657,7 @@ module.exports = arrify;
/***/ }),
-/* 564 */
+/* 590 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -62323,15 +59717,15 @@ function getProjectPaths({
}
/***/ }),
-/* 565 */
+/* 591 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _build_bazel_production_projects__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(566);
+/* harmony import */ var _build_bazel_production_projects__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(592);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildBazelProductionProjects", function() { return _build_bazel_production_projects__WEBPACK_IMPORTED_MODULE_0__["buildBazelProductionProjects"]; });
-/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(807);
+/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(833);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildNonBazelProductionProjects", function() { return _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_1__["buildNonBazelProductionProjects"]; });
/*
@@ -62345,24 +59739,24 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/* 566 */
+/* 592 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildBazelProductionProjects", function() { return buildBazelProductionProjects; });
-/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(567);
+/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(593);
/* 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__(779);
+/* harmony import */ var globby__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(805);
/* 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__(4);
/* 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__(807);
-/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(423);
-/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(231);
-/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(220);
-/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(343);
-/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(340);
+/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(833);
+/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(544);
+/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(352);
+/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(341);
+/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(464);
+/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(461);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
@@ -62452,22 +59846,22 @@ async function applyCorrectPermissions(project, kibanaRoot, buildRoot) {
}
/***/ }),
-/* 567 */
+/* 593 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const EventEmitter = __webpack_require__(164);
+const EventEmitter = __webpack_require__(285);
const path = __webpack_require__(4);
-const os = __webpack_require__(122);
-const pMap = __webpack_require__(568);
-const arrify = __webpack_require__(563);
-const globby = __webpack_require__(571);
-const hasGlob = __webpack_require__(763);
-const cpFile = __webpack_require__(765);
-const junk = __webpack_require__(775);
-const pFilter = __webpack_require__(776);
-const CpyError = __webpack_require__(778);
+const os = __webpack_require__(243);
+const pMap = __webpack_require__(594);
+const arrify = __webpack_require__(589);
+const globby = __webpack_require__(597);
+const hasGlob = __webpack_require__(789);
+const cpFile = __webpack_require__(791);
+const junk = __webpack_require__(801);
+const pFilter = __webpack_require__(802);
+const CpyError = __webpack_require__(804);
const defaultOptions = {
ignoreJunk: true
@@ -62618,12 +60012,12 @@ module.exports = (source, destination, {
/***/ }),
-/* 568 */
+/* 594 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const AggregateError = __webpack_require__(569);
+const AggregateError = __webpack_require__(595);
module.exports = async (
iterable,
@@ -62706,13 +60100,13 @@ module.exports = async (
/***/ }),
-/* 569 */
+/* 595 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const indentString = __webpack_require__(570);
-const cleanStack = __webpack_require__(338);
+const indentString = __webpack_require__(596);
+const cleanStack = __webpack_require__(459);
const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, '');
@@ -62760,7 +60154,7 @@ module.exports = AggregateError;
/***/ }),
-/* 570 */
+/* 596 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -62802,17 +60196,17 @@ module.exports = (string, count = 1, options) => {
/***/ }),
-/* 571 */
+/* 597 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const fs = __webpack_require__(132);
-const arrayUnion = __webpack_require__(572);
-const glob = __webpack_require__(244);
-const fastGlob = __webpack_require__(574);
-const dirGlob = __webpack_require__(757);
-const gitignore = __webpack_require__(760);
+const fs = __webpack_require__(253);
+const arrayUnion = __webpack_require__(598);
+const glob = __webpack_require__(365);
+const fastGlob = __webpack_require__(600);
+const dirGlob = __webpack_require__(783);
+const gitignore = __webpack_require__(786);
const DEFAULT_FILTER = () => false;
@@ -62957,12 +60351,12 @@ module.exports.gitignore = gitignore;
/***/ }),
-/* 572 */
+/* 598 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var arrayUniq = __webpack_require__(573);
+var arrayUniq = __webpack_require__(599);
module.exports = function () {
return arrayUniq([].concat.apply([], arguments));
@@ -62970,7 +60364,7 @@ module.exports = function () {
/***/ }),
-/* 573 */
+/* 599 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -63039,10 +60433,10 @@ if ('Set' in global) {
/***/ }),
-/* 574 */
+/* 600 */
/***/ (function(module, exports, __webpack_require__) {
-const pkg = __webpack_require__(575);
+const pkg = __webpack_require__(601);
module.exports = pkg.async;
module.exports.default = pkg.async;
@@ -63055,19 +60449,19 @@ module.exports.generateTasks = pkg.generateTasks;
/***/ }),
-/* 575 */
+/* 601 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-var optionsManager = __webpack_require__(576);
-var taskManager = __webpack_require__(577);
-var reader_async_1 = __webpack_require__(728);
-var reader_stream_1 = __webpack_require__(752);
-var reader_sync_1 = __webpack_require__(753);
-var arrayUtils = __webpack_require__(755);
-var streamUtils = __webpack_require__(756);
+var optionsManager = __webpack_require__(602);
+var taskManager = __webpack_require__(603);
+var reader_async_1 = __webpack_require__(754);
+var reader_stream_1 = __webpack_require__(778);
+var reader_sync_1 = __webpack_require__(779);
+var arrayUtils = __webpack_require__(781);
+var streamUtils = __webpack_require__(782);
/**
* Synchronous API.
*/
@@ -63133,7 +60527,7 @@ function isString(source) {
/***/ }),
-/* 576 */
+/* 602 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -63171,13 +60565,13 @@ exports.prepare = prepare;
/***/ }),
-/* 577 */
+/* 603 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-var patternUtils = __webpack_require__(578);
+var patternUtils = __webpack_require__(604);
/**
* Generate tasks based on parent directory of each pattern.
*/
@@ -63268,16 +60662,16 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask;
/***/ }),
-/* 578 */
+/* 604 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var path = __webpack_require__(4);
-var globParent = __webpack_require__(579);
-var isGlob = __webpack_require__(266);
-var micromatch = __webpack_require__(582);
+var globParent = __webpack_require__(605);
+var isGlob = __webpack_require__(387);
+var micromatch = __webpack_require__(608);
var GLOBSTAR = '**';
/**
* Return true for static pattern.
@@ -63423,16 +60817,16 @@ exports.matchAny = matchAny;
/***/ }),
-/* 579 */
+/* 605 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var path = __webpack_require__(4);
-var isglob = __webpack_require__(580);
-var pathDirname = __webpack_require__(581);
-var isWin32 = __webpack_require__(122).platform() === 'win32';
+var isglob = __webpack_require__(606);
+var pathDirname = __webpack_require__(607);
+var isWin32 = __webpack_require__(243).platform() === 'win32';
module.exports = function globParent(str) {
// flip windows path separators
@@ -63454,7 +60848,7 @@ module.exports = function globParent(str) {
/***/ }),
-/* 580 */
+/* 606 */
/***/ (function(module, exports, __webpack_require__) {
/*!
@@ -63464,7 +60858,7 @@ module.exports = function globParent(str) {
* Licensed under the MIT License.
*/
-var isExtglob = __webpack_require__(267);
+var isExtglob = __webpack_require__(388);
module.exports = function isGlob(str) {
if (typeof str !== 'string' || str === '') {
@@ -63485,14 +60879,14 @@ module.exports = function isGlob(str) {
/***/ }),
-/* 581 */
+/* 607 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var path = __webpack_require__(4);
-var inspect = __webpack_require__(113).inspect;
+var inspect = __webpack_require__(234).inspect;
function assertPath(path) {
if (typeof path !== 'string') {
@@ -63635,7 +61029,7 @@ module.exports.win32 = win32;
/***/ }),
-/* 582 */
+/* 608 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -63645,19 +61039,19 @@ module.exports.win32 = win32;
* Module dependencies
*/
-var util = __webpack_require__(113);
-var braces = __webpack_require__(583);
-var toRegex = __webpack_require__(584);
-var extend = __webpack_require__(696);
+var util = __webpack_require__(234);
+var braces = __webpack_require__(609);
+var toRegex = __webpack_require__(610);
+var extend = __webpack_require__(722);
/**
* Local dependencies
*/
-var compilers = __webpack_require__(698);
-var parsers = __webpack_require__(724);
-var cache = __webpack_require__(725);
-var utils = __webpack_require__(726);
+var compilers = __webpack_require__(724);
+var parsers = __webpack_require__(750);
+var cache = __webpack_require__(751);
+var utils = __webpack_require__(752);
var MAX_LENGTH = 1024 * 64;
/**
@@ -64519,7 +61913,7 @@ module.exports = micromatch;
/***/ }),
-/* 583 */
+/* 609 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -64529,18 +61923,18 @@ module.exports = micromatch;
* Module dependencies
*/
-var toRegex = __webpack_require__(584);
-var unique = __webpack_require__(604);
-var extend = __webpack_require__(605);
+var toRegex = __webpack_require__(610);
+var unique = __webpack_require__(630);
+var extend = __webpack_require__(631);
/**
* Local dependencies
*/
-var compilers = __webpack_require__(607);
-var parsers = __webpack_require__(622);
-var Braces = __webpack_require__(627);
-var utils = __webpack_require__(608);
+var compilers = __webpack_require__(633);
+var parsers = __webpack_require__(648);
+var Braces = __webpack_require__(653);
+var utils = __webpack_require__(634);
var MAX_LENGTH = 1024 * 64;
var cache = {};
@@ -64844,16 +62238,16 @@ module.exports = braces;
/***/ }),
-/* 584 */
+/* 610 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var safe = __webpack_require__(585);
-var define = __webpack_require__(591);
-var extend = __webpack_require__(597);
-var not = __webpack_require__(601);
+var safe = __webpack_require__(611);
+var define = __webpack_require__(617);
+var extend = __webpack_require__(623);
+var not = __webpack_require__(627);
var MAX_LENGTH = 1024 * 64;
/**
@@ -65006,10 +62400,10 @@ module.exports.makeRe = makeRe;
/***/ }),
-/* 585 */
+/* 611 */
/***/ (function(module, exports, __webpack_require__) {
-var parse = __webpack_require__(586);
+var parse = __webpack_require__(612);
var types = parse.types;
module.exports = function (re, opts) {
@@ -65055,13 +62449,13 @@ function isRegExp (x) {
/***/ }),
-/* 586 */
+/* 612 */
/***/ (function(module, exports, __webpack_require__) {
-var util = __webpack_require__(587);
-var types = __webpack_require__(588);
-var sets = __webpack_require__(589);
-var positions = __webpack_require__(590);
+var util = __webpack_require__(613);
+var types = __webpack_require__(614);
+var sets = __webpack_require__(615);
+var positions = __webpack_require__(616);
module.exports = function(regexpStr) {
@@ -65343,11 +62737,11 @@ module.exports.types = types;
/***/ }),
-/* 587 */
+/* 613 */
/***/ (function(module, exports, __webpack_require__) {
-var types = __webpack_require__(588);
-var sets = __webpack_require__(589);
+var types = __webpack_require__(614);
+var sets = __webpack_require__(615);
// All of these are private and only used by randexp.
@@ -65460,7 +62854,7 @@ exports.error = function(regexp, msg) {
/***/ }),
-/* 588 */
+/* 614 */
/***/ (function(module, exports) {
module.exports = {
@@ -65476,10 +62870,10 @@ module.exports = {
/***/ }),
-/* 589 */
+/* 615 */
/***/ (function(module, exports, __webpack_require__) {
-var types = __webpack_require__(588);
+var types = __webpack_require__(614);
var INTS = function() {
return [{ type: types.RANGE , from: 48, to: 57 }];
@@ -65564,10 +62958,10 @@ exports.anyChar = function() {
/***/ }),
-/* 590 */
+/* 616 */
/***/ (function(module, exports, __webpack_require__) {
-var types = __webpack_require__(588);
+var types = __webpack_require__(614);
exports.wordBoundary = function() {
return { type: types.POSITION, value: 'b' };
@@ -65587,7 +62981,7 @@ exports.end = function() {
/***/ }),
-/* 591 */
+/* 617 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -65600,8 +62994,8 @@ exports.end = function() {
-var isobject = __webpack_require__(592);
-var isDescriptor = __webpack_require__(593);
+var isobject = __webpack_require__(618);
+var isDescriptor = __webpack_require__(619);
var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty)
? Reflect.defineProperty
: Object.defineProperty;
@@ -65632,7 +63026,7 @@ module.exports = function defineProperty(obj, key, val) {
/***/ }),
-/* 592 */
+/* 618 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -65651,7 +63045,7 @@ module.exports = function isObject(val) {
/***/ }),
-/* 593 */
+/* 619 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -65664,9 +63058,9 @@ module.exports = function isObject(val) {
-var typeOf = __webpack_require__(594);
-var isAccessor = __webpack_require__(595);
-var isData = __webpack_require__(596);
+var typeOf = __webpack_require__(620);
+var isAccessor = __webpack_require__(621);
+var isData = __webpack_require__(622);
module.exports = function isDescriptor(obj, key) {
if (typeOf(obj) !== 'object') {
@@ -65680,7 +63074,7 @@ module.exports = function isDescriptor(obj, key) {
/***/ }),
-/* 594 */
+/* 620 */
/***/ (function(module, exports) {
var toString = Object.prototype.toString;
@@ -65815,7 +63209,7 @@ function isBuffer(val) {
/***/ }),
-/* 595 */
+/* 621 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -65828,7 +63222,7 @@ function isBuffer(val) {
-var typeOf = __webpack_require__(594);
+var typeOf = __webpack_require__(620);
// accessor descriptor properties
var accessor = {
@@ -65891,7 +63285,7 @@ module.exports = isAccessorDescriptor;
/***/ }),
-/* 596 */
+/* 622 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -65904,7 +63298,7 @@ module.exports = isAccessorDescriptor;
-var typeOf = __webpack_require__(594);
+var typeOf = __webpack_require__(620);
module.exports = function isDataDescriptor(obj, prop) {
// data descriptor properties
@@ -65947,14 +63341,14 @@ module.exports = function isDataDescriptor(obj, prop) {
/***/ }),
-/* 597 */
+/* 623 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isExtendable = __webpack_require__(598);
-var assignSymbols = __webpack_require__(600);
+var isExtendable = __webpack_require__(624);
+var assignSymbols = __webpack_require__(626);
module.exports = Object.assign || function(obj/*, objects*/) {
if (obj === null || typeof obj === 'undefined') {
@@ -66014,7 +63408,7 @@ function isEnum(obj, key) {
/***/ }),
-/* 598 */
+/* 624 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -66027,7 +63421,7 @@ function isEnum(obj, key) {
-var isPlainObject = __webpack_require__(599);
+var isPlainObject = __webpack_require__(625);
module.exports = function isExtendable(val) {
return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);
@@ -66035,7 +63429,7 @@ module.exports = function isExtendable(val) {
/***/ }),
-/* 599 */
+/* 625 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -66048,7 +63442,7 @@ module.exports = function isExtendable(val) {
-var isObject = __webpack_require__(592);
+var isObject = __webpack_require__(618);
function isObjectObject(o) {
return isObject(o) === true
@@ -66079,7 +63473,7 @@ module.exports = function isPlainObject(o) {
/***/ }),
-/* 600 */
+/* 626 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -66126,14 +63520,14 @@ module.exports = function(receiver, objects) {
/***/ }),
-/* 601 */
+/* 627 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var extend = __webpack_require__(602);
-var safe = __webpack_require__(585);
+var extend = __webpack_require__(628);
+var safe = __webpack_require__(611);
/**
* The main export is a function that takes a `pattern` string and an `options` object.
@@ -66205,14 +63599,14 @@ module.exports = toRegex;
/***/ }),
-/* 602 */
+/* 628 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isExtendable = __webpack_require__(603);
-var assignSymbols = __webpack_require__(600);
+var isExtendable = __webpack_require__(629);
+var assignSymbols = __webpack_require__(626);
module.exports = Object.assign || function(obj/*, objects*/) {
if (obj === null || typeof obj === 'undefined') {
@@ -66272,7 +63666,7 @@ function isEnum(obj, key) {
/***/ }),
-/* 603 */
+/* 629 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -66285,7 +63679,7 @@ function isEnum(obj, key) {
-var isPlainObject = __webpack_require__(599);
+var isPlainObject = __webpack_require__(625);
module.exports = function isExtendable(val) {
return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);
@@ -66293,7 +63687,7 @@ module.exports = function isExtendable(val) {
/***/ }),
-/* 604 */
+/* 630 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -66343,13 +63737,13 @@ module.exports.immutable = function uniqueImmutable(arr) {
/***/ }),
-/* 605 */
+/* 631 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isObject = __webpack_require__(606);
+var isObject = __webpack_require__(632);
module.exports = function extend(o/*, objects*/) {
if (!isObject(o)) { o = {}; }
@@ -66383,7 +63777,7 @@ function hasOwn(obj, key) {
/***/ }),
-/* 606 */
+/* 632 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -66403,13 +63797,13 @@ module.exports = function isExtendable(val) {
/***/ }),
-/* 607 */
+/* 633 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var utils = __webpack_require__(608);
+var utils = __webpack_require__(634);
module.exports = function(braces, options) {
braces.compiler
@@ -66692,25 +64086,25 @@ function hasQueue(node) {
/***/ }),
-/* 608 */
+/* 634 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var splitString = __webpack_require__(609);
+var splitString = __webpack_require__(635);
var utils = module.exports;
/**
* Module dependencies
*/
-utils.extend = __webpack_require__(605);
-utils.flatten = __webpack_require__(612);
-utils.isObject = __webpack_require__(592);
-utils.fillRange = __webpack_require__(613);
-utils.repeat = __webpack_require__(621);
-utils.unique = __webpack_require__(604);
+utils.extend = __webpack_require__(631);
+utils.flatten = __webpack_require__(638);
+utils.isObject = __webpack_require__(618);
+utils.fillRange = __webpack_require__(639);
+utils.repeat = __webpack_require__(647);
+utils.unique = __webpack_require__(630);
utils.define = function(obj, key, val) {
Object.defineProperty(obj, key, {
@@ -67042,7 +64436,7 @@ utils.escapeRegex = function(str) {
/***/ }),
-/* 609 */
+/* 635 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -67055,7 +64449,7 @@ utils.escapeRegex = function(str) {
-var extend = __webpack_require__(610);
+var extend = __webpack_require__(636);
module.exports = function(str, options, fn) {
if (typeof str !== 'string') {
@@ -67220,14 +64614,14 @@ function keepEscaping(opts, str, idx) {
/***/ }),
-/* 610 */
+/* 636 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isExtendable = __webpack_require__(611);
-var assignSymbols = __webpack_require__(600);
+var isExtendable = __webpack_require__(637);
+var assignSymbols = __webpack_require__(626);
module.exports = Object.assign || function(obj/*, objects*/) {
if (obj === null || typeof obj === 'undefined') {
@@ -67287,7 +64681,7 @@ function isEnum(obj, key) {
/***/ }),
-/* 611 */
+/* 637 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -67300,7 +64694,7 @@ function isEnum(obj, key) {
-var isPlainObject = __webpack_require__(599);
+var isPlainObject = __webpack_require__(625);
module.exports = function isExtendable(val) {
return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);
@@ -67308,7 +64702,7 @@ module.exports = function isExtendable(val) {
/***/ }),
-/* 612 */
+/* 638 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -67337,7 +64731,7 @@ function flat(arr, res) {
/***/ }),
-/* 613 */
+/* 639 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -67350,11 +64744,11 @@ function flat(arr, res) {
-var util = __webpack_require__(113);
-var isNumber = __webpack_require__(614);
-var extend = __webpack_require__(617);
-var repeat = __webpack_require__(619);
-var toRegex = __webpack_require__(620);
+var util = __webpack_require__(234);
+var isNumber = __webpack_require__(640);
+var extend = __webpack_require__(643);
+var repeat = __webpack_require__(645);
+var toRegex = __webpack_require__(646);
/**
* Return a range of numbers or letters.
@@ -67552,7 +64946,7 @@ module.exports = fillRange;
/***/ }),
-/* 614 */
+/* 640 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -67565,7 +64959,7 @@ module.exports = fillRange;
-var typeOf = __webpack_require__(615);
+var typeOf = __webpack_require__(641);
module.exports = function isNumber(num) {
var type = typeOf(num);
@@ -67581,10 +64975,10 @@ module.exports = function isNumber(num) {
/***/ }),
-/* 615 */
+/* 641 */
/***/ (function(module, exports, __webpack_require__) {
-var isBuffer = __webpack_require__(616);
+var isBuffer = __webpack_require__(642);
var toString = Object.prototype.toString;
/**
@@ -67703,7 +65097,7 @@ module.exports = function kindOf(val) {
/***/ }),
-/* 616 */
+/* 642 */
/***/ (function(module, exports) {
/*!
@@ -67730,13 +65124,13 @@ function isSlowBuffer (obj) {
/***/ }),
-/* 617 */
+/* 643 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isObject = __webpack_require__(618);
+var isObject = __webpack_require__(644);
module.exports = function extend(o/*, objects*/) {
if (!isObject(o)) { o = {}; }
@@ -67770,7 +65164,7 @@ function hasOwn(obj, key) {
/***/ }),
-/* 618 */
+/* 644 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -67790,7 +65184,7 @@ module.exports = function isExtendable(val) {
/***/ }),
-/* 619 */
+/* 645 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -67867,7 +65261,7 @@ function repeat(str, num) {
/***/ }),
-/* 620 */
+/* 646 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -67880,8 +65274,8 @@ function repeat(str, num) {
-var repeat = __webpack_require__(619);
-var isNumber = __webpack_require__(614);
+var repeat = __webpack_require__(645);
+var isNumber = __webpack_require__(640);
var cache = {};
function toRegexRange(min, max, options) {
@@ -68168,7 +65562,7 @@ module.exports = toRegexRange;
/***/ }),
-/* 621 */
+/* 647 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -68193,14 +65587,14 @@ module.exports = function repeat(ele, num) {
/***/ }),
-/* 622 */
+/* 648 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var Node = __webpack_require__(623);
-var utils = __webpack_require__(608);
+var Node = __webpack_require__(649);
+var utils = __webpack_require__(634);
/**
* Braces parsers
@@ -68560,15 +65954,15 @@ function concatNodes(pos, node, parent, options) {
/***/ }),
-/* 623 */
+/* 649 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isObject = __webpack_require__(592);
-var define = __webpack_require__(624);
-var utils = __webpack_require__(625);
+var isObject = __webpack_require__(618);
+var define = __webpack_require__(650);
+var utils = __webpack_require__(651);
var ownNames;
/**
@@ -69059,7 +66453,7 @@ exports = module.exports = Node;
/***/ }),
-/* 624 */
+/* 650 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -69072,7 +66466,7 @@ exports = module.exports = Node;
-var isDescriptor = __webpack_require__(593);
+var isDescriptor = __webpack_require__(619);
module.exports = function defineProperty(obj, prop, val) {
if (typeof obj !== 'object' && typeof obj !== 'function') {
@@ -69097,13 +66491,13 @@ module.exports = function defineProperty(obj, prop, val) {
/***/ }),
-/* 625 */
+/* 651 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var typeOf = __webpack_require__(626);
+var typeOf = __webpack_require__(652);
var utils = module.exports;
/**
@@ -70123,10 +67517,10 @@ function assert(val, message) {
/***/ }),
-/* 626 */
+/* 652 */
/***/ (function(module, exports, __webpack_require__) {
-var isBuffer = __webpack_require__(616);
+var isBuffer = __webpack_require__(642);
var toString = Object.prototype.toString;
/**
@@ -70245,17 +67639,17 @@ module.exports = function kindOf(val) {
/***/ }),
-/* 627 */
+/* 653 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var extend = __webpack_require__(605);
-var Snapdragon = __webpack_require__(628);
-var compilers = __webpack_require__(607);
-var parsers = __webpack_require__(622);
-var utils = __webpack_require__(608);
+var extend = __webpack_require__(631);
+var Snapdragon = __webpack_require__(654);
+var compilers = __webpack_require__(633);
+var parsers = __webpack_require__(648);
+var utils = __webpack_require__(634);
/**
* Customize Snapdragon parser and renderer
@@ -70356,17 +67750,17 @@ module.exports = Braces;
/***/ }),
-/* 628 */
+/* 654 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var Base = __webpack_require__(629);
-var define = __webpack_require__(659);
-var Compiler = __webpack_require__(670);
-var Parser = __webpack_require__(693);
-var utils = __webpack_require__(673);
+var Base = __webpack_require__(655);
+var define = __webpack_require__(685);
+var Compiler = __webpack_require__(696);
+var Parser = __webpack_require__(719);
+var utils = __webpack_require__(699);
var regexCache = {};
var cache = {};
@@ -70537,20 +67931,20 @@ module.exports.Parser = Parser;
/***/ }),
-/* 629 */
+/* 655 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var util = __webpack_require__(113);
-var define = __webpack_require__(630);
-var CacheBase = __webpack_require__(631);
-var Emitter = __webpack_require__(632);
-var isObject = __webpack_require__(592);
-var merge = __webpack_require__(653);
-var pascal = __webpack_require__(656);
-var cu = __webpack_require__(657);
+var util = __webpack_require__(234);
+var define = __webpack_require__(656);
+var CacheBase = __webpack_require__(657);
+var Emitter = __webpack_require__(658);
+var isObject = __webpack_require__(618);
+var merge = __webpack_require__(679);
+var pascal = __webpack_require__(682);
+var cu = __webpack_require__(683);
/**
* Optionally define a custom `cache` namespace to use.
@@ -70979,7 +68373,7 @@ module.exports.namespace = namespace;
/***/ }),
-/* 630 */
+/* 656 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -70992,7 +68386,7 @@ module.exports.namespace = namespace;
-var isDescriptor = __webpack_require__(593);
+var isDescriptor = __webpack_require__(619);
module.exports = function defineProperty(obj, prop, val) {
if (typeof obj !== 'object' && typeof obj !== 'function') {
@@ -71017,21 +68411,21 @@ module.exports = function defineProperty(obj, prop, val) {
/***/ }),
-/* 631 */
+/* 657 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isObject = __webpack_require__(592);
-var Emitter = __webpack_require__(632);
-var visit = __webpack_require__(633);
-var toPath = __webpack_require__(636);
-var union = __webpack_require__(638);
-var del = __webpack_require__(644);
-var get = __webpack_require__(641);
-var has = __webpack_require__(649);
-var set = __webpack_require__(652);
+var isObject = __webpack_require__(618);
+var Emitter = __webpack_require__(658);
+var visit = __webpack_require__(659);
+var toPath = __webpack_require__(662);
+var union = __webpack_require__(664);
+var del = __webpack_require__(670);
+var get = __webpack_require__(667);
+var has = __webpack_require__(675);
+var set = __webpack_require__(678);
/**
* Create a `Cache` constructor that when instantiated will
@@ -71285,7 +68679,7 @@ module.exports.namespace = namespace;
/***/ }),
-/* 632 */
+/* 658 */
/***/ (function(module, exports, __webpack_require__) {
@@ -71454,7 +68848,7 @@ Emitter.prototype.hasListeners = function(event){
/***/ }),
-/* 633 */
+/* 659 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -71467,8 +68861,8 @@ Emitter.prototype.hasListeners = function(event){
-var visit = __webpack_require__(634);
-var mapVisit = __webpack_require__(635);
+var visit = __webpack_require__(660);
+var mapVisit = __webpack_require__(661);
module.exports = function(collection, method, val) {
var result;
@@ -71491,7 +68885,7 @@ module.exports = function(collection, method, val) {
/***/ }),
-/* 634 */
+/* 660 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -71504,7 +68898,7 @@ module.exports = function(collection, method, val) {
-var isObject = __webpack_require__(592);
+var isObject = __webpack_require__(618);
module.exports = function visit(thisArg, method, target, val) {
if (!isObject(thisArg) && typeof thisArg !== 'function') {
@@ -71531,14 +68925,14 @@ module.exports = function visit(thisArg, method, target, val) {
/***/ }),
-/* 635 */
+/* 661 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var util = __webpack_require__(113);
-var visit = __webpack_require__(634);
+var util = __webpack_require__(234);
+var visit = __webpack_require__(660);
/**
* Map `visit` over an array of objects.
@@ -71575,7 +68969,7 @@ function isObject(val) {
/***/ }),
-/* 636 */
+/* 662 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -71588,7 +68982,7 @@ function isObject(val) {
-var typeOf = __webpack_require__(637);
+var typeOf = __webpack_require__(663);
module.exports = function toPath(args) {
if (typeOf(args) !== 'arguments') {
@@ -71615,10 +69009,10 @@ function filter(arr) {
/***/ }),
-/* 637 */
+/* 663 */
/***/ (function(module, exports, __webpack_require__) {
-var isBuffer = __webpack_require__(616);
+var isBuffer = __webpack_require__(642);
var toString = Object.prototype.toString;
/**
@@ -71737,16 +69131,16 @@ module.exports = function kindOf(val) {
/***/ }),
-/* 638 */
+/* 664 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isObject = __webpack_require__(639);
-var union = __webpack_require__(640);
-var get = __webpack_require__(641);
-var set = __webpack_require__(642);
+var isObject = __webpack_require__(665);
+var union = __webpack_require__(666);
+var get = __webpack_require__(667);
+var set = __webpack_require__(668);
module.exports = function unionValue(obj, prop, value) {
if (!isObject(obj)) {
@@ -71774,7 +69168,7 @@ function arrayify(val) {
/***/ }),
-/* 639 */
+/* 665 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -71794,7 +69188,7 @@ module.exports = function isExtendable(val) {
/***/ }),
-/* 640 */
+/* 666 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -71830,7 +69224,7 @@ module.exports = function union(init) {
/***/ }),
-/* 641 */
+/* 667 */
/***/ (function(module, exports) {
/*!
@@ -71886,7 +69280,7 @@ function toString(val) {
/***/ }),
-/* 642 */
+/* 668 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -71899,10 +69293,10 @@ function toString(val) {
-var split = __webpack_require__(609);
-var extend = __webpack_require__(643);
-var isPlainObject = __webpack_require__(599);
-var isObject = __webpack_require__(639);
+var split = __webpack_require__(635);
+var extend = __webpack_require__(669);
+var isPlainObject = __webpack_require__(625);
+var isObject = __webpack_require__(665);
module.exports = function(obj, prop, val) {
if (!isObject(obj)) {
@@ -71948,13 +69342,13 @@ function isValidKey(key) {
/***/ }),
-/* 643 */
+/* 669 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isObject = __webpack_require__(639);
+var isObject = __webpack_require__(665);
module.exports = function extend(o/*, objects*/) {
if (!isObject(o)) { o = {}; }
@@ -71988,7 +69382,7 @@ function hasOwn(obj, key) {
/***/ }),
-/* 644 */
+/* 670 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72001,8 +69395,8 @@ function hasOwn(obj, key) {
-var isObject = __webpack_require__(592);
-var has = __webpack_require__(645);
+var isObject = __webpack_require__(618);
+var has = __webpack_require__(671);
module.exports = function unset(obj, prop) {
if (!isObject(obj)) {
@@ -72027,7 +69421,7 @@ module.exports = function unset(obj, prop) {
/***/ }),
-/* 645 */
+/* 671 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72040,9 +69434,9 @@ module.exports = function unset(obj, prop) {
-var isObject = __webpack_require__(646);
-var hasValues = __webpack_require__(648);
-var get = __webpack_require__(641);
+var isObject = __webpack_require__(672);
+var hasValues = __webpack_require__(674);
+var get = __webpack_require__(667);
module.exports = function(obj, prop, noZero) {
if (isObject(obj)) {
@@ -72053,7 +69447,7 @@ module.exports = function(obj, prop, noZero) {
/***/ }),
-/* 646 */
+/* 672 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72066,7 +69460,7 @@ module.exports = function(obj, prop, noZero) {
-var isArray = __webpack_require__(647);
+var isArray = __webpack_require__(673);
module.exports = function isObject(val) {
return val != null && typeof val === 'object' && isArray(val) === false;
@@ -72074,7 +69468,7 @@ module.exports = function isObject(val) {
/***/ }),
-/* 647 */
+/* 673 */
/***/ (function(module, exports) {
var toString = {}.toString;
@@ -72085,7 +69479,7 @@ module.exports = Array.isArray || function (arr) {
/***/ }),
-/* 648 */
+/* 674 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72128,7 +69522,7 @@ module.exports = function hasValue(o, noZero) {
/***/ }),
-/* 649 */
+/* 675 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72141,9 +69535,9 @@ module.exports = function hasValue(o, noZero) {
-var isObject = __webpack_require__(592);
-var hasValues = __webpack_require__(650);
-var get = __webpack_require__(641);
+var isObject = __webpack_require__(618);
+var hasValues = __webpack_require__(676);
+var get = __webpack_require__(667);
module.exports = function(val, prop) {
return hasValues(isObject(val) && prop ? get(val, prop) : val);
@@ -72151,7 +69545,7 @@ module.exports = function(val, prop) {
/***/ }),
-/* 650 */
+/* 676 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72164,8 +69558,8 @@ module.exports = function(val, prop) {
-var typeOf = __webpack_require__(651);
-var isNumber = __webpack_require__(614);
+var typeOf = __webpack_require__(677);
+var isNumber = __webpack_require__(640);
module.exports = function hasValue(val) {
// is-number checks for NaN and other edge cases
@@ -72218,10 +69612,10 @@ module.exports = function hasValue(val) {
/***/ }),
-/* 651 */
+/* 677 */
/***/ (function(module, exports, __webpack_require__) {
-var isBuffer = __webpack_require__(616);
+var isBuffer = __webpack_require__(642);
var toString = Object.prototype.toString;
/**
@@ -72343,7 +69737,7 @@ module.exports = function kindOf(val) {
/***/ }),
-/* 652 */
+/* 678 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72356,10 +69750,10 @@ module.exports = function kindOf(val) {
-var split = __webpack_require__(609);
-var extend = __webpack_require__(643);
-var isPlainObject = __webpack_require__(599);
-var isObject = __webpack_require__(639);
+var split = __webpack_require__(635);
+var extend = __webpack_require__(669);
+var isPlainObject = __webpack_require__(625);
+var isObject = __webpack_require__(665);
module.exports = function(obj, prop, val) {
if (!isObject(obj)) {
@@ -72405,14 +69799,14 @@ function isValidKey(key) {
/***/ }),
-/* 653 */
+/* 679 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isExtendable = __webpack_require__(654);
-var forIn = __webpack_require__(655);
+var isExtendable = __webpack_require__(680);
+var forIn = __webpack_require__(681);
function mixinDeep(target, objects) {
var len = arguments.length, i = 0;
@@ -72476,7 +69870,7 @@ module.exports = mixinDeep;
/***/ }),
-/* 654 */
+/* 680 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72489,7 +69883,7 @@ module.exports = mixinDeep;
-var isPlainObject = __webpack_require__(599);
+var isPlainObject = __webpack_require__(625);
module.exports = function isExtendable(val) {
return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);
@@ -72497,7 +69891,7 @@ module.exports = function isExtendable(val) {
/***/ }),
-/* 655 */
+/* 681 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72520,7 +69914,7 @@ module.exports = function forIn(obj, fn, thisArg) {
/***/ }),
-/* 656 */
+/* 682 */
/***/ (function(module, exports) {
/*!
@@ -72547,14 +69941,14 @@ module.exports = pascalcase;
/***/ }),
-/* 657 */
+/* 683 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var util = __webpack_require__(113);
-var utils = __webpack_require__(658);
+var util = __webpack_require__(234);
+var utils = __webpack_require__(684);
/**
* Expose class utils
@@ -72919,7 +70313,7 @@ cu.bubble = function(Parent, events) {
/***/ }),
-/* 658 */
+/* 684 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72933,10 +70327,10 @@ var utils = {};
* Lazily required module dependencies
*/
-utils.union = __webpack_require__(640);
-utils.define = __webpack_require__(659);
-utils.isObj = __webpack_require__(592);
-utils.staticExtend = __webpack_require__(666);
+utils.union = __webpack_require__(666);
+utils.define = __webpack_require__(685);
+utils.isObj = __webpack_require__(618);
+utils.staticExtend = __webpack_require__(692);
/**
@@ -72947,7 +70341,7 @@ module.exports = utils;
/***/ }),
-/* 659 */
+/* 685 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72960,7 +70354,7 @@ module.exports = utils;
-var isDescriptor = __webpack_require__(660);
+var isDescriptor = __webpack_require__(686);
module.exports = function defineProperty(obj, prop, val) {
if (typeof obj !== 'object' && typeof obj !== 'function') {
@@ -72985,7 +70379,7 @@ module.exports = function defineProperty(obj, prop, val) {
/***/ }),
-/* 660 */
+/* 686 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -72998,9 +70392,9 @@ module.exports = function defineProperty(obj, prop, val) {
-var typeOf = __webpack_require__(661);
-var isAccessor = __webpack_require__(662);
-var isData = __webpack_require__(664);
+var typeOf = __webpack_require__(687);
+var isAccessor = __webpack_require__(688);
+var isData = __webpack_require__(690);
module.exports = function isDescriptor(obj, key) {
if (typeOf(obj) !== 'object') {
@@ -73014,7 +70408,7 @@ module.exports = function isDescriptor(obj, key) {
/***/ }),
-/* 661 */
+/* 687 */
/***/ (function(module, exports) {
var toString = Object.prototype.toString;
@@ -73167,7 +70561,7 @@ function isBuffer(val) {
/***/ }),
-/* 662 */
+/* 688 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -73180,7 +70574,7 @@ function isBuffer(val) {
-var typeOf = __webpack_require__(663);
+var typeOf = __webpack_require__(689);
// accessor descriptor properties
var accessor = {
@@ -73243,10 +70637,10 @@ module.exports = isAccessorDescriptor;
/***/ }),
-/* 663 */
+/* 689 */
/***/ (function(module, exports, __webpack_require__) {
-var isBuffer = __webpack_require__(616);
+var isBuffer = __webpack_require__(642);
var toString = Object.prototype.toString;
/**
@@ -73365,7 +70759,7 @@ module.exports = function kindOf(val) {
/***/ }),
-/* 664 */
+/* 690 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -73378,7 +70772,7 @@ module.exports = function kindOf(val) {
-var typeOf = __webpack_require__(665);
+var typeOf = __webpack_require__(691);
// data descriptor properties
var data = {
@@ -73427,10 +70821,10 @@ module.exports = isDataDescriptor;
/***/ }),
-/* 665 */
+/* 691 */
/***/ (function(module, exports, __webpack_require__) {
-var isBuffer = __webpack_require__(616);
+var isBuffer = __webpack_require__(642);
var toString = Object.prototype.toString;
/**
@@ -73549,7 +70943,7 @@ module.exports = function kindOf(val) {
/***/ }),
-/* 666 */
+/* 692 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -73562,9 +70956,9 @@ module.exports = function kindOf(val) {
-var copy = __webpack_require__(667);
-var define = __webpack_require__(659);
-var util = __webpack_require__(113);
+var copy = __webpack_require__(693);
+var define = __webpack_require__(685);
+var util = __webpack_require__(234);
/**
* Returns a function for extending the static properties,
@@ -73646,15 +71040,15 @@ module.exports = extend;
/***/ }),
-/* 667 */
+/* 693 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var typeOf = __webpack_require__(668);
-var copyDescriptor = __webpack_require__(669);
-var define = __webpack_require__(659);
+var typeOf = __webpack_require__(694);
+var copyDescriptor = __webpack_require__(695);
+var define = __webpack_require__(685);
/**
* Copy static properties, prototype properties, and descriptors from one object to another.
@@ -73827,10 +71221,10 @@ module.exports.has = has;
/***/ }),
-/* 668 */
+/* 694 */
/***/ (function(module, exports, __webpack_require__) {
-var isBuffer = __webpack_require__(616);
+var isBuffer = __webpack_require__(642);
var toString = Object.prototype.toString;
/**
@@ -73949,7 +71343,7 @@ module.exports = function kindOf(val) {
/***/ }),
-/* 669 */
+/* 695 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -74037,16 +71431,16 @@ function isObject(val) {
/***/ }),
-/* 670 */
+/* 696 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var use = __webpack_require__(671);
-var define = __webpack_require__(659);
-var debug = __webpack_require__(205)('snapdragon:compiler');
-var utils = __webpack_require__(673);
+var use = __webpack_require__(697);
+var define = __webpack_require__(685);
+var debug = __webpack_require__(326)('snapdragon:compiler');
+var utils = __webpack_require__(699);
/**
* Create a new `Compiler` with the given `options`.
@@ -74200,7 +71594,7 @@ Compiler.prototype = {
// source map support
if (opts.sourcemap) {
- var sourcemaps = __webpack_require__(692);
+ var sourcemaps = __webpack_require__(718);
sourcemaps(this);
this.mapVisit(this.ast.nodes);
this.applySourceMaps();
@@ -74221,7 +71615,7 @@ module.exports = Compiler;
/***/ }),
-/* 671 */
+/* 697 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -74234,7 +71628,7 @@ module.exports = Compiler;
-var utils = __webpack_require__(672);
+var utils = __webpack_require__(698);
module.exports = function base(app, opts) {
if (!utils.isObject(app) && typeof app !== 'function') {
@@ -74349,7 +71743,7 @@ module.exports = function base(app, opts) {
/***/ }),
-/* 672 */
+/* 698 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -74363,8 +71757,8 @@ var utils = {};
* Lazily required module dependencies
*/
-utils.define = __webpack_require__(659);
-utils.isObject = __webpack_require__(592);
+utils.define = __webpack_require__(685);
+utils.isObject = __webpack_require__(618);
utils.isString = function(val) {
@@ -74379,7 +71773,7 @@ module.exports = utils;
/***/ }),
-/* 673 */
+/* 699 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -74389,9 +71783,9 @@ module.exports = utils;
* Module dependencies
*/
-exports.extend = __webpack_require__(643);
-exports.SourceMap = __webpack_require__(674);
-exports.sourceMapResolve = __webpack_require__(685);
+exports.extend = __webpack_require__(669);
+exports.SourceMap = __webpack_require__(700);
+exports.sourceMapResolve = __webpack_require__(711);
/**
* Convert backslash in the given string to forward slashes
@@ -74434,7 +71828,7 @@ exports.last = function(arr, n) {
/***/ }),
-/* 674 */
+/* 700 */
/***/ (function(module, exports, __webpack_require__) {
/*
@@ -74442,13 +71836,13 @@ exports.last = function(arr, n) {
* Licensed under the New BSD license. See LICENSE.txt or:
* http://opensource.org/licenses/BSD-3-Clause
*/
-exports.SourceMapGenerator = __webpack_require__(675).SourceMapGenerator;
-exports.SourceMapConsumer = __webpack_require__(681).SourceMapConsumer;
-exports.SourceNode = __webpack_require__(684).SourceNode;
+exports.SourceMapGenerator = __webpack_require__(701).SourceMapGenerator;
+exports.SourceMapConsumer = __webpack_require__(707).SourceMapConsumer;
+exports.SourceNode = __webpack_require__(710).SourceNode;
/***/ }),
-/* 675 */
+/* 701 */
/***/ (function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@@ -74458,10 +71852,10 @@ exports.SourceNode = __webpack_require__(684).SourceNode;
* http://opensource.org/licenses/BSD-3-Clause
*/
-var base64VLQ = __webpack_require__(676);
-var util = __webpack_require__(678);
-var ArraySet = __webpack_require__(679).ArraySet;
-var MappingList = __webpack_require__(680).MappingList;
+var base64VLQ = __webpack_require__(702);
+var util = __webpack_require__(704);
+var ArraySet = __webpack_require__(705).ArraySet;
+var MappingList = __webpack_require__(706).MappingList;
/**
* An instance of the SourceMapGenerator represents a source map which is
@@ -74870,7 +72264,7 @@ exports.SourceMapGenerator = SourceMapGenerator;
/***/ }),
-/* 676 */
+/* 702 */
/***/ (function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@@ -74910,7 +72304,7 @@ exports.SourceMapGenerator = SourceMapGenerator;
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-var base64 = __webpack_require__(677);
+var base64 = __webpack_require__(703);
// 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,
@@ -75016,7 +72410,7 @@ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
/***/ }),
-/* 677 */
+/* 703 */
/***/ (function(module, exports) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@@ -75089,7 +72483,7 @@ exports.decode = function (charCode) {
/***/ }),
-/* 678 */
+/* 704 */
/***/ (function(module, exports) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@@ -75512,7 +72906,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate
/***/ }),
-/* 679 */
+/* 705 */
/***/ (function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@@ -75522,7 +72916,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate
* http://opensource.org/licenses/BSD-3-Clause
*/
-var util = __webpack_require__(678);
+var util = __webpack_require__(704);
var has = Object.prototype.hasOwnProperty;
var hasNativeMap = typeof Map !== "undefined";
@@ -75639,7 +73033,7 @@ exports.ArraySet = ArraySet;
/***/ }),
-/* 680 */
+/* 706 */
/***/ (function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@@ -75649,7 +73043,7 @@ exports.ArraySet = ArraySet;
* http://opensource.org/licenses/BSD-3-Clause
*/
-var util = __webpack_require__(678);
+var util = __webpack_require__(704);
/**
* Determine whether mappingB is after mappingA with respect to generated
@@ -75724,7 +73118,7 @@ exports.MappingList = MappingList;
/***/ }),
-/* 681 */
+/* 707 */
/***/ (function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@@ -75734,11 +73128,11 @@ exports.MappingList = MappingList;
* http://opensource.org/licenses/BSD-3-Clause
*/
-var util = __webpack_require__(678);
-var binarySearch = __webpack_require__(682);
-var ArraySet = __webpack_require__(679).ArraySet;
-var base64VLQ = __webpack_require__(676);
-var quickSort = __webpack_require__(683).quickSort;
+var util = __webpack_require__(704);
+var binarySearch = __webpack_require__(708);
+var ArraySet = __webpack_require__(705).ArraySet;
+var base64VLQ = __webpack_require__(702);
+var quickSort = __webpack_require__(709).quickSort;
function SourceMapConsumer(aSourceMap) {
var sourceMap = aSourceMap;
@@ -76812,7 +74206,7 @@ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
/***/ }),
-/* 682 */
+/* 708 */
/***/ (function(module, exports) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@@ -76929,7 +74323,7 @@ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
/***/ }),
-/* 683 */
+/* 709 */
/***/ (function(module, exports) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@@ -77049,7 +74443,7 @@ exports.quickSort = function (ary, comparator) {
/***/ }),
-/* 684 */
+/* 710 */
/***/ (function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@@ -77059,8 +74453,8 @@ exports.quickSort = function (ary, comparator) {
* http://opensource.org/licenses/BSD-3-Clause
*/
-var SourceMapGenerator = __webpack_require__(675).SourceMapGenerator;
-var util = __webpack_require__(678);
+var SourceMapGenerator = __webpack_require__(701).SourceMapGenerator;
+var util = __webpack_require__(704);
// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
// operating systems these days (capturing the result).
@@ -77468,17 +74862,17 @@ exports.SourceNode = SourceNode;
/***/ }),
-/* 685 */
+/* 711 */
/***/ (function(module, exports, __webpack_require__) {
// Copyright 2014, 2015, 2016, 2017 Simon Lydell
// X11 (“MIT”) Licensed. (See LICENSE.)
-var sourceMappingURL = __webpack_require__(686)
-var resolveUrl = __webpack_require__(687)
-var decodeUriComponent = __webpack_require__(688)
-var urix = __webpack_require__(690)
-var atob = __webpack_require__(691)
+var sourceMappingURL = __webpack_require__(712)
+var resolveUrl = __webpack_require__(713)
+var decodeUriComponent = __webpack_require__(714)
+var urix = __webpack_require__(716)
+var atob = __webpack_require__(717)
@@ -77776,7 +75170,7 @@ module.exports = {
/***/ }),
-/* 686 */
+/* 712 */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;// Copyright 2014 Simon Lydell
@@ -77839,13 +75233,13 @@ void (function(root, factory) {
/***/ }),
-/* 687 */
+/* 713 */
/***/ (function(module, exports, __webpack_require__) {
// Copyright 2014 Simon Lydell
// X11 (“MIT”) Licensed. (See LICENSE.)
-var url = __webpack_require__(203)
+var url = __webpack_require__(324)
function resolveUrl(/* ...urls */) {
return Array.prototype.reduce.call(arguments, function(resolved, nextUrl) {
@@ -77857,13 +75251,13 @@ module.exports = resolveUrl
/***/ }),
-/* 688 */
+/* 714 */
/***/ (function(module, exports, __webpack_require__) {
// Copyright 2017 Simon Lydell
// X11 (“MIT”) Licensed. (See LICENSE.)
-var decodeUriComponent = __webpack_require__(689)
+var decodeUriComponent = __webpack_require__(715)
function customDecodeUriComponent(string) {
// `decodeUriComponent` turns `+` into ` `, but that's not wanted.
@@ -77874,7 +75268,7 @@ module.exports = customDecodeUriComponent
/***/ }),
-/* 689 */
+/* 715 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -77975,7 +75369,7 @@ module.exports = function (encodedURI) {
/***/ }),
-/* 690 */
+/* 716 */
/***/ (function(module, exports, __webpack_require__) {
// Copyright 2014 Simon Lydell
@@ -77998,7 +75392,7 @@ module.exports = urix
/***/ }),
-/* 691 */
+/* 717 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -78012,16 +75406,16 @@ module.exports = atob.atob = atob;
/***/ }),
-/* 692 */
+/* 718 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var fs = __webpack_require__(132);
+var fs = __webpack_require__(253);
var path = __webpack_require__(4);
-var define = __webpack_require__(659);
-var utils = __webpack_require__(673);
+var define = __webpack_require__(685);
+var utils = __webpack_require__(699);
/**
* Expose `mixin()`.
@@ -78164,19 +75558,19 @@ exports.comment = function(node) {
/***/ }),
-/* 693 */
+/* 719 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var use = __webpack_require__(671);
-var util = __webpack_require__(113);
-var Cache = __webpack_require__(694);
-var define = __webpack_require__(659);
-var debug = __webpack_require__(205)('snapdragon:parser');
-var Position = __webpack_require__(695);
-var utils = __webpack_require__(673);
+var use = __webpack_require__(697);
+var util = __webpack_require__(234);
+var Cache = __webpack_require__(720);
+var define = __webpack_require__(685);
+var debug = __webpack_require__(326)('snapdragon:parser');
+var Position = __webpack_require__(721);
+var utils = __webpack_require__(699);
/**
* Create a new `Parser` with the given `input` and `options`.
@@ -78704,7 +76098,7 @@ module.exports = Parser;
/***/ }),
-/* 694 */
+/* 720 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -78811,13 +76205,13 @@ MapCache.prototype.del = function mapDelete(key) {
/***/ }),
-/* 695 */
+/* 721 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var define = __webpack_require__(659);
+var define = __webpack_require__(685);
/**
* Store position for a node
@@ -78832,14 +76226,14 @@ module.exports = function Position(start, parser) {
/***/ }),
-/* 696 */
+/* 722 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isExtendable = __webpack_require__(697);
-var assignSymbols = __webpack_require__(600);
+var isExtendable = __webpack_require__(723);
+var assignSymbols = __webpack_require__(626);
module.exports = Object.assign || function(obj/*, objects*/) {
if (obj === null || typeof obj === 'undefined') {
@@ -78899,7 +76293,7 @@ function isEnum(obj, key) {
/***/ }),
-/* 697 */
+/* 723 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -78912,7 +76306,7 @@ function isEnum(obj, key) {
-var isPlainObject = __webpack_require__(599);
+var isPlainObject = __webpack_require__(625);
module.exports = function isExtendable(val) {
return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);
@@ -78920,14 +76314,14 @@ module.exports = function isExtendable(val) {
/***/ }),
-/* 698 */
+/* 724 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var nanomatch = __webpack_require__(699);
-var extglob = __webpack_require__(713);
+var nanomatch = __webpack_require__(725);
+var extglob = __webpack_require__(739);
module.exports = function(snapdragon) {
var compilers = snapdragon.compiler.compilers;
@@ -79004,7 +76398,7 @@ function escapeExtglobs(compiler) {
/***/ }),
-/* 699 */
+/* 725 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -79014,18 +76408,18 @@ function escapeExtglobs(compiler) {
* Module dependencies
*/
-var util = __webpack_require__(113);
-var toRegex = __webpack_require__(584);
-var extend = __webpack_require__(700);
+var util = __webpack_require__(234);
+var toRegex = __webpack_require__(610);
+var extend = __webpack_require__(726);
/**
* Local dependencies
*/
-var compilers = __webpack_require__(702);
-var parsers = __webpack_require__(703);
-var cache = __webpack_require__(706);
-var utils = __webpack_require__(708);
+var compilers = __webpack_require__(728);
+var parsers = __webpack_require__(729);
+var cache = __webpack_require__(732);
+var utils = __webpack_require__(734);
var MAX_LENGTH = 1024 * 64;
/**
@@ -79849,14 +77243,14 @@ module.exports = nanomatch;
/***/ }),
-/* 700 */
+/* 726 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var isExtendable = __webpack_require__(701);
-var assignSymbols = __webpack_require__(600);
+var isExtendable = __webpack_require__(727);
+var assignSymbols = __webpack_require__(626);
module.exports = Object.assign || function(obj/*, objects*/) {
if (obj === null || typeof obj === 'undefined') {
@@ -79916,7 +77310,7 @@ function isEnum(obj, key) {
/***/ }),
-/* 701 */
+/* 727 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -79929,7 +77323,7 @@ function isEnum(obj, key) {
-var isPlainObject = __webpack_require__(599);
+var isPlainObject = __webpack_require__(625);
module.exports = function isExtendable(val) {
return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);
@@ -79937,7 +77331,7 @@ module.exports = function isExtendable(val) {
/***/ }),
-/* 702 */
+/* 728 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -80283,15 +77677,15 @@ module.exports = function(nanomatch, options) {
/***/ }),
-/* 703 */
+/* 729 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var regexNot = __webpack_require__(601);
-var toRegex = __webpack_require__(584);
-var isOdd = __webpack_require__(704);
+var regexNot = __webpack_require__(627);
+var toRegex = __webpack_require__(610);
+var isOdd = __webpack_require__(730);
/**
* Characters to use in negation regex (we want to "not" match
@@ -80677,7 +78071,7 @@ module.exports.not = NOT_REGEX;
/***/ }),
-/* 704 */
+/* 730 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -80690,7 +78084,7 @@ module.exports.not = NOT_REGEX;
-var isNumber = __webpack_require__(705);
+var isNumber = __webpack_require__(731);
module.exports = function isOdd(i) {
if (!isNumber(i)) {
@@ -80704,7 +78098,7 @@ module.exports = function isOdd(i) {
/***/ }),
-/* 705 */
+/* 731 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -80732,14 +78126,14 @@ module.exports = function isNumber(num) {
/***/ }),
-/* 706 */
+/* 732 */
/***/ (function(module, exports, __webpack_require__) {
-module.exports = new (__webpack_require__(707))();
+module.exports = new (__webpack_require__(733))();
/***/ }),
-/* 707 */
+/* 733 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -80752,7 +78146,7 @@ module.exports = new (__webpack_require__(707))();
-var MapCache = __webpack_require__(694);
+var MapCache = __webpack_require__(720);
/**
* Create a new `FragmentCache` with an optional object to use for `caches`.
@@ -80874,7 +78268,7 @@ exports = module.exports = FragmentCache;
/***/ }),
-/* 708 */
+/* 734 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -80887,14 +78281,14 @@ var path = __webpack_require__(4);
* Module dependencies
*/
-var isWindows = __webpack_require__(709)();
-var Snapdragon = __webpack_require__(628);
-utils.define = __webpack_require__(710);
-utils.diff = __webpack_require__(711);
-utils.extend = __webpack_require__(700);
-utils.pick = __webpack_require__(712);
-utils.typeOf = __webpack_require__(594);
-utils.unique = __webpack_require__(604);
+var isWindows = __webpack_require__(735)();
+var Snapdragon = __webpack_require__(654);
+utils.define = __webpack_require__(736);
+utils.diff = __webpack_require__(737);
+utils.extend = __webpack_require__(726);
+utils.pick = __webpack_require__(738);
+utils.typeOf = __webpack_require__(620);
+utils.unique = __webpack_require__(630);
/**
* Returns true if the given value is effectively an empty string
@@ -81260,7 +78654,7 @@ utils.unixify = function(options) {
/***/ }),
-/* 709 */
+/* 735 */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -81288,7 +78682,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
/***/ }),
-/* 710 */
+/* 736 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -81301,8 +78695,8 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
-var isobject = __webpack_require__(592);
-var isDescriptor = __webpack_require__(593);
+var isobject = __webpack_require__(618);
+var isDescriptor = __webpack_require__(619);
var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty)
? Reflect.defineProperty
: Object.defineProperty;
@@ -81333,7 +78727,7 @@ module.exports = function defineProperty(obj, key, val) {
/***/ }),
-/* 711 */
+/* 737 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -81387,7 +78781,7 @@ function diffArray(one, two) {
/***/ }),
-/* 712 */
+/* 738 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -81400,7 +78794,7 @@ function diffArray(one, two) {
-var isObject = __webpack_require__(592);
+var isObject = __webpack_require__(618);
module.exports = function pick(obj, keys) {
if (!isObject(obj) && typeof obj !== 'function') {
@@ -81429,7 +78823,7 @@ module.exports = function pick(obj, keys) {
/***/ }),
-/* 713 */
+/* 739 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -81439,18 +78833,18 @@ module.exports = function pick(obj, keys) {
* Module dependencies
*/
-var extend = __webpack_require__(643);
-var unique = __webpack_require__(604);
-var toRegex = __webpack_require__(584);
+var extend = __webpack_require__(669);
+var unique = __webpack_require__(630);
+var toRegex = __webpack_require__(610);
/**
* Local dependencies
*/
-var compilers = __webpack_require__(714);
-var parsers = __webpack_require__(720);
-var Extglob = __webpack_require__(723);
-var utils = __webpack_require__(722);
+var compilers = __webpack_require__(740);
+var parsers = __webpack_require__(746);
+var Extglob = __webpack_require__(749);
+var utils = __webpack_require__(748);
var MAX_LENGTH = 1024 * 64;
/**
@@ -81767,13 +79161,13 @@ module.exports = extglob;
/***/ }),
-/* 714 */
+/* 740 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var brackets = __webpack_require__(715);
+var brackets = __webpack_require__(741);
/**
* Extglob compilers
@@ -81943,7 +79337,7 @@ module.exports = function(extglob) {
/***/ }),
-/* 715 */
+/* 741 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -81953,17 +79347,17 @@ module.exports = function(extglob) {
* Local dependencies
*/
-var compilers = __webpack_require__(716);
-var parsers = __webpack_require__(718);
+var compilers = __webpack_require__(742);
+var parsers = __webpack_require__(744);
/**
* Module dependencies
*/
-var debug = __webpack_require__(205)('expand-brackets');
-var extend = __webpack_require__(643);
-var Snapdragon = __webpack_require__(628);
-var toRegex = __webpack_require__(584);
+var debug = __webpack_require__(326)('expand-brackets');
+var extend = __webpack_require__(669);
+var Snapdragon = __webpack_require__(654);
+var toRegex = __webpack_require__(610);
/**
* Parses the given POSIX character class `pattern` and returns a
@@ -82161,13 +79555,13 @@ module.exports = brackets;
/***/ }),
-/* 716 */
+/* 742 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var posix = __webpack_require__(717);
+var posix = __webpack_require__(743);
module.exports = function(brackets) {
brackets.compiler
@@ -82255,7 +79649,7 @@ module.exports = function(brackets) {
/***/ }),
-/* 717 */
+/* 743 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -82284,14 +79678,14 @@ module.exports = {
/***/ }),
-/* 718 */
+/* 744 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var utils = __webpack_require__(719);
-var define = __webpack_require__(659);
+var utils = __webpack_require__(745);
+var define = __webpack_require__(685);
/**
* Text regex
@@ -82510,14 +79904,14 @@ module.exports.TEXT_REGEX = TEXT_REGEX;
/***/ }),
-/* 719 */
+/* 745 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var toRegex = __webpack_require__(584);
-var regexNot = __webpack_require__(601);
+var toRegex = __webpack_require__(610);
+var regexNot = __webpack_require__(627);
var cached;
/**
@@ -82551,15 +79945,15 @@ exports.createRegex = function(pattern, include) {
/***/ }),
-/* 720 */
+/* 746 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var brackets = __webpack_require__(715);
-var define = __webpack_require__(721);
-var utils = __webpack_require__(722);
+var brackets = __webpack_require__(741);
+var define = __webpack_require__(747);
+var utils = __webpack_require__(748);
/**
* Characters to use in text regex (we want to "not" match
@@ -82714,7 +80108,7 @@ module.exports = parsers;
/***/ }),
-/* 721 */
+/* 747 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -82727,7 +80121,7 @@ module.exports = parsers;
-var isDescriptor = __webpack_require__(593);
+var isDescriptor = __webpack_require__(619);
module.exports = function defineProperty(obj, prop, val) {
if (typeof obj !== 'object' && typeof obj !== 'function') {
@@ -82752,14 +80146,14 @@ module.exports = function defineProperty(obj, prop, val) {
/***/ }),
-/* 722 */
+/* 748 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var regex = __webpack_require__(601);
-var Cache = __webpack_require__(707);
+var regex = __webpack_require__(627);
+var Cache = __webpack_require__(733);
/**
* Utils
@@ -82828,7 +80222,7 @@ utils.createRegex = function(str) {
/***/ }),
-/* 723 */
+/* 749 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -82838,16 +80232,16 @@ utils.createRegex = function(str) {
* Module dependencies
*/
-var Snapdragon = __webpack_require__(628);
-var define = __webpack_require__(721);
-var extend = __webpack_require__(643);
+var Snapdragon = __webpack_require__(654);
+var define = __webpack_require__(747);
+var extend = __webpack_require__(669);
/**
* Local dependencies
*/
-var compilers = __webpack_require__(714);
-var parsers = __webpack_require__(720);
+var compilers = __webpack_require__(740);
+var parsers = __webpack_require__(746);
/**
* Customize Snapdragon parser and renderer
@@ -82913,16 +80307,16 @@ module.exports = Extglob;
/***/ }),
-/* 724 */
+/* 750 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var extglob = __webpack_require__(713);
-var nanomatch = __webpack_require__(699);
-var regexNot = __webpack_require__(601);
-var toRegex = __webpack_require__(584);
+var extglob = __webpack_require__(739);
+var nanomatch = __webpack_require__(725);
+var regexNot = __webpack_require__(627);
+var toRegex = __webpack_require__(610);
var not;
/**
@@ -83003,14 +80397,14 @@ function textRegex(pattern) {
/***/ }),
-/* 725 */
+/* 751 */
/***/ (function(module, exports, __webpack_require__) {
-module.exports = new (__webpack_require__(707))();
+module.exports = new (__webpack_require__(733))();
/***/ }),
-/* 726 */
+/* 752 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -83023,13 +80417,13 @@ var path = __webpack_require__(4);
* Module dependencies
*/
-var Snapdragon = __webpack_require__(628);
-utils.define = __webpack_require__(727);
-utils.diff = __webpack_require__(711);
-utils.extend = __webpack_require__(696);
-utils.pick = __webpack_require__(712);
-utils.typeOf = __webpack_require__(594);
-utils.unique = __webpack_require__(604);
+var Snapdragon = __webpack_require__(654);
+utils.define = __webpack_require__(753);
+utils.diff = __webpack_require__(737);
+utils.extend = __webpack_require__(722);
+utils.pick = __webpack_require__(738);
+utils.typeOf = __webpack_require__(620);
+utils.unique = __webpack_require__(630);
/**
* Returns true if the platform is windows, or `path.sep` is `\\`.
@@ -83326,7 +80720,7 @@ utils.unixify = function(options) {
/***/ }),
-/* 727 */
+/* 753 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -83339,8 +80733,8 @@ utils.unixify = function(options) {
-var isobject = __webpack_require__(592);
-var isDescriptor = __webpack_require__(593);
+var isobject = __webpack_require__(618);
+var isDescriptor = __webpack_require__(619);
var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty)
? Reflect.defineProperty
: Object.defineProperty;
@@ -83371,7 +80765,7 @@ module.exports = function defineProperty(obj, key, val) {
/***/ }),
-/* 728 */
+/* 754 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -83390,9 +80784,9 @@ var __extends = (this && this.__extends) || (function () {
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
-var readdir = __webpack_require__(729);
-var reader_1 = __webpack_require__(742);
-var fs_stream_1 = __webpack_require__(746);
+var readdir = __webpack_require__(755);
+var reader_1 = __webpack_require__(768);
+var fs_stream_1 = __webpack_require__(772);
var ReaderAsync = /** @class */ (function (_super) {
__extends(ReaderAsync, _super);
function ReaderAsync() {
@@ -83453,15 +80847,15 @@ exports.default = ReaderAsync;
/***/ }),
-/* 729 */
+/* 755 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const readdirSync = __webpack_require__(730);
-const readdirAsync = __webpack_require__(738);
-const readdirStream = __webpack_require__(741);
+const readdirSync = __webpack_require__(756);
+const readdirAsync = __webpack_require__(764);
+const readdirStream = __webpack_require__(767);
module.exports = exports = readdirAsyncPath;
exports.readdir = exports.readdirAsync = exports.async = readdirAsyncPath;
@@ -83545,7 +80939,7 @@ function readdirStreamStat (dir, options) {
/***/ }),
-/* 730 */
+/* 756 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -83553,11 +80947,11 @@ function readdirStreamStat (dir, options) {
module.exports = readdirSync;
-const DirectoryReader = __webpack_require__(731);
+const DirectoryReader = __webpack_require__(757);
let syncFacade = {
- fs: __webpack_require__(736),
- forEach: __webpack_require__(737),
+ fs: __webpack_require__(762),
+ forEach: __webpack_require__(763),
sync: true
};
@@ -83586,18 +80980,18 @@ function readdirSync (dir, options, internalOptions) {
/***/ }),
-/* 731 */
+/* 757 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const Readable = __webpack_require__(173).Readable;
-const EventEmitter = __webpack_require__(164).EventEmitter;
+const Readable = __webpack_require__(294).Readable;
+const EventEmitter = __webpack_require__(285).EventEmitter;
const path = __webpack_require__(4);
-const normalizeOptions = __webpack_require__(732);
-const stat = __webpack_require__(734);
-const call = __webpack_require__(735);
+const normalizeOptions = __webpack_require__(758);
+const stat = __webpack_require__(760);
+const call = __webpack_require__(761);
/**
* Asynchronously reads the contents of a directory and streams the results
@@ -83973,14 +81367,14 @@ module.exports = DirectoryReader;
/***/ }),
-/* 732 */
+/* 758 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
const path = __webpack_require__(4);
-const globToRegExp = __webpack_require__(733);
+const globToRegExp = __webpack_require__(759);
module.exports = normalizeOptions;
@@ -84157,7 +81551,7 @@ function normalizeOptions (options, internalOptions) {
/***/ }),
-/* 733 */
+/* 759 */
/***/ (function(module, exports) {
module.exports = function (glob, opts) {
@@ -84294,13 +81688,13 @@ module.exports = function (glob, opts) {
/***/ }),
-/* 734 */
+/* 760 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const call = __webpack_require__(735);
+const call = __webpack_require__(761);
module.exports = stat;
@@ -84375,7 +81769,7 @@ function symlinkStat (fs, path, lstats, callback) {
/***/ }),
-/* 735 */
+/* 761 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -84436,14 +81830,14 @@ function callOnce (fn) {
/***/ }),
-/* 736 */
+/* 762 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const fs = __webpack_require__(132);
-const call = __webpack_require__(735);
+const fs = __webpack_require__(253);
+const call = __webpack_require__(761);
/**
* A facade around {@link fs.readdirSync} that allows it to be called
@@ -84507,7 +81901,7 @@ exports.lstat = function (path, callback) {
/***/ }),
-/* 737 */
+/* 763 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -84536,7 +81930,7 @@ function syncForEach (array, iterator, done) {
/***/ }),
-/* 738 */
+/* 764 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -84544,12 +81938,12 @@ function syncForEach (array, iterator, done) {
module.exports = readdirAsync;
-const maybe = __webpack_require__(739);
-const DirectoryReader = __webpack_require__(731);
+const maybe = __webpack_require__(765);
+const DirectoryReader = __webpack_require__(757);
let asyncFacade = {
- fs: __webpack_require__(132),
- forEach: __webpack_require__(740),
+ fs: __webpack_require__(253),
+ forEach: __webpack_require__(766),
async: true
};
@@ -84591,7 +81985,7 @@ function readdirAsync (dir, options, callback, internalOptions) {
/***/ }),
-/* 739 */
+/* 765 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -84618,7 +82012,7 @@ module.exports = function maybe (cb, promise) {
/***/ }),
-/* 740 */
+/* 766 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -84654,7 +82048,7 @@ function asyncForEach (array, iterator, done) {
/***/ }),
-/* 741 */
+/* 767 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -84662,11 +82056,11 @@ function asyncForEach (array, iterator, done) {
module.exports = readdirStream;
-const DirectoryReader = __webpack_require__(731);
+const DirectoryReader = __webpack_require__(757);
let streamFacade = {
- fs: __webpack_require__(132),
- forEach: __webpack_require__(740),
+ fs: __webpack_require__(253),
+ forEach: __webpack_require__(766),
async: true
};
@@ -84686,16 +82080,16 @@ function readdirStream (dir, options, internalOptions) {
/***/ }),
-/* 742 */
+/* 768 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var path = __webpack_require__(4);
-var deep_1 = __webpack_require__(743);
-var entry_1 = __webpack_require__(745);
-var pathUtil = __webpack_require__(744);
+var deep_1 = __webpack_require__(769);
+var entry_1 = __webpack_require__(771);
+var pathUtil = __webpack_require__(770);
var Reader = /** @class */ (function () {
function Reader(options) {
this.options = options;
@@ -84761,14 +82155,14 @@ exports.default = Reader;
/***/ }),
-/* 743 */
+/* 769 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-var pathUtils = __webpack_require__(744);
-var patternUtils = __webpack_require__(578);
+var pathUtils = __webpack_require__(770);
+var patternUtils = __webpack_require__(604);
var DeepFilter = /** @class */ (function () {
function DeepFilter(options, micromatchOptions) {
this.options = options;
@@ -84851,7 +82245,7 @@ exports.default = DeepFilter;
/***/ }),
-/* 744 */
+/* 770 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -84882,14 +82276,14 @@ exports.makeAbsolute = makeAbsolute;
/***/ }),
-/* 745 */
+/* 771 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-var pathUtils = __webpack_require__(744);
-var patternUtils = __webpack_require__(578);
+var pathUtils = __webpack_require__(770);
+var patternUtils = __webpack_require__(604);
var EntryFilter = /** @class */ (function () {
function EntryFilter(options, micromatchOptions) {
this.options = options;
@@ -84974,7 +82368,7 @@ exports.default = EntryFilter;
/***/ }),
-/* 746 */
+/* 772 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -84993,9 +82387,9 @@ var __extends = (this && this.__extends) || (function () {
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
-var stream = __webpack_require__(173);
-var fsStat = __webpack_require__(747);
-var fs_1 = __webpack_require__(751);
+var stream = __webpack_require__(294);
+var fsStat = __webpack_require__(773);
+var fs_1 = __webpack_require__(777);
var FileSystemStream = /** @class */ (function (_super) {
__extends(FileSystemStream, _super);
function FileSystemStream() {
@@ -85045,14 +82439,14 @@ exports.default = FileSystemStream;
/***/ }),
-/* 747 */
+/* 773 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const optionsManager = __webpack_require__(748);
-const statProvider = __webpack_require__(750);
+const optionsManager = __webpack_require__(774);
+const statProvider = __webpack_require__(776);
/**
* Asynchronous API.
*/
@@ -85083,13 +82477,13 @@ exports.statSync = statSync;
/***/ }),
-/* 748 */
+/* 774 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const fsAdapter = __webpack_require__(749);
+const fsAdapter = __webpack_require__(775);
function prepare(opts) {
const options = Object.assign({
fs: fsAdapter.getFileSystemAdapter(opts ? opts.fs : undefined),
@@ -85102,13 +82496,13 @@ exports.prepare = prepare;
/***/ }),
-/* 749 */
+/* 775 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const fs = __webpack_require__(132);
+const fs = __webpack_require__(253);
exports.FILE_SYSTEM_ADAPTER = {
lstat: fs.lstat,
stat: fs.stat,
@@ -85125,7 +82519,7 @@ exports.getFileSystemAdapter = getFileSystemAdapter;
/***/ }),
-/* 750 */
+/* 776 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -85177,7 +82571,7 @@ exports.isFollowedSymlink = isFollowedSymlink;
/***/ }),
-/* 751 */
+/* 777 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -85208,7 +82602,7 @@ exports.default = FileSystem;
/***/ }),
-/* 752 */
+/* 778 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -85227,10 +82621,10 @@ var __extends = (this && this.__extends) || (function () {
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
-var stream = __webpack_require__(173);
-var readdir = __webpack_require__(729);
-var reader_1 = __webpack_require__(742);
-var fs_stream_1 = __webpack_require__(746);
+var stream = __webpack_require__(294);
+var readdir = __webpack_require__(755);
+var reader_1 = __webpack_require__(768);
+var fs_stream_1 = __webpack_require__(772);
var TransformStream = /** @class */ (function (_super) {
__extends(TransformStream, _super);
function TransformStream(reader) {
@@ -85298,7 +82692,7 @@ exports.default = ReaderStream;
/***/ }),
-/* 753 */
+/* 779 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -85317,9 +82711,9 @@ var __extends = (this && this.__extends) || (function () {
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
-var readdir = __webpack_require__(729);
-var reader_1 = __webpack_require__(742);
-var fs_sync_1 = __webpack_require__(754);
+var readdir = __webpack_require__(755);
+var reader_1 = __webpack_require__(768);
+var fs_sync_1 = __webpack_require__(780);
var ReaderSync = /** @class */ (function (_super) {
__extends(ReaderSync, _super);
function ReaderSync() {
@@ -85379,7 +82773,7 @@ exports.default = ReaderSync;
/***/ }),
-/* 754 */
+/* 780 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -85398,8 +82792,8 @@ var __extends = (this && this.__extends) || (function () {
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
-var fsStat = __webpack_require__(747);
-var fs_1 = __webpack_require__(751);
+var fsStat = __webpack_require__(773);
+var fs_1 = __webpack_require__(777);
var FileSystemSync = /** @class */ (function (_super) {
__extends(FileSystemSync, _super);
function FileSystemSync() {
@@ -85445,7 +82839,7 @@ exports.default = FileSystemSync;
/***/ }),
-/* 755 */
+/* 781 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -85461,13 +82855,13 @@ exports.flatten = flatten;
/***/ }),
-/* 756 */
+/* 782 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-var merge2 = __webpack_require__(243);
+var merge2 = __webpack_require__(364);
/**
* Merge multiple streams and propagate their errors into one stream in parallel.
*/
@@ -85482,13 +82876,13 @@ exports.merge = merge;
/***/ }),
-/* 757 */
+/* 783 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
const path = __webpack_require__(4);
-const pathType = __webpack_require__(758);
+const pathType = __webpack_require__(784);
const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0];
@@ -85554,13 +82948,13 @@ module.exports.sync = (input, opts) => {
/***/ }),
-/* 758 */
+/* 784 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const fs = __webpack_require__(132);
-const pify = __webpack_require__(759);
+const fs = __webpack_require__(253);
+const pify = __webpack_require__(785);
function type(fn, fn2, fp) {
if (typeof fp !== 'string') {
@@ -85603,7 +82997,7 @@ exports.symlinkSync = typeSync.bind(null, 'lstatSync', 'isSymbolicLink');
/***/ }),
-/* 759 */
+/* 785 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -85694,17 +83088,17 @@ module.exports = (obj, opts) => {
/***/ }),
-/* 760 */
+/* 786 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const fs = __webpack_require__(132);
+const fs = __webpack_require__(253);
const path = __webpack_require__(4);
-const fastGlob = __webpack_require__(574);
-const gitIgnore = __webpack_require__(761);
-const pify = __webpack_require__(405);
-const slash = __webpack_require__(762);
+const fastGlob = __webpack_require__(600);
+const gitIgnore = __webpack_require__(787);
+const pify = __webpack_require__(526);
+const slash = __webpack_require__(788);
const DEFAULT_IGNORE = [
'**/node_modules/**',
@@ -85802,7 +83196,7 @@ module.exports.sync = options => {
/***/ }),
-/* 761 */
+/* 787 */
/***/ (function(module, exports) {
// A simple implementation of make-array
@@ -86271,7 +83665,7 @@ module.exports = options => new IgnoreBase(options)
/***/ }),
-/* 762 */
+/* 788 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -86289,7 +83683,7 @@ module.exports = input => {
/***/ }),
-/* 763 */
+/* 789 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -86302,7 +83696,7 @@ module.exports = input => {
-var isGlob = __webpack_require__(764);
+var isGlob = __webpack_require__(790);
module.exports = function hasGlob(val) {
if (val == null) return false;
@@ -86322,7 +83716,7 @@ module.exports = function hasGlob(val) {
/***/ }),
-/* 764 */
+/* 790 */
/***/ (function(module, exports, __webpack_require__) {
/*!
@@ -86332,7 +83726,7 @@ module.exports = function hasGlob(val) {
* Licensed under the MIT License.
*/
-var isExtglob = __webpack_require__(267);
+var isExtglob = __webpack_require__(388);
module.exports = function isGlob(str) {
if (typeof str !== 'string' || str === '') {
@@ -86353,17 +83747,17 @@ module.exports = function isGlob(str) {
/***/ }),
-/* 765 */
+/* 791 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
const path = __webpack_require__(4);
-const {constants: fsConstants} = __webpack_require__(132);
-const pEvent = __webpack_require__(766);
-const CpFileError = __webpack_require__(769);
-const fs = __webpack_require__(771);
-const ProgressEmitter = __webpack_require__(774);
+const {constants: fsConstants} = __webpack_require__(253);
+const pEvent = __webpack_require__(792);
+const CpFileError = __webpack_require__(795);
+const fs = __webpack_require__(797);
+const ProgressEmitter = __webpack_require__(800);
const cpFileAsync = async (source, destination, options, progressEmitter) => {
let readError;
@@ -86477,12 +83871,12 @@ module.exports.sync = (source, destination, options) => {
/***/ }),
-/* 766 */
+/* 792 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const pTimeout = __webpack_require__(767);
+const pTimeout = __webpack_require__(793);
const symbolAsyncIterator = Symbol.asyncIterator || '@@asyncIterator';
@@ -86773,12 +84167,12 @@ module.exports.iterator = (emitter, event, options) => {
/***/ }),
-/* 767 */
+/* 793 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const pFinally = __webpack_require__(768);
+const pFinally = __webpack_require__(794);
class TimeoutError extends Error {
constructor(message) {
@@ -86824,7 +84218,7 @@ module.exports.TimeoutError = TimeoutError;
/***/ }),
-/* 768 */
+/* 794 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -86846,12 +84240,12 @@ module.exports = (promise, onFinally) => {
/***/ }),
-/* 769 */
+/* 795 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const NestedError = __webpack_require__(770);
+const NestedError = __webpack_require__(796);
class CpFileError extends NestedError {
constructor(message, nested) {
@@ -86865,10 +84259,10 @@ module.exports = CpFileError;
/***/ }),
-/* 770 */
+/* 796 */
/***/ (function(module, exports, __webpack_require__) {
-var inherits = __webpack_require__(113).inherits;
+var inherits = __webpack_require__(234).inherits;
var NestedError = function (message, nested) {
this.nested = nested;
@@ -86921,16 +84315,16 @@ module.exports = NestedError;
/***/ }),
-/* 771 */
+/* 797 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const {promisify} = __webpack_require__(113);
-const fs = __webpack_require__(233);
-const makeDir = __webpack_require__(772);
-const pEvent = __webpack_require__(766);
-const CpFileError = __webpack_require__(769);
+const {promisify} = __webpack_require__(234);
+const fs = __webpack_require__(354);
+const makeDir = __webpack_require__(798);
+const pEvent = __webpack_require__(792);
+const CpFileError = __webpack_require__(795);
const stat = promisify(fs.stat);
const lstat = promisify(fs.lstat);
@@ -87027,15 +84421,15 @@ exports.copyFileSync = (source, destination, flags) => {
/***/ }),
-/* 772 */
+/* 798 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const fs = __webpack_require__(132);
+const fs = __webpack_require__(253);
const path = __webpack_require__(4);
-const {promisify} = __webpack_require__(113);
-const semver = __webpack_require__(773);
+const {promisify} = __webpack_require__(234);
+const semver = __webpack_require__(799);
const useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0');
@@ -87190,7 +84584,7 @@ module.exports.sync = (input, options) => {
/***/ }),
-/* 773 */
+/* 799 */
/***/ (function(module, exports) {
exports = module.exports = SemVer
@@ -88792,12 +86186,12 @@ function coerce (version, options) {
/***/ }),
-/* 774 */
+/* 800 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const EventEmitter = __webpack_require__(164);
+const EventEmitter = __webpack_require__(285);
const written = new WeakMap();
@@ -88833,7 +86227,7 @@ module.exports = ProgressEmitter;
/***/ }),
-/* 775 */
+/* 801 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -88879,12 +86273,12 @@ exports.default = module.exports;
/***/ }),
-/* 776 */
+/* 802 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const pMap = __webpack_require__(777);
+const pMap = __webpack_require__(803);
const pFilter = async (iterable, filterer, options) => {
const values = await pMap(
@@ -88901,7 +86295,7 @@ module.exports.default = pFilter;
/***/ }),
-/* 777 */
+/* 803 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -88980,12 +86374,12 @@ module.exports.default = pMap;
/***/ }),
-/* 778 */
+/* 804 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const NestedError = __webpack_require__(770);
+const NestedError = __webpack_require__(796);
class CpyError extends NestedError {
constructor(message, nested) {
@@ -88999,18 +86393,18 @@ module.exports = CpyError;
/***/ }),
-/* 779 */
+/* 805 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const fs = __webpack_require__(132);
-const arrayUnion = __webpack_require__(242);
-const merge2 = __webpack_require__(243);
-const fastGlob = __webpack_require__(780);
-const dirGlob = __webpack_require__(326);
-const gitignore = __webpack_require__(805);
-const {FilterStream, UniqueStream} = __webpack_require__(806);
+const fs = __webpack_require__(253);
+const arrayUnion = __webpack_require__(363);
+const merge2 = __webpack_require__(364);
+const fastGlob = __webpack_require__(806);
+const dirGlob = __webpack_require__(447);
+const gitignore = __webpack_require__(831);
+const {FilterStream, UniqueStream} = __webpack_require__(832);
const DEFAULT_FILTER = () => false;
@@ -89187,17 +86581,17 @@ module.exports.gitignore = gitignore;
/***/ }),
-/* 780 */
+/* 806 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const taskManager = __webpack_require__(781);
-const async_1 = __webpack_require__(791);
-const stream_1 = __webpack_require__(801);
-const sync_1 = __webpack_require__(802);
-const settings_1 = __webpack_require__(804);
-const utils = __webpack_require__(782);
+const taskManager = __webpack_require__(807);
+const async_1 = __webpack_require__(817);
+const stream_1 = __webpack_require__(827);
+const sync_1 = __webpack_require__(828);
+const settings_1 = __webpack_require__(830);
+const utils = __webpack_require__(808);
async function FastGlob(source, options) {
assertPatternsInput(source);
const works = getWorks(source, async_1.default, options);
@@ -89261,14 +86655,14 @@ module.exports = FastGlob;
/***/ }),
-/* 781 */
+/* 807 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
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__(782);
+const utils = __webpack_require__(808);
function generate(patterns, settings) {
const positivePatterns = getPositivePatterns(patterns);
const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore);
@@ -89348,31 +86742,31 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask;
/***/ }),
-/* 782 */
+/* 808 */
/***/ (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__(783);
+const array = __webpack_require__(809);
exports.array = array;
-const errno = __webpack_require__(784);
+const errno = __webpack_require__(810);
exports.errno = errno;
-const fs = __webpack_require__(785);
+const fs = __webpack_require__(811);
exports.fs = fs;
-const path = __webpack_require__(786);
+const path = __webpack_require__(812);
exports.path = path;
-const pattern = __webpack_require__(787);
+const pattern = __webpack_require__(813);
exports.pattern = pattern;
-const stream = __webpack_require__(789);
+const stream = __webpack_require__(815);
exports.stream = stream;
-const string = __webpack_require__(790);
+const string = __webpack_require__(816);
exports.string = string;
/***/ }),
-/* 783 */
+/* 809 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -89401,7 +86795,7 @@ exports.splitWhen = splitWhen;
/***/ }),
-/* 784 */
+/* 810 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -89415,7 +86809,7 @@ exports.isEnoentCodeError = isEnoentCodeError;
/***/ }),
-/* 785 */
+/* 811 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -89441,7 +86835,7 @@ exports.createDirentFromStats = createDirentFromStats;
/***/ }),
-/* 786 */
+/* 812 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -89481,7 +86875,7 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment;
/***/ }),
-/* 787 */
+/* 813 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -89489,8 +86883,8 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment;
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__(4);
-const globParent = __webpack_require__(265);
-const micromatch = __webpack_require__(788);
+const globParent = __webpack_require__(386);
+const micromatch = __webpack_require__(814);
const GLOBSTAR = '**';
const ESCAPE_SYMBOL = '\\';
const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;
@@ -89645,16 +87039,16 @@ exports.matchAny = matchAny;
/***/ }),
-/* 788 */
+/* 814 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const util = __webpack_require__(113);
-const braces = __webpack_require__(269);
-const picomatch = __webpack_require__(279);
-const utils = __webpack_require__(282);
+const util = __webpack_require__(234);
+const braces = __webpack_require__(390);
+const picomatch = __webpack_require__(400);
+const utils = __webpack_require__(403);
const isEmptyString = val => val === '' || val === './';
/**
@@ -90119,14 +87513,14 @@ module.exports = micromatch;
/***/ }),
-/* 789 */
+/* 815 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.merge = void 0;
-const merge2 = __webpack_require__(243);
+const merge2 = __webpack_require__(364);
function merge(streams) {
const mergedStream = merge2(streams);
streams.forEach((stream) => {
@@ -90143,7 +87537,7 @@ function propagateCloseEventToSources(streams) {
/***/ }),
-/* 790 */
+/* 816 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -90161,14 +87555,14 @@ exports.isEmpty = isEmpty;
/***/ }),
-/* 791 */
+/* 817 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const stream_1 = __webpack_require__(792);
-const provider_1 = __webpack_require__(794);
+const stream_1 = __webpack_require__(818);
+const provider_1 = __webpack_require__(820);
class ProviderAsync extends provider_1.default {
constructor() {
super(...arguments);
@@ -90196,16 +87590,16 @@ exports.default = ProviderAsync;
/***/ }),
-/* 792 */
+/* 818 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const stream_1 = __webpack_require__(173);
-const fsStat = __webpack_require__(289);
-const fsWalk = __webpack_require__(294);
-const reader_1 = __webpack_require__(793);
+const stream_1 = __webpack_require__(294);
+const fsStat = __webpack_require__(410);
+const fsWalk = __webpack_require__(415);
+const reader_1 = __webpack_require__(819);
class ReaderStream extends reader_1.default {
constructor() {
super(...arguments);
@@ -90258,15 +87652,15 @@ exports.default = ReaderStream;
/***/ }),
-/* 793 */
+/* 819 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const path = __webpack_require__(4);
-const fsStat = __webpack_require__(289);
-const utils = __webpack_require__(782);
+const fsStat = __webpack_require__(410);
+const utils = __webpack_require__(808);
class Reader {
constructor(_settings) {
this._settings = _settings;
@@ -90298,17 +87692,17 @@ exports.default = Reader;
/***/ }),
-/* 794 */
+/* 820 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const path = __webpack_require__(4);
-const deep_1 = __webpack_require__(795);
-const entry_1 = __webpack_require__(798);
-const error_1 = __webpack_require__(799);
-const entry_2 = __webpack_require__(800);
+const deep_1 = __webpack_require__(821);
+const entry_1 = __webpack_require__(824);
+const error_1 = __webpack_require__(825);
+const entry_2 = __webpack_require__(826);
class Provider {
constructor(_settings) {
this._settings = _settings;
@@ -90353,14 +87747,14 @@ exports.default = Provider;
/***/ }),
-/* 795 */
+/* 821 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const utils = __webpack_require__(782);
-const partial_1 = __webpack_require__(796);
+const utils = __webpack_require__(808);
+const partial_1 = __webpack_require__(822);
class DeepFilter {
constructor(_settings, _micromatchOptions) {
this._settings = _settings;
@@ -90422,13 +87816,13 @@ exports.default = DeepFilter;
/***/ }),
-/* 796 */
+/* 822 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const matcher_1 = __webpack_require__(797);
+const matcher_1 = __webpack_require__(823);
class PartialMatcher extends matcher_1.default {
match(filepath) {
const parts = filepath.split('/');
@@ -90467,13 +87861,13 @@ exports.default = PartialMatcher;
/***/ }),
-/* 797 */
+/* 823 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const utils = __webpack_require__(782);
+const utils = __webpack_require__(808);
class Matcher {
constructor(_patterns, _settings, _micromatchOptions) {
this._patterns = _patterns;
@@ -90524,13 +87918,13 @@ exports.default = Matcher;
/***/ }),
-/* 798 */
+/* 824 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const utils = __webpack_require__(782);
+const utils = __webpack_require__(808);
class EntryFilter {
constructor(_settings, _micromatchOptions) {
this._settings = _settings;
@@ -90587,13 +87981,13 @@ exports.default = EntryFilter;
/***/ }),
-/* 799 */
+/* 825 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const utils = __webpack_require__(782);
+const utils = __webpack_require__(808);
class ErrorFilter {
constructor(_settings) {
this._settings = _settings;
@@ -90609,13 +88003,13 @@ exports.default = ErrorFilter;
/***/ }),
-/* 800 */
+/* 826 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const utils = __webpack_require__(782);
+const utils = __webpack_require__(808);
class EntryTransformer {
constructor(_settings) {
this._settings = _settings;
@@ -90642,15 +88036,15 @@ exports.default = EntryTransformer;
/***/ }),
-/* 801 */
+/* 827 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const stream_1 = __webpack_require__(173);
-const stream_2 = __webpack_require__(792);
-const provider_1 = __webpack_require__(794);
+const stream_1 = __webpack_require__(294);
+const stream_2 = __webpack_require__(818);
+const provider_1 = __webpack_require__(820);
class ProviderStream extends provider_1.default {
constructor() {
super(...arguments);
@@ -90680,14 +88074,14 @@ exports.default = ProviderStream;
/***/ }),
-/* 802 */
+/* 828 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const sync_1 = __webpack_require__(803);
-const provider_1 = __webpack_require__(794);
+const sync_1 = __webpack_require__(829);
+const provider_1 = __webpack_require__(820);
class ProviderSync extends provider_1.default {
constructor() {
super(...arguments);
@@ -90710,15 +88104,15 @@ exports.default = ProviderSync;
/***/ }),
-/* 803 */
+/* 829 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const fsStat = __webpack_require__(289);
-const fsWalk = __webpack_require__(294);
-const reader_1 = __webpack_require__(793);
+const fsStat = __webpack_require__(410);
+const fsWalk = __webpack_require__(415);
+const reader_1 = __webpack_require__(819);
class ReaderSync extends reader_1.default {
constructor() {
super(...arguments);
@@ -90760,15 +88154,15 @@ exports.default = ReaderSync;
/***/ }),
-/* 804 */
+/* 830 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
-const fs = __webpack_require__(132);
-const os = __webpack_require__(122);
+const fs = __webpack_require__(253);
+const os = __webpack_require__(243);
/**
* 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
@@ -90824,17 +88218,17 @@ exports.default = Settings;
/***/ }),
-/* 805 */
+/* 831 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const {promisify} = __webpack_require__(113);
-const fs = __webpack_require__(132);
+const {promisify} = __webpack_require__(234);
+const fs = __webpack_require__(253);
const path = __webpack_require__(4);
-const fastGlob = __webpack_require__(780);
-const gitIgnore = __webpack_require__(329);
-const slash = __webpack_require__(330);
+const fastGlob = __webpack_require__(806);
+const gitIgnore = __webpack_require__(450);
+const slash = __webpack_require__(451);
const DEFAULT_IGNORE = [
'**/node_modules/**',
@@ -90951,12 +88345,12 @@ module.exports.sync = options => {
/***/ }),
-/* 806 */
+/* 832 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-const {Transform} = __webpack_require__(173);
+const {Transform} = __webpack_require__(294);
class ObjectTransform extends Transform {
constructor() {
@@ -91004,7 +88398,7 @@ module.exports = {
/***/ }),
-/* 807 */
+/* 833 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -91012,17 +88406,17 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildNonBazelProductionProjects", function() { return buildNonBazelProductionProjects; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProductionProjects", function() { return getProductionProjects; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildProject", function() { return buildProject; });
-/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(567);
+/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(593);
/* 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__(240);
+/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(361);
/* 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__(4);
/* 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__(564);
-/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(231);
-/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(220);
-/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(343);
-/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(340);
+/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(590);
+/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(352);
+/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(341);
+/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(464);
+/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(461);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
diff --git a/packages/kbn-pm/src/commands/bootstrap.ts b/packages/kbn-pm/src/commands/bootstrap.ts
index 691265935b94f..2dd59d499b585 100644
--- a/packages/kbn-pm/src/commands/bootstrap.ts
+++ b/packages/kbn-pm/src/commands/bootstrap.ts
@@ -71,7 +71,7 @@ export const BootstrapCommand: ICommand = {
if (forceInstall) {
await time('force install dependencies', async () => {
await removeYarnIntegrityFileIfExists(resolve(kibanaProjectPath, 'node_modules'));
- await runBazel(['clean']);
+ await runBazel(['clean', '--expunge']);
await runBazel(['run', '@yarn//:yarn'], runOffline, {
env: {
SASS_BINARY_SITE:
diff --git a/packages/kbn-pm/src/utils/watch.ts b/packages/kbn-pm/src/utils/watch.ts
index 70e6aa8dd49c7..0b4b1c2956080 100644
--- a/packages/kbn-pm/src/utils/watch.ts
+++ b/packages/kbn-pm/src/utils/watch.ts
@@ -87,8 +87,8 @@ export function waitUntilWatchIsReady(stream: NodeJS.EventEmitter, opts: IWatchO
stream.once('error', onErrorListener);
stream.on('data', onDataListener);
- return Rx.race(getWatchHandlers(buildOutput$, opts))
- .pipe(
+ return Rx.firstValueFrom(
+ Rx.race(getWatchHandlers(buildOutput$, opts)).pipe(
mergeMap((whenReady) => whenReady),
finalize(() => {
stream.removeListener('data', onDataListener);
@@ -98,5 +98,5 @@ export function waitUntilWatchIsReady(stream: NodeJS.EventEmitter, opts: IWatchO
buildOutput$.complete();
})
)
- .toPromise();
+ );
}
diff --git a/packages/kbn-react-field/src/field_icon/__snapshots__/field_icon.test.tsx.snap b/packages/kbn-react-field/src/field_icon/__snapshots__/field_icon.test.tsx.snap
index cd81705dd3c19..7328e2c61b961 100644
--- a/packages/kbn-react-field/src/field_icon/__snapshots__/field_icon.test.tsx.snap
+++ b/packages/kbn-react-field/src/field_icon/__snapshots__/field_icon.test.tsx.snap
@@ -139,7 +139,7 @@ exports[`FieldIcon renders known field types murmur3 is rendered 1`] = `
diff --git a/packages/kbn-react-field/src/field_icon/field_icon.tsx b/packages/kbn-react-field/src/field_icon/field_icon.tsx
index be62a8df60274..621b8d0199d04 100644
--- a/packages/kbn-react-field/src/field_icon/field_icon.tsx
+++ b/packages/kbn-react-field/src/field_icon/field_icon.tsx
@@ -46,7 +46,7 @@ export const typeToEuiIconMap: Partial> = {
ip: { iconType: 'tokenIP' },
ip_range: { iconType: 'tokenIP' },
// is a plugin's data type https://www.elastic.co/guide/en/elasticsearch/plugins/current/mapper-murmur3-usage.html
- murmur3: { iconType: 'tokenFile' },
+ murmur3: { iconType: 'tokenSearchType' },
number: { iconType: 'tokenNumber' },
number_range: { iconType: 'tokenNumber' },
histogram: { iconType: 'tokenHistogram' },
diff --git a/packages/kbn-shared-ux-components/src/exit_full_screen_button/__snapshots__/exit_full_screen_button.test.tsx.snap b/packages/kbn-shared-ux-components/src/exit_full_screen_button/__snapshots__/exit_full_screen_button.test.tsx.snap
index 5f37bccd3985c..5c20a52d05812 100644
--- a/packages/kbn-shared-ux-components/src/exit_full_screen_button/__snapshots__/exit_full_screen_button.test.tsx.snap
+++ b/packages/kbn-shared-ux-components/src/exit_full_screen_button/__snapshots__/exit_full_screen_button.test.tsx.snap
@@ -4,9 +4,7 @@ exports[` is rendered 1`] = `
*/
export const IconButtonGroup = withSuspense(LazyIconButtonGroup);
+/**
+ * The lazily loaded `KibanaPageTemplate` component that is wrapped by the `withSuspense` HOC. Consumers should use
+ * `React.Suspense` or `withSuspense` HOC to load this component.
+ */
+export const KibanaPageTemplateLazy = React.lazy(() =>
+ import('./page_template').then(({ KibanaPageTemplate }) => ({
+ default: KibanaPageTemplate,
+ }))
+);
+
+/**
+ * A `KibanaPageTemplate` component that is wrapped by the `withSuspense` HOC. This component can
+ * be used directly by consumers and will load the `KibanaPageTemplateLazy` component lazily with
+ * a predefined fallback and error boundary.
+ */
+export const KibanaPageTemplate = withSuspense(KibanaPageTemplateLazy);
+
/**
* The lazily loaded `KibanaPageTemplateSolutionNav` component that is wrapped by the `withSuspense` HOC. Consumers should use
* `React.Suspense` or `withSuspense` HOC to load this component.
diff --git a/packages/kbn-shared-ux-components/src/page_template/__snapshots__/page_template.test.tsx.snap b/packages/kbn-shared-ux-components/src/page_template/__snapshots__/page_template.test.tsx.snap
new file mode 100644
index 0000000000000..e41292f549c99
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/__snapshots__/page_template.test.tsx.snap
@@ -0,0 +1,197 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`KibanaPageTemplate render basic template 1`] = `
+
+`;
+
+exports[`KibanaPageTemplate render noDataConfig && solutionNav 1`] = `
+
+`;
+
+exports[`KibanaPageTemplate render noDataConfig 1`] = `
+
+`;
+
+exports[`KibanaPageTemplate render solutionNav 1`] = `
+
+
+ Child element
+
+
+`;
diff --git a/packages/kbn-shared-ux-components/src/page_template/__snapshots__/page_template_inner.test.tsx.snap b/packages/kbn-shared-ux-components/src/page_template/__snapshots__/page_template_inner.test.tsx.snap
new file mode 100644
index 0000000000000..ef665dff6fe6d
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/__snapshots__/page_template_inner.test.tsx.snap
@@ -0,0 +1,85 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`KibanaPageTemplateInner custom template 1`] = `
+
+
+ test
+
+ }
+ iconColor=""
+ iconType="test"
+ title={
+
+ test
+
+ }
+ />
+
+`;
+
+exports[`KibanaPageTemplateInner isEmpty no pageHeader 1`] = `
+
+`;
+
+exports[`KibanaPageTemplateInner isEmpty pageHeader & children 1`] = `
+
+
+ Child element
+
+
+`;
+
+exports[`KibanaPageTemplateInner isEmpty pageHeader & no children 1`] = `
+
+
+ test
+
+ }
+ iconColor=""
+ iconType="test"
+ title={
+
+ test
+
+ }
+ />
+
+`;
diff --git a/packages/kbn-shared-ux-components/src/page_template/__snapshots__/with_solution_nav.test.tsx.snap b/packages/kbn-shared-ux-components/src/page_template/__snapshots__/with_solution_nav.test.tsx.snap
new file mode 100644
index 0000000000000..0064b0a638cd2
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/__snapshots__/with_solution_nav.test.tsx.snap
@@ -0,0 +1,125 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`WithSolutionNav renders wrapped component 1`] = `
+
+ }
+ pageSideBarProps={
+ Object {
+ "className": "kbnPageTemplate__pageSideBar",
+ "paddingSize": "none",
+ }
+ }
+/>
+`;
+
+exports[`WithSolutionNav with children 1`] = `
+
+ }
+ pageSideBarProps={
+ Object {
+ "className": "kbnPageTemplate__pageSideBar",
+ "paddingSize": "none",
+ }
+ }
+>
+
+ Child component
+
+
+`;
diff --git a/packages/kbn-shared-ux-components/src/page_template/assets/kibana_template_no_data_config.png b/packages/kbn-shared-ux-components/src/page_template/assets/kibana_template_no_data_config.png
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/packages/kbn-shared-ux-components/src/page_template/index.tsx b/packages/kbn-shared-ux-components/src/page_template/index.ts
similarity index 80%
rename from packages/kbn-shared-ux-components/src/page_template/index.tsx
rename to packages/kbn-shared-ux-components/src/page_template/index.ts
index d469a2fb34c10..caed703e5d656 100644
--- a/packages/kbn-shared-ux-components/src/page_template/index.tsx
+++ b/packages/kbn-shared-ux-components/src/page_template/index.ts
@@ -8,3 +8,5 @@
export { NoDataCard, ElasticAgentCard } from './no_data_page';
export { NoDataPage } from './no_data_page';
+export { KibanaPageTemplate } from './page_template';
+export type { KibanaPageTemplateProps } from './types';
diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/index.ts b/packages/kbn-shared-ux-components/src/page_template/no_data_page/index.ts
index c1b0ac2e13395..894097727cd1f 100644
--- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/index.ts
+++ b/packages/kbn-shared-ux-components/src/page_template/no_data_page/index.ts
@@ -9,3 +9,4 @@
export { NoDataCard, ElasticAgentCard } from './no_data_card';
export { NoDataPage } from './no_data_page';
export type { NoDataPageProps } from './types';
+export { NoDataConfigPage, NoDataConfigPageWithSolutionNavBar } from './no_data_config_page';
diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.component.test.tsx.snap b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.component.test.tsx.snap
index 95cacc3a0db4a..79fce9de0feec 100644
--- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.component.test.tsx.snap
+++ b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.component.test.tsx.snap
@@ -4,10 +4,9 @@ exports[`ElasticAgentCardComponent props button 1`] = `
@@ -197,15 +182,73 @@ exports[`ElasticAgentCard renders 1`] = `
onClick={[Function]}
paddingSize="l"
>
+
+
+
+ ,
+ "ctr": 1,
+ "insertionPoint": undefined,
+ "isSpeedy": false,
+ "key": "css",
+ "nonce": undefined,
+ "prepend": undefined,
+ "tags": Array [
+ ,
+ ],
+ },
+ }
+ }
+ isStringTag={false}
+ serialized={
+ Object {
+ "map": undefined,
+ "name": "1hu4pg0-EuiCard",
+ "next": undefined,
+ "styles": "max-width:400px;margin-inline:auto;;label:EuiCard;",
+ "toString": [Function],
+ }
+ }
+ />
+
+
+`;
diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_config_page/index.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_config_page/index.tsx
new file mode 100644
index 0000000000000..0bdde40021398
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_config_page/index.tsx
@@ -0,0 +1,9 @@
+/*
+ * 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 { NoDataConfigPage, NoDataConfigPageWithSolutionNavBar } from './no_data_config_page';
diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_config_page/no_data_config_page.test.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_config_page/no_data_config_page.test.tsx
new file mode 100644
index 0000000000000..dc618a068e120
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_config_page/no_data_config_page.test.tsx
@@ -0,0 +1,30 @@
+/*
+ * 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 { shallow } from 'enzyme';
+import React from 'react';
+import { NoDataConfigPage } from './no_data_config_page';
+
+describe('NoDataConfigPage', () => {
+ const noDataConfig = {
+ solution: 'Kibana',
+ logo: 'logoKibana',
+ docsLink: 'test-link',
+ action: {
+ kibana: {
+ button: 'Click me',
+ onClick: jest.fn(),
+ description: 'Page with no data',
+ },
+ },
+ };
+ test('renders', () => {
+ const component = shallow(
);
+ expect(component).toMatchSnapshot();
+ });
+});
diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_config_page/no_data_config_page.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_config_page/no_data_config_page.tsx
new file mode 100644
index 0000000000000..77c2d659b56ef
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_config_page/no_data_config_page.tsx
@@ -0,0 +1,38 @@
+/*
+ * 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 { EuiPageTemplate } from '@elastic/eui';
+import React from 'react';
+import { NoDataPage } from '../no_data_page';
+import { withSolutionNav } from '../../with_solution_nav';
+import { KibanaPageTemplateProps } from '../../types';
+import { getClasses, NO_DATA_PAGE_TEMPLATE_PROPS } from '../../util';
+
+export const NoDataConfigPage = (props: KibanaPageTemplateProps) => {
+ const { className, noDataConfig, ...rest } = props;
+
+ if (!noDataConfig) {
+ return null;
+ }
+
+ const template = NO_DATA_PAGE_TEMPLATE_PROPS.template;
+ const classes = getClasses(template, className);
+
+ return (
+
+
+
+ );
+};
+
+export const NoDataConfigPageWithSolutionNavBar = withSolutionNav(NoDataConfigPage);
diff --git a/packages/kbn-shared-ux-components/src/page_template/page_template.mdx b/packages/kbn-shared-ux-components/src/page_template/page_template.mdx
new file mode 100644
index 0000000000000..59acf8910cf29
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/page_template.mdx
@@ -0,0 +1,168 @@
+---
+id: sharedUX/Components/PageTemplate
+slug: /shared-ux-components/page_template/page_template
+title: Page Template
+summary: A Kibana-specific wrapper around `EuiTemplate`
+tags: ['shared-ux', 'component']
+date: 2022-04-04
+---
+
+`KibanaPageTemplate` is a thin wrapper around [EuiPageTemplate](https://elastic.github.io/eui/#/layout/page) that makes setting up common types of Kibana pages quicker and easier while also adhering to any Kibana-specific requirements and patterns.
+
+Refer to EUI's documentation on [**EuiPageTemplate**](https://elastic.github.io/eui/#/layout/page) for constructing page layouts.
+
+## `isEmptyState`
+
+Use the `isEmptyState` prop for when there is no page content to show. For example, before the user has created something, when no search results are found, before data is populated, or when permissions aren't met.
+
+The default empty state uses any `pageHeader` info provided to populate an [**EuiEmptyPrompt**](https://elastic.github.io/eui/#/display/empty-prompt) and uses the `centeredBody` template type.
+
+```tsx
+
+ Create new dashboard
+ ,
+ ],
+ }}
+/>
+```
+
+![Screenshot of demo empty state code. Shows the Kibana navigation bars and a centered empty state with the dashboard app icon, a level 1 heading "Dashboards", body text "You don't have any dashboards yet.", and a button that says "Create new dashboard".](https://raw.githubusercontent.com/elastic/kibana/main/dev_docs/assets/kibana_default_empty_state.png)
+
+
+ Because all properties of the page header are optional, the empty state has the potential to
+ render blank. Make sure your empty state doesn't leave the user confused.
+
+
+
+### Custom empty state
+
+You can also provide a custom empty prompt to replace the pre-built one. You'll want to remove any `pageHeader` props and pass an [`EuiEmptyPrompt`](https://elastic.github.io/eui/#/display/empty-prompt) directly as the child of KibanaPageTemplate.
+
+```tsx
+
+ No data}
+ body="You have no data. Would you like some of ours?"
+ actions={[
+
+ Get sample data
+ ,
+ ]}
+ />
+
+```
+
+![Screenshot of demo custom empty state code. Shows the Kibana navigation bars and a centered empty state with the a level 1 heading "No data", body text "You have no data. Would you like some of ours?", and a button that says "Get sample data".](https://raw.githubusercontent.com/elastic/kibana/main/dev_docs/assets/kibana_custom_empty_state.png)
+
+### Empty states with a page header
+
+When passing both a `pageHeader` configuration and `isEmptyState`, the component will render the proper template (`centeredContent`). Be sure to reduce the heading level within your child empty prompt to ``.
+
+```tsx
+
+ No data }
+ body="You have no data. Would you like some of ours?"
+ actions={[
+
+ Get sample data
+ ,
+ ]}
+ />
+
+```
+
+![Screenshot of demo custom empty state code with a page header. Shows the Kibana navigation bars, a level 1 heading "Dashboards", and a centered empty state with the a level 2 heading "No data", body text "You have no data. Would you like some of ours?", and a button that says "Get sample data".](https://raw.githubusercontent.com/elastic/kibana/main/dev_docs/assets/kibana_header_and_empty_state.png)
+
+## `solutionNav`
+
+To add left side navigation for your solution, we recommend passing [**EuiSideNav**](https://elastic.github.io/eui/#/navigation/side-nav) props to the `solutionNav` prop. The template component will then handle the mobile views and add the solution nav embellishments. On top of the EUI props, you'll need to pass your solution `name` and an optional `icon`.
+
+If you need to custom side bar content, you will need to pass you own navigation component to `pageSideBar`. We still recommend using [**EuiSideNav**](https://elastic.github.io/eui/#/navigation/side-nav).
+
+When using `EuiSideNav`, root level items should not be linked but provide section labelling only.
+
+```tsx
+
+ {...}
+
+```
+
+![Screenshot of Stack Management empty state with a provided solution navigation shown on the left, outlined in pink.](https://raw.githubusercontent.com/elastic/kibana/main/dev_docs/assets/kibana_template_solution_nav.png)
+
+![Screenshots of Stack Management page in mobile view. Menu closed on the left, menu open on the right.](https://raw.githubusercontent.com/elastic/kibana/main/dev_docs/assets/kibana_template_solution_nav_mobile.png)
+
+## `noDataConfig`
+
+Increases the consistency in messaging across all the solutions during the getting started process when no data exists. Each solution/template instance decides when is the most appropriate time to show this configuration, but is messaged specifically towards having no indices or index patterns at all or that match the particular solution.
+
+This is a built-in configuration that displays a very specific UI and requires very specific keys. It will also ignore all other configurations of the template including `pageHeader` and `children`, with the exception of continuing to show `solutionNav`.
+
+The `noDataConfig` is of type [`NoDataPageProps`](https://github.com/elastic/kibana/blob/main/packages/kbn-shared-ux-components/src/page_template/no_data_page/types.ts#L14):
+
+1. `solution: string`: Single name for the current solution, used to auto-generate the title, logo, and description *(required)*
+2. `docsLink: string`: Required to set the docs link for the whole solution *(required)*
+3. `logo?: string`: Optionally replace the auto-generated logo
+4. `pageTitle?: string`: Optionally replace the auto-generated page title (h1)
+5. `action: Record
`: An object of `NoDataPageActions` configurations with a unique primary key *(required)*
+
+### `NoDataPageActions`
+
+There is a main action for adding data that we promote throughout Kibana - Elastic Agent. It is added to the card by using the key `elasticAgent`. For consistent messaging, this card is pre-configured but requires specific `href`s and/or `onClick` handlers for directing the user to the right location for that solution.
+
+Optionally you can also replace the `button` label by passing a string, or the whole component by passing a `ReactNode`.
+
+
+```tsx
+// Perform your own check
+const hasData = checkForData();
+
+// No data configuration
+const noDataConfig: KibanaPageTemplateProps['noDataConfig'] = {
+ solution: 'Analytics',
+ logo: 'logoKibana',
+ docsLink: '#',
+ action: {
+ elasticAgent: {
+ href: '#',
+ },
+ },
+};
+
+// Conditionally apply the configuration if there is no data
+
+ {/* Children will be ignored */}
+
+```
+
+![Screenshot of and example in Observability using the no data configuration and using the corresponding list numbers to point out the UI elements that they adjust.](https://raw.githubusercontent.com/elastic/kibana/main/dev_docs/assets/kibana_template_no_data_config.png)
\ No newline at end of file
diff --git a/packages/kbn-shared-ux-components/src/page_template/page_template.scss b/packages/kbn-shared-ux-components/src/page_template/page_template.scss
new file mode 100644
index 0000000000000..aec93da6217ee
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/page_template.scss
@@ -0,0 +1,19 @@
+.kbnPageTemplate__pageSideBar {
+ overflow: hidden;
+ // Temporary hack till the sizing is changed directly in EUI
+ min-width: 248px;
+
+ @include euiCanAnimate {
+ transition: min-width $euiAnimSpeedFast $euiAnimSlightResistance;
+ }
+
+ &.kbnPageTemplate__pageSideBar--shrink {
+ min-width: $euiSizeXXL;
+ }
+
+ .kbnPageTemplate--centeredBody & {
+ @include euiBreakpoint('m', 'l', 'xl') {
+ border-right: $euiBorderThin;
+ }
+ }
+}
diff --git a/packages/kbn-shared-ux-components/src/page_template/page_template.stories.tsx b/packages/kbn-shared-ux-components/src/page_template/page_template.stories.tsx
new file mode 100644
index 0000000000000..d840e459389b2
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/page_template.stories.tsx
@@ -0,0 +1,143 @@
+/*
+ * 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 React from 'react';
+import { EuiButton, EuiText } from '@elastic/eui';
+import { KibanaPageTemplate } from './page_template';
+import mdx from './page_template.mdx';
+import { KibanaPageTemplateSolutionNavProps } from './solution_nav';
+import { KibanaPageTemplateProps } from './types';
+
+export default {
+ title: 'Page Template/Page Template',
+ description:
+ 'A thin wrapper around `EuiTemplate`. Takes care of styling, empty state and no data config',
+ parameters: {
+ docs: {
+ page: mdx,
+ },
+ },
+};
+
+type Params = Pick;
+
+const noDataConfig = {
+ solution: 'Kibana',
+ action: {
+ elasticAgent: {},
+ },
+ docsLink: 'http://wwww.docs.elastic.co',
+};
+
+const items: KibanaPageTemplateSolutionNavProps['items'] = [
+ {
+ name: 'Ingest',
+ id: '1',
+ items: [
+ {
+ name: 'Ingest Node Pipelines',
+ id: '1.1',
+ },
+ {
+ name: 'Logstash Pipelines',
+ id: '1.2',
+ },
+ {
+ name: 'Beats Central Management',
+ id: '1.3',
+ },
+ ],
+ },
+ {
+ name: 'Data',
+ id: '2',
+ items: [
+ {
+ name: 'Index Management',
+ id: '2.1',
+ },
+ {
+ name: 'Index Lifecycle Policies',
+ id: '2.2',
+ },
+ {
+ name: 'Snapshot and Restore',
+ id: '2.3',
+ },
+ ],
+ },
+];
+
+const solutionNavBar = {
+ items,
+ logo: 'logoKibana',
+ name: 'Kibana',
+ action: { elasticAgent: {} },
+};
+
+const content = (
+
+
+ Page Content goes here
+
+
+);
+
+const header = {
+ iconType: 'logoKibana',
+ pageTitle: 'Kibana',
+ description: 'Welcome to Kibana!',
+ rightSideItems: [Add something , Do something ],
+};
+
+export const WithNoDataConfig = () => {
+ return ;
+};
+
+export const WithNoDataConfigAndSolutionNav = () => {
+ return ;
+};
+
+export const PureComponent = (params: Params) => {
+ return (
+
+ {content}
+
+ );
+};
+
+PureComponent.argTypes = {
+ isEmptyState: {
+ control: 'boolean',
+ defaultValue: false,
+ },
+ pageHeader: {
+ control: 'boolean',
+ defaultValue: true,
+ },
+ solutionNav: {
+ control: 'boolean',
+ defaultValue: true,
+ },
+};
+
+PureComponent.parameters = {
+ layout: 'fullscreen',
+};
+
+WithNoDataConfig.parameters = {
+ layout: 'fullscreen',
+};
+
+WithNoDataConfigAndSolutionNav.parameters = {
+ layout: 'fullscreen',
+};
diff --git a/packages/kbn-shared-ux-components/src/page_template/page_template.test.tsx b/packages/kbn-shared-ux-components/src/page_template/page_template.test.tsx
new file mode 100644
index 0000000000000..8d073e14f7776
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/page_template.test.tsx
@@ -0,0 +1,113 @@
+/*
+ * 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 React from 'react';
+import { shallow, render } from 'enzyme';
+import { KibanaPageTemplate } from './page_template';
+import { KibanaPageTemplateSolutionNavProps } from './solution_nav';
+import { NoDataPageProps } from './no_data_page';
+
+const items: KibanaPageTemplateSolutionNavProps['items'] = [
+ {
+ name: 'Ingest',
+ id: '1',
+ items: [
+ {
+ name: 'Ingest Node Pipelines',
+ id: '1.1',
+ },
+ {
+ name: 'Logstash Pipelines',
+ id: '1.2',
+ },
+ {
+ name: 'Beats Central Management',
+ id: '1.3',
+ },
+ ],
+ },
+ {
+ name: 'Data',
+ id: '2',
+ items: [
+ {
+ name: 'Index Management',
+ id: '2.1',
+ },
+ {
+ name: 'Index Lifecycle Policies',
+ id: '2.2',
+ },
+ {
+ name: 'Snapshot and Restore',
+ id: '2.3',
+ },
+ ],
+ },
+];
+
+const solutionNav = {
+ name: 'Kibana',
+ icon: 'logoKibana',
+ items,
+};
+
+const noDataConfig: NoDataPageProps = {
+ solution: 'Elastic',
+ action: {
+ elasticAgent: {},
+ },
+ docsLink: 'test',
+};
+
+describe('KibanaPageTemplate', () => {
+ test('render noDataConfig && solutionNav', () => {
+ const component = shallow(
+
+ );
+ expect(component).toMatchSnapshot();
+ });
+
+ test('render noDataConfig', () => {
+ const component = shallow( );
+ expect(component).toMatchSnapshot();
+ });
+
+ test('render solutionNav', () => {
+ const component = shallow(
+
+ Child element
+
+ );
+ expect(component).toMatchSnapshot();
+ });
+
+ test('render basic template', () => {
+ const component = render(
+
+ Child element
+
+ );
+ expect(component).toMatchSnapshot();
+ });
+});
diff --git a/packages/kbn-shared-ux-components/src/page_template/page_template.tsx b/packages/kbn-shared-ux-components/src/page_template/page_template.tsx
new file mode 100644
index 0000000000000..6d63d54e9b9dd
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/page_template.tsx
@@ -0,0 +1,69 @@
+/*
+ * 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 './page_template.scss';
+
+import React, { FunctionComponent } from 'react';
+
+import { NoDataConfigPage, NoDataConfigPageWithSolutionNavBar } from './no_data_page';
+import { KibanaPageTemplateInner, KibanaPageTemplateWithSolutionNav } from './page_template_inner';
+import { KibanaPageTemplateProps } from './types';
+
+export const KibanaPageTemplate: FunctionComponent = ({
+ template,
+ className,
+ children,
+ solutionNav,
+ noDataConfig,
+ ...rest
+}) => {
+ /**
+ * If passing the custom template of `noDataConfig`
+ */
+ if (noDataConfig && solutionNav) {
+ return (
+
+ );
+ }
+
+ if (noDataConfig) {
+ return (
+
+ );
+ }
+
+ if (solutionNav) {
+ return (
+
+ );
+ }
+
+ return (
+
+ );
+};
diff --git a/packages/kbn-shared-ux-components/src/page_template/page_template_inner.test.tsx b/packages/kbn-shared-ux-components/src/page_template/page_template_inner.test.tsx
new file mode 100644
index 0000000000000..c17b83c4f4eed
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/page_template_inner.test.tsx
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+
+// imports from npm packages
+import React from 'react';
+import { shallow } from 'enzyme';
+
+// imports from elastic packages
+import { EuiEmptyPrompt, EuiPageTemplate } from '@elastic/eui';
+
+// imports from immediate files
+import { KibanaPageTemplateInner } from './page_template_inner';
+
+describe('KibanaPageTemplateInner', () => {
+ const pageHeader = {
+ iconType: 'test',
+ pageTitle: 'test',
+ description: 'test',
+ rightSideItems: ['test'],
+ };
+
+ describe('isEmpty', () => {
+ test('pageHeader & children', () => {
+ const component = shallow(
+ Child element }
+ />
+ );
+ expect(component).toMatchSnapshot();
+ expect(component.find('[data-test-subj="child"]').length).toBe(1);
+ });
+
+ test('pageHeader & no children', () => {
+ const component = shallow(
+
+ );
+ expect(component).toMatchSnapshot();
+ expect(component.find(EuiEmptyPrompt).length).toBe(1);
+ });
+
+ test('no pageHeader', () => {
+ const component = shallow(
+
+ );
+ expect(component).toMatchSnapshot();
+ });
+ });
+
+ test('custom template', () => {
+ const component = shallow(
+
+ );
+ expect(component).toMatchSnapshot();
+ expect(component.find(EuiPageTemplate).props().template).toEqual('centeredContent');
+ });
+});
diff --git a/packages/kbn-shared-ux-components/src/page_template/page_template_inner.tsx b/packages/kbn-shared-ux-components/src/page_template/page_template_inner.tsx
new file mode 100644
index 0000000000000..cef22f2713efc
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/page_template_inner.tsx
@@ -0,0 +1,67 @@
+/*
+ * 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 React, { FunctionComponent } from 'react';
+
+import { EuiEmptyPrompt, EuiPageTemplate } from '@elastic/eui';
+
+import { withSolutionNav } from './with_solution_nav';
+import { KibanaPageTemplateProps } from './types';
+import { getClasses } from './util';
+
+type Props = KibanaPageTemplateProps;
+
+/**
+ * A thin wrapper around EuiPageTemplate with a few Kibana specific additions
+ */
+export const KibanaPageTemplateInner: FunctionComponent
= ({
+ template,
+ className,
+ pageHeader,
+ children,
+ isEmptyState,
+ ...rest
+}) => {
+ /**
+ * An easy way to create the right content for empty pages
+ */
+ const emptyStateDefaultTemplate = 'centeredBody';
+ let header = pageHeader;
+
+ if (isEmptyState) {
+ if (pageHeader && !children) {
+ template = template ?? emptyStateDefaultTemplate;
+ const { iconType, pageTitle, description, rightSideItems } = pageHeader;
+ const title = pageTitle ? {pageTitle} : undefined;
+ const body = description ? {description}
: undefined;
+ header = undefined;
+ children = (
+
+ );
+ } else if (pageHeader && children) {
+ template = template ?? 'centeredContent';
+ } else if (!pageHeader) {
+ template = template ?? emptyStateDefaultTemplate;
+ }
+ }
+
+ const classes = getClasses(template, className);
+ return (
+
+ {children}
+
+ );
+};
+
+export const KibanaPageTemplateWithSolutionNav = withSolutionNav(KibanaPageTemplateInner);
diff --git a/packages/kbn-shared-ux-components/src/page_template/types.ts b/packages/kbn-shared-ux-components/src/page_template/types.ts
new file mode 100644
index 0000000000000..cd4764a976db8
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/types.ts
@@ -0,0 +1,30 @@
+/*
+ * 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 { EuiPageTemplateProps } from '@elastic/eui';
+import { KibanaPageTemplateSolutionNavProps } from './solution_nav';
+import { NoDataPageProps } from './no_data_page';
+
+export type KibanaPageTemplateProps = EuiPageTemplateProps & {
+ /**
+ * Changes the template type depending on other props provided.
+ * With `pageHeader` only: Uses `centeredBody` and fills an EuiEmptyPrompt with `pageHeader` info.
+ * With `children` only: Uses `centeredBody`
+ * With `pageHeader` and `children`: Uses `centeredContent`
+ */
+ isEmptyState?: boolean;
+ /**
+ * Quick creation of EuiSideNav. Hooks up mobile instance too
+ */
+ solutionNav?: KibanaPageTemplateSolutionNavProps;
+ /**
+ * Accepts a configuration object, that when provided, ignores pageHeader and children and instead
+ * displays Agent, Beats, and custom cards to direct users to the right ingest location
+ */
+ noDataConfig?: NoDataPageProps;
+};
diff --git a/packages/kbn-shared-ux-components/src/page_template/util/constants.ts b/packages/kbn-shared-ux-components/src/page_template/util/constants.ts
new file mode 100644
index 0000000000000..92dbe1cb16279
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/util/constants.ts
@@ -0,0 +1,21 @@
+/*
+ * 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 { KibanaPageTemplateProps } from '../types';
+
+export const NO_DATA_PAGE_MAX_WIDTH = 950;
+
+export const NO_DATA_PAGE_TEMPLATE_PROPS: KibanaPageTemplateProps = {
+ restrictWidth: NO_DATA_PAGE_MAX_WIDTH,
+ template: 'centeredBody',
+ pageContentProps: {
+ hasShadow: false,
+ color: 'transparent',
+ paddingSize: 'none',
+ },
+};
diff --git a/packages/kbn-shared-ux-components/src/page_template/util/index.ts b/packages/kbn-shared-ux-components/src/page_template/util/index.ts
new file mode 100644
index 0000000000000..adfefdf834566
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/util/index.ts
@@ -0,0 +1,10 @@
+/*
+ * 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 { getClasses } from './presentation';
+export * from './constants';
diff --git a/test/functional_ccs/ftr_provider_context.ts b/packages/kbn-shared-ux-components/src/page_template/util/presentation.ts
similarity index 58%
rename from test/functional_ccs/ftr_provider_context.ts
rename to packages/kbn-shared-ux-components/src/page_template/util/presentation.ts
index 8fa82b46ac406..ab7144ee37b57 100644
--- a/test/functional_ccs/ftr_provider_context.ts
+++ b/packages/kbn-shared-ux-components/src/page_template/util/presentation.ts
@@ -6,8 +6,8 @@
* Side Public License, v 1.
*/
-import { GenericFtrProviderContext } from '@kbn/test';
-import { services } from './services';
-import { pageObjects } from '../functional/page_objects';
+import classNames from 'classnames';
-export type FtrProviderContext = GenericFtrProviderContext;
+export const getClasses = (template: string | undefined, className: string | undefined) => {
+ return classNames('kbnPageTemplate', { [`kbnPageTemplate--${template}`]: template }, className);
+};
diff --git a/packages/kbn-shared-ux-components/src/page_template/with_solution_nav.test.tsx b/packages/kbn-shared-ux-components/src/page_template/with_solution_nav.test.tsx
new file mode 100644
index 0000000000000..0d0ac4cf71bfc
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/with_solution_nav.test.tsx
@@ -0,0 +1,80 @@
+/*
+ * 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 { shallow } from 'enzyme';
+import React from 'react';
+import { withSolutionNav } from './with_solution_nav';
+import { KibanaPageTemplateSolutionNavProps } from './solution_nav';
+
+const TestComponent = () => {
+ return This is a wrapped component
;
+};
+
+const items: KibanaPageTemplateSolutionNavProps['items'] = [
+ {
+ name: 'Ingest',
+ id: '1',
+ items: [
+ {
+ name: 'Ingest Node Pipelines',
+ id: '1.1',
+ },
+ {
+ name: 'Logstash Pipelines',
+ id: '1.2',
+ },
+ {
+ name: 'Beats Central Management',
+ id: '1.3',
+ },
+ ],
+ },
+ {
+ name: 'Data',
+ id: '2',
+ items: [
+ {
+ name: 'Index Management',
+ id: '2.1',
+ },
+ {
+ name: 'Index Lifecycle Policies',
+ id: '2.2',
+ },
+ {
+ name: 'Snapshot and Restore',
+ id: '2.3',
+ },
+ ],
+ },
+];
+
+const solutionNav = {
+ name: 'Kibana',
+ icon: 'logoKibana',
+ items,
+};
+
+describe('WithSolutionNav', () => {
+ test('renders wrapped component', () => {
+ const WithSolutionNavTestComponent = withSolutionNav(TestComponent);
+ const component = shallow( );
+ expect(component).toMatchSnapshot();
+ });
+
+ test('with children', () => {
+ const WithSolutionNavTestComponent = withSolutionNav(TestComponent);
+ const component = shallow(
+
+ Child component
+
+ );
+ expect(component).toMatchSnapshot();
+ expect(component.find('.child').html()).toContain('Child component');
+ });
+});
diff --git a/packages/kbn-shared-ux-components/src/page_template/with_solution_nav.tsx b/packages/kbn-shared-ux-components/src/page_template/with_solution_nav.tsx
new file mode 100644
index 0000000000000..07d78dc87f40b
--- /dev/null
+++ b/packages/kbn-shared-ux-components/src/page_template/with_solution_nav.tsx
@@ -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 React, { ComponentType, useState } from 'react';
+import classNames from 'classnames';
+import { useIsWithinBreakpoints } from '@elastic/eui';
+import { EuiPageSideBarProps } from '@elastic/eui/src/components/page/page_side_bar';
+import { KibanaPageTemplateSolutionNav, KibanaPageTemplateSolutionNavProps } from './solution_nav';
+import { KibanaPageTemplateProps } from './types';
+
+// https://reactjs.org/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging
+function getDisplayName(Component: ComponentType) {
+ return Component.displayName || Component.name || 'UnnamedComponent';
+}
+
+type SolutionNavProps = KibanaPageTemplateProps & {
+ solutionNav: KibanaPageTemplateSolutionNavProps;
+};
+
+const SOLUTION_NAV_COLLAPSED_KEY = 'solutionNavIsCollapsed';
+
+export const withSolutionNav = (WrappedComponent: ComponentType) => {
+ const WithSolutionNav = (props: SolutionNavProps) => {
+ const isMediumBreakpoint = useIsWithinBreakpoints(['m']);
+ const isLargerBreakpoint = useIsWithinBreakpoints(['l', 'xl']);
+ const [isSideNavOpenOnDesktop, setisSideNavOpenOnDesktop] = useState(
+ !JSON.parse(String(localStorage.getItem(SOLUTION_NAV_COLLAPSED_KEY)))
+ );
+ const { solutionNav, ...propagatedProps } = props;
+ const { children, isEmptyState, template } = propagatedProps;
+ const toggleOpenOnDesktop = () => {
+ setisSideNavOpenOnDesktop(!isSideNavOpenOnDesktop);
+ // Have to store it as the opposite of the default we want
+ localStorage.setItem(SOLUTION_NAV_COLLAPSED_KEY, JSON.stringify(isSideNavOpenOnDesktop));
+ };
+ const sideBarClasses = classNames(
+ 'kbnPageTemplate__pageSideBar',
+ {
+ 'kbnPageTemplate__pageSideBar--shrink':
+ isMediumBreakpoint || (isLargerBreakpoint && !isSideNavOpenOnDesktop),
+ },
+ props.pageSideBarProps?.className
+ );
+
+ const templateToUse = isEmptyState && !template ? 'centeredContent' : template;
+
+ const pageSideBar = (
+
+ );
+ const pageSideBarProps = {
+ paddingSize: 'none',
+ ...props.pageSideBarProps,
+ className: sideBarClasses,
+ } as EuiPageSideBarProps; // needed because for some reason 'none' is not recognized as a valid value for paddingSize
+ return (
+
+ {children}
+
+ );
+ };
+
+ WithSolutionNav.displayName = `WithSolutionNavBar(${getDisplayName(WrappedComponent)})`;
+
+ return WithSolutionNav;
+};
diff --git a/packages/kbn-shared-ux-components/src/toolbar/buttons/icon_button_group/__snapshots__/icon_button_group.test.tsx.snap b/packages/kbn-shared-ux-components/src/toolbar/buttons/icon_button_group/__snapshots__/icon_button_group.test.tsx.snap
index b49efda2a1cf7..60a49e521ab07 100644
--- a/packages/kbn-shared-ux-components/src/toolbar/buttons/icon_button_group/__snapshots__/icon_button_group.test.tsx.snap
+++ b/packages/kbn-shared-ux-components/src/toolbar/buttons/icon_button_group/__snapshots__/icon_button_group.test.tsx.snap
@@ -1,27 +1,10 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[` is rendered 1`] = `
-.emotion-0.euiButtonGroupButton {
- background-color: #FFF;
- border: 1px solid #D3DAE6!important;
-}
-
-.emotion-0.euiButtonGroupButton:first-of-type {
- border-top-left-radius: 6px!important;
- border-bottom-left-radius: 6px!important;
-}
-
-.emotion-0.euiButtonGroupButton:last-of-type {
- border-top-right-radius: 6px!important;
- border-bottom-right-radius: 6px!important;
-}
-
is rendered 1`] = `
>
is rendered 1`] = `
size="m"
title="Text"
>
-
+
+
+
+
+
+ ,
+ "ctr": 4,
+ "insertionPoint": undefined,
+ "isSpeedy": false,
+ "key": "css",
+ "nonce": undefined,
+ "prepend": undefined,
+ "tags": Array [
+ ,
+ ,
+ ,
+ ,
+ ],
+ },
+ }
+ }
+ isStringTag={false}
+ serialized={
+ Object {
+ "map": undefined,
+ "name": "iuv015-EuiButtonGroup",
+ "next": undefined,
+ "styles": "&.euiButtonGroupButton{background-color:#FFF;border:1px solid #D3DAE6 !important;&:first-of-type{border-top-left-radius:6px !important;border-bottom-left-radius:6px !important;}&:last-of-type{border-top-right-radius:6px !important;border-bottom-right-radius:6px !important;}};;label:EuiButtonGroup;",
+ "toString": [Function],
+ }
+ }
+ />
+
-
-
-
-
-
-
-
- Text
+ type="visText"
+ >
+
+
+
+ Text
+
-
-
-
-
+
+
+
+
diff --git a/packages/kbn-shared-ux-components/src/toolbar/buttons/primary/__snapshots__/primary.test.tsx.snap b/packages/kbn-shared-ux-components/src/toolbar/buttons/primary/__snapshots__/primary.test.tsx.snap
index 7f50690aba8a6..8b7b51f228740 100644
--- a/packages/kbn-shared-ux-components/src/toolbar/buttons/primary/__snapshots__/primary.test.tsx.snap
+++ b/packages/kbn-shared-ux-components/src/toolbar/buttons/primary/__snapshots__/primary.test.tsx.snap
@@ -4,9 +4,7 @@ exports[`
is rendered 1`] = `
(iterable: IterableInput, fn: AsyncMapFn) {
- await lastValueFrom(mapWithLimit$(iterable, Infinity, fn).pipe(defaultIfEmpty()));
+ await lastValueFrom(mapWithLimit$(iterable, Infinity, fn).pipe(defaultIfEmpty(undefined)));
}
/**
@@ -40,5 +38,5 @@ export async function asyncForEachWithLimit(
limit: number,
fn: AsyncMapFn
) {
- await lastValueFrom(mapWithLimit$(iterable, limit, fn).pipe(defaultIfEmpty()));
+ await lastValueFrom(mapWithLimit$(iterable, limit, fn).pipe(defaultIfEmpty(undefined)));
}
diff --git a/packages/kbn-std/src/iteration/map.ts b/packages/kbn-std/src/iteration/map.ts
index 4c8d65df57f37..44765d69e1bd0 100644
--- a/packages/kbn-std/src/iteration/map.ts
+++ b/packages/kbn-std/src/iteration/map.ts
@@ -6,9 +6,8 @@
* Side Public License, v 1.
*/
-import { from } from 'rxjs';
+import { from, lastValueFrom } from 'rxjs';
import { toArray } from 'rxjs/operators';
-import { lastValueFrom } from '../rxjs_7';
import { IterableInput, AsyncMapFn, AsyncMapResult } from './types';
import { mapWithLimit$ } from './observable';
diff --git a/packages/kbn-std/src/iteration/observable.test.ts b/packages/kbn-std/src/iteration/observable.test.ts
index e84750e08148d..b2c5d5d75e07c 100644
--- a/packages/kbn-std/src/iteration/observable.test.ts
+++ b/packages/kbn-std/src/iteration/observable.test.ts
@@ -8,7 +8,6 @@
import * as Rx from 'rxjs';
import { toArray } from 'rxjs/operators';
-import { lastValueFrom } from '../rxjs_7';
import { map$, mapWithLimit$ } from './observable';
import { list, sleep, generator } from './test_helpers';
@@ -23,7 +22,7 @@ describe('mapWithLimit$', () => {
let active = 0;
const limit = Math.random() > 0.5 ? 20 : 40;
- const results = await lastValueFrom(
+ const results = await Rx.lastValueFrom(
mapWithLimit$(list(100), limit, async (n) => {
active += 1;
if (active > maxConcurrency) {
@@ -50,7 +49,7 @@ describe('mapWithLimit$', () => {
['observable', Rx.of(1, 2, 3, 4, 5), [1, 2, 3, 4, 5]] as const,
])('works with %p', async (_, iter, expected) => {
const mock = jest.fn(async (n) => n);
- const results = await lastValueFrom(mapWithLimit$(iter, 1, mock).pipe(toArray()));
+ const results = await Rx.lastValueFrom(mapWithLimit$(iter, 1, mock).pipe(toArray()));
expect(results).toEqual(expected);
});
});
@@ -60,7 +59,7 @@ describe('map$', () => {
let maxConcurrency = 0;
let active = 0;
- const results = await lastValueFrom(
+ const results = await Rx.lastValueFrom(
map$(list(100), async (n) => {
active += 1;
if (active > maxConcurrency) {
diff --git a/packages/kbn-std/src/iteration/types.ts b/packages/kbn-std/src/iteration/types.ts
index 6e0bfd9f22d7f..a36522af5feac 100644
--- a/packages/kbn-std/src/iteration/types.ts
+++ b/packages/kbn-std/src/iteration/types.ts
@@ -6,8 +6,8 @@
* Side Public License, v 1.
*/
-import { Subscribable } from 'rxjs';
+import { ObservableInput } from 'rxjs';
-export type IterableInput = Iterable | Subscribable;
-export type AsyncMapResult = Promise | Subscribable;
+export type IterableInput = Iterable | ObservableInput;
+export type AsyncMapResult = Promise | ObservableInput;
export type AsyncMapFn = (item: T1, i: number) => AsyncMapResult;
diff --git a/packages/kbn-std/src/rxjs_7.test.ts b/packages/kbn-std/src/rxjs_7.test.ts
deleted file mode 100644
index 939f853394aee..0000000000000
--- a/packages/kbn-std/src/rxjs_7.test.ts
+++ /dev/null
@@ -1,82 +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 * as Rx from 'rxjs';
-
-import { firstValueFrom, lastValueFrom } from './rxjs_7';
-
-// create an empty observable that completes with no notifications
-// after a delay to ensure helpers aren't checking for the EMPTY constant
-function empty() {
- return new Rx.Observable((subscriber) => {
- setTimeout(() => {
- subscriber.complete();
- }, 0);
- });
-}
-
-describe('firstValueFrom()', () => {
- it('resolves to the first value from the observable', async () => {
- await expect(firstValueFrom(Rx.of(1, 2, 3))).resolves.toBe(1);
- });
-
- it('rejects if the observable is empty', async () => {
- await expect(firstValueFrom(empty())).rejects.toThrowErrorMatchingInlineSnapshot(
- `"no elements in sequence"`
- );
- });
-
- it('unsubscribes from a source observable that emits synchronously', async () => {
- const values = [1, 2, 3, 4];
- let unsubscribed = false;
- const source = new Rx.Observable((subscriber) => {
- while (!subscriber.closed && values.length) {
- subscriber.next(values.shift()!);
- }
- unsubscribed = subscriber.closed;
- subscriber.complete();
- });
-
- await expect(firstValueFrom(source)).resolves.toMatchInlineSnapshot(`1`);
- if (!unsubscribed) {
- throw new Error('expected source to be unsubscribed');
- }
- expect(values).toEqual([2, 3, 4]);
- });
-
- it('unsubscribes from the source observable after first async notification', async () => {
- const values = [1, 2, 3, 4];
- let unsubscribed = false;
- const source = new Rx.Observable((subscriber) => {
- setTimeout(() => {
- while (!subscriber.closed) {
- subscriber.next(values.shift()!);
- }
- unsubscribed = subscriber.closed;
- });
- });
-
- await expect(firstValueFrom(source)).resolves.toMatchInlineSnapshot(`1`);
- if (!unsubscribed) {
- throw new Error('expected source to be unsubscribed');
- }
- expect(values).toEqual([2, 3, 4]);
- });
-});
-
-describe('lastValueFrom()', () => {
- it('resolves to the last value from the observable', async () => {
- await expect(lastValueFrom(Rx.of(1, 2, 3))).resolves.toBe(3);
- });
-
- it('rejects if the observable is empty', async () => {
- await expect(lastValueFrom(empty())).rejects.toThrowErrorMatchingInlineSnapshot(
- `"no elements in sequence"`
- );
- });
-});
diff --git a/packages/kbn-std/src/rxjs_7.ts b/packages/kbn-std/src/rxjs_7.ts
deleted file mode 100644
index f31c864de5313..0000000000000
--- a/packages/kbn-std/src/rxjs_7.ts
+++ /dev/null
@@ -1,19 +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 { Observable } from 'rxjs';
-import { first, last } from 'rxjs/operators';
-
-export function firstValueFrom(source: Observable) {
- // we can't use SafeSubscriber the same way that RxJS 7 does, so instead we
- return source.pipe(first()).toPromise();
-}
-
-export function lastValueFrom(source: Observable) {
- return source.pipe(last()).toPromise();
-}
diff --git a/packages/kbn-test/jest-preset.js b/packages/kbn-test/jest-preset.js
index fd14c973683f7..1021283936495 100644
--- a/packages/kbn-test/jest-preset.js
+++ b/packages/kbn-test/jest-preset.js
@@ -84,7 +84,7 @@ module.exports = {
snapshotSerializers: [
'/src/plugins/kibana_react/public/util/test_helpers/react_mount_serializer.ts',
'/node_modules/enzyme-to-json/serializer',
- '/node_modules/@emotion/jest/serializer',
+ '/node_modules/@kbn/test/target_node/jest/setup/emotion.js',
],
// The test environment that will be used for testing
diff --git a/test/functional_ccs/services/index.ts b/packages/kbn-test/src/jest/setup/emotion.js
similarity index 52%
rename from test/functional_ccs/services/index.ts
rename to packages/kbn-test/src/jest/setup/emotion.js
index dcdffa077fe08..dc135f4e56c5a 100644
--- a/test/functional_ccs/services/index.ts
+++ b/packages/kbn-test/src/jest/setup/emotion.js
@@ -6,12 +6,9 @@
* Side Public License, v 1.
*/
-import { services as functionalServices } from '../../functional/services';
-import { RemoteEsProvider } from './remote_es';
-import { RemoteEsArchiverProvider } from './remote_es_archiver';
+import { createSerializer } from '@emotion/jest';
-export const services = {
- ...functionalServices,
- remoteEs: RemoteEsProvider,
- remoteEsArchiver: RemoteEsArchiverProvider,
-};
+module.exports = createSerializer({
+ classNameReplacer: (className) => className,
+ includeStyles: false,
+});
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 02861fcb27fdb..97292b0268bc4 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,6 @@ import { inspect } from 'util';
import * as Rx from 'rxjs';
import { mergeMap } from 'rxjs/operators';
-import { lastValueFrom } from '@kbn/std';
import { ToolingLog, isAxiosResponseError, createFailError } from '@kbn/dev-utils';
import { KbnClientRequester, uriencode } from './kbn_client_requester';
@@ -83,7 +82,7 @@ interface DeleteObjectsOptions {
async function concurrently(maxConcurrency: number, arr: T[], fn: (item: T) => Promise) {
if (arr.length) {
- await lastValueFrom(
+ await Rx.lastValueFrom(
Rx.from(arr).pipe(mergeMap(async (item) => await fn(item), maxConcurrency))
);
}
diff --git a/scripts/functional_tests.js b/scripts/functional_tests.js
index b185bcb0ea5d0..1e963660a1e03 100644
--- a/scripts/functional_tests.js
+++ b/scripts/functional_tests.js
@@ -8,8 +8,8 @@
require('../src/setup_node_env');
require('@kbn/test').runTestsCli([
+ require.resolve('../test/functional/config.ccs.ts'),
require.resolve('../test/functional/config.js'),
- require.resolve('../test/functional_ccs/config.ts'),
require.resolve('../test/plugin_functional/config.ts'),
require.resolve('../test/ui_capabilities/newsfeed_err/config.ts'),
require.resolve('../test/new_visualize_flow/config.ts'),
diff --git a/src/cli/serve/integration_tests/reload_logging_config.test.ts b/src/cli/serve/integration_tests/reload_logging_config.test.ts
index 4cee7dfae4126..7ad3495c39cd6 100644
--- a/src/cli/serve/integration_tests/reload_logging_config.test.ts
+++ b/src/cli/serve/integration_tests/reload_logging_config.test.ts
@@ -117,7 +117,7 @@ describe.skip('Server logging configuration', function () {
)
.toPromise();
- const lastMessage = await message$.pipe(take(1)).toPromise();
+ const lastMessage = await Rx.firstValueFrom(message$);
expect(containsJsonOnly(lastMessage)).toBe(true);
createConfigManager(configFilePath).modify((oldConfig) => {
diff --git a/src/core/public/application/__snapshots__/application_service.test.ts.snap b/src/core/public/application/__snapshots__/application_service.test.ts.snap
index 17de9503bd533..712ed1a9f38f1 100644
--- a/src/core/public/application/__snapshots__/application_service.test.ts.snap
+++ b/src/core/public/application/__snapshots__/application_service.test.ts.snap
@@ -4,15 +4,15 @@ exports[`#start() getComponent returns renderable JSX tree 1`] = `
{
);
const { applications$ } = await service.start(startDeps);
- let applications = await applications$.pipe(take(1)).toPromise();
+ let applications = await firstValueFrom(applications$);
expect(applications.size).toEqual(2);
expect(applications.get('app1')).toEqual(
expect.objectContaining({
@@ -125,7 +125,7 @@ describe('#setup()', () => {
deepLinks: [{ id: 'subapp2', title: 'Subapp 2', path: '/subapp2' }],
}));
- applications = await applications$.pipe(take(1)).toPromise();
+ applications = await firstValueFrom(applications$);
expect(applications.size).toEqual(2);
expect(applications.get('app1')).toEqual(
expect.objectContaining({
@@ -205,7 +205,7 @@ describe('#setup()', () => {
})
);
const start = await service.start(startDeps);
- const applications = await start.applications$.pipe(take(1)).toPromise();
+ const applications = await firstValueFrom(start.applications$);
expect(applications.size).toEqual(2);
expect(applications.get('app1')).toEqual(
@@ -252,7 +252,7 @@ describe('#setup()', () => {
);
const { applications$ } = await service.start(startDeps);
- const applications = await applications$.pipe(take(1)).toPromise();
+ const applications = await firstValueFrom(applications$);
expect(applications.size).toEqual(2);
expect(applications.get('app1')).toEqual(
@@ -295,7 +295,7 @@ describe('#setup()', () => {
);
const start = await service.start(startDeps);
- const applications = await start.applications$.pipe(take(1)).toPromise();
+ const applications = await firstValueFrom(start.applications$);
expect(applications.size).toEqual(1);
expect(applications.get('app1')).toEqual(
@@ -410,7 +410,7 @@ describe('#setup()', () => {
updater$.next((app) => ({ defaultPath: '/foo' }));
- let appInfos = await applications$.pipe(take(1)).toPromise();
+ let appInfos = await firstValueFrom(applications$);
expect(appInfos.get('app1')!.deepLinks).toEqual([
{
@@ -445,7 +445,7 @@ describe('#setup()', () => {
],
}));
- appInfos = await applications$.pipe(take(1)).toPromise();
+ appInfos = await firstValueFrom(applications$);
expect(appInfos.get('app1')!.deepLinks).toEqual([
{
@@ -496,7 +496,7 @@ describe('#start()', () => {
register(Symbol(), createApp({ id: 'app2' }));
const { applications$ } = await service.start(startDeps);
- const availableApps = await applications$.pipe(take(1)).toPromise();
+ const availableApps = await firstValueFrom(applications$);
expect(availableApps.size).toEqual(2);
expect([...availableApps.keys()]).toEqual(['app1', 'app2']);
@@ -548,7 +548,7 @@ describe('#start()', () => {
register(Symbol(), createApp({ id: 'app2' }));
const { applications$ } = await service.start(startDeps);
- const availableApps = await applications$.pipe(take(1)).toPromise();
+ const availableApps = await firstValueFrom(applications$);
expect([...availableApps.keys()]).toEqual(['app1']);
});
@@ -802,7 +802,7 @@ describe('#start()', () => {
service.setup(setupDeps);
const { currentAppId$, navigateToApp } = await service.start(startDeps);
- const stop$ = new Subject();
+ const stop$ = new Subject();
const promise = currentAppId$.pipe(bufferCount(4), takeUntil(stop$)).toPromise();
await navigateToApp('alpha');
@@ -827,7 +827,7 @@ describe('#start()', () => {
service.setup(setupDeps);
const { currentAppId$, navigateToApp } = await service.start(startDeps);
- const stop$ = new Subject();
+ const stop$ = new Subject();
const promise = currentAppId$.pipe(bufferCount(4), takeUntil(stop$)).toPromise();
await navigateToApp('delta', { openInNewTab: true });
@@ -871,7 +871,7 @@ describe('#start()', () => {
const { navigateToApp, getComponent } = await service.start(startDeps);
const httpLoadingCount$ = startDeps.http.addLoadingCountSource.mock.calls[0][0];
- const stop$ = new Subject();
+ const stop$ = new Subject();
const currentLoadingCount$ = new BehaviorSubject(0);
httpLoadingCount$.pipe(takeUntil(stop$)).subscribe(currentLoadingCount$);
const loadingPromise = httpLoadingCount$.pipe(bufferCount(5), takeUntil(stop$)).toPromise();
diff --git a/src/core/public/application/application_service.tsx b/src/core/public/application/application_service.tsx
index 68807323c0a63..9a2703eb74872 100644
--- a/src/core/public/application/application_service.tsx
+++ b/src/core/public/application/application_service.tsx
@@ -7,7 +7,7 @@
*/
import React from 'react';
-import { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';
+import { BehaviorSubject, firstValueFrom, Observable, Subject, Subscription } from 'rxjs';
import { map, shareReplay, takeUntil, distinctUntilChanged, filter, take } from 'rxjs/operators';
import { createBrowserHistory, History } from 'history';
@@ -99,7 +99,7 @@ export class ApplicationService {
private currentActionMenu$ = new BehaviorSubject(undefined);
private readonly statusUpdaters$ = new BehaviorSubject>(new Map());
private readonly subscriptions: Subscription[] = [];
- private stop$ = new Subject();
+ private stop$ = new Subject();
private registrationClosed = false;
private history?: History;
private navigate?: (url: string, state: unknown, replace: boolean) => void;
@@ -120,7 +120,7 @@ export class ApplicationService {
createBrowserHistory({
basename,
getUserConfirmation: getUserConfirmationHandler({
- overlayPromise: this.overlayStart$.pipe(take(1)).toPromise(),
+ overlayPromise: firstValueFrom(this.overlayStart$.pipe(take(1))),
}),
});
diff --git a/src/core/public/chrome/chrome_service.test.ts b/src/core/public/chrome/chrome_service.test.ts
index 505f3fc7a23d2..dbdc867ea33b3 100644
--- a/src/core/public/chrome/chrome_service.test.ts
+++ b/src/core/public/chrome/chrome_service.test.ts
@@ -9,7 +9,7 @@
import { shallow } from 'enzyme';
import React from 'react';
import * as Rx from 'rxjs';
-import { take, toArray } from 'rxjs/operators';
+import { toArray } from 'rxjs/operators';
import { App, PublicAppInfo } from '../application';
import { applicationServiceMock } from '../application/application_service.mock';
import { docLinksServiceMock } from '../doc_links/doc_links_service.mock';
@@ -229,7 +229,7 @@ describe('start', () => {
const { chrome, service } = await start({ startDeps });
const promise = chrome.getIsVisible$().pipe(toArray()).toPromise();
- const availableApps = await applications$.pipe(take(1)).toPromise();
+ const availableApps = await Rx.firstValueFrom(applications$);
[...availableApps.keys()].forEach((appId) => navigateToApp(appId));
service.stop();
diff --git a/src/core/public/chrome/chrome_service.tsx b/src/core/public/chrome/chrome_service.tsx
index 7db042313796d..a9678613b5fd0 100644
--- a/src/core/public/chrome/chrome_service.tsx
+++ b/src/core/public/chrome/chrome_service.tsx
@@ -55,7 +55,7 @@ export interface StartDeps {
export class ChromeService {
private isVisible$!: Observable;
private isForceHidden$!: BehaviorSubject;
- private readonly stop$ = new ReplaySubject(1);
+ private readonly stop$ = new ReplaySubject(1);
private readonly navControls = new NavControlsService();
private readonly navLinks = new NavLinksService();
private readonly recentlyAccessed = new RecentlyAccessedService();
diff --git a/src/core/public/chrome/nav_controls/nav_controls_service.ts b/src/core/public/chrome/nav_controls/nav_controls_service.ts
index 1f45cd9470645..13c65b65e5725 100644
--- a/src/core/public/chrome/nav_controls/nav_controls_service.ts
+++ b/src/core/public/chrome/nav_controls/nav_controls_service.ts
@@ -50,7 +50,7 @@ export interface ChromeNavControls {
/** @internal */
export class NavControlsService {
- private readonly stop$ = new ReplaySubject(1);
+ private readonly stop$ = new ReplaySubject(1);
public start() {
const navControlsLeft$ = new BehaviorSubject>(new Set());
diff --git a/src/core/public/chrome/nav_links/nav_links_service.ts b/src/core/public/chrome/nav_links/nav_links_service.ts
index 6a91d4d179076..cd3be364c1b9b 100644
--- a/src/core/public/chrome/nav_links/nav_links_service.ts
+++ b/src/core/public/chrome/nav_links/nav_links_service.ts
@@ -69,7 +69,7 @@ export interface ChromeNavLinks {
}
export class NavLinksService {
- private readonly stop$ = new ReplaySubject(1);
+ private readonly stop$ = new ReplaySubject(1);
public start({ application, http }: StartDeps): ChromeNavLinks {
const navLinks$ = new BehaviorSubject>(new Map());
diff --git a/src/core/public/chrome/recently_accessed/recently_accessed_service.test.ts b/src/core/public/chrome/recently_accessed/recently_accessed_service.test.ts
index bcf58b7a40ab1..feddf07760de2 100644
--- a/src/core/public/chrome/recently_accessed/recently_accessed_service.test.ts
+++ b/src/core/public/chrome/recently_accessed/recently_accessed_service.test.ts
@@ -90,7 +90,7 @@ describe('RecentlyAccessed#start()', () => {
it('exposes an observable', async () => {
const { recentlyAccessed } = await getStart();
- const stop$ = new Subject();
+ const stop$ = new Subject();
const observedValues$ = recentlyAccessed
.get$()
.pipe(bufferCount(3), takeUntil(stop$))
diff --git a/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap b/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap
index 99d116b1dd957..df638e4b66bbe 100644
--- a/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap
+++ b/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap
@@ -4,48 +4,32 @@ exports[`CollapsibleNav renders links grouped by category 1`] = `
{
- private readonly stop$ = new Subject();
+ private readonly stop$ = new Subject();
private readonly loadingCount$ = new BehaviorSubject(0);
public setup({ fatalErrors }: { fatalErrors: FatalErrorsSetup }) {
diff --git a/src/core/public/notifications/toasts/__snapshots__/toasts_service.test.tsx.snap b/src/core/public/notifications/toasts/__snapshots__/toasts_service.test.tsx.snap
index 6e453ed8e48f5..fb08a9b5f53cf 100644
--- a/src/core/public/notifications/toasts/__snapshots__/toasts_service.test.tsx.snap
+++ b/src/core/public/notifications/toasts/__snapshots__/toasts_service.test.tsx.snap
@@ -12,7 +12,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -22,11 +21,10 @@ Array [
dismissToast={[Function]}
toasts$={
Observable {
- "_isScalar": false,
"source": BehaviorSubject {
- "_isScalar": false,
"_value": Array [],
"closed": false,
+ "currentObservers": null,
"hasError": false,
"isStopped": false,
"observers": Array [],
diff --git a/src/core/public/notifications/toasts/toasts_api.test.ts b/src/core/public/notifications/toasts/toasts_api.test.ts
index 35f141a995d06..9130e060a37f8 100644
--- a/src/core/public/notifications/toasts/toasts_api.test.ts
+++ b/src/core/public/notifications/toasts/toasts_api.test.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { take } from 'rxjs/operators';
+import { firstValueFrom } from 'rxjs';
import { ToastsApi } from './toasts_api';
@@ -14,7 +14,7 @@ import { uiSettingsServiceMock } from '../../ui_settings/ui_settings_service.moc
import { i18nServiceMock } from '../../i18n/i18n_service.mock';
async function getCurrentToasts(toasts: ToastsApi) {
- return await toasts.get$().pipe(take(1)).toPromise();
+ return await firstValueFrom(toasts.get$());
}
function uiSettingsMock() {
diff --git a/src/core/public/overlays/flyout/__snapshots__/flyout_service.test.tsx.snap b/src/core/public/overlays/flyout/__snapshots__/flyout_service.test.tsx.snap
index 3ee2e0e93b087..655a767bca8f2 100644
--- a/src/core/public/overlays/flyout/__snapshots__/flyout_service.test.tsx.snap
+++ b/src/core/public/overlays/flyout/__snapshots__/flyout_service.test.tsx.snap
@@ -20,7 +20,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -56,7 +55,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -81,7 +79,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -103,7 +100,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -132,7 +128,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -157,7 +152,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -179,7 +173,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
diff --git a/src/core/public/overlays/modal/__snapshots__/modal_service.test.tsx.snap b/src/core/public/overlays/modal/__snapshots__/modal_service.test.tsx.snap
index 2fc2000e559ab..a04210758053e 100644
--- a/src/core/public/overlays/modal/__snapshots__/modal_service.test.tsx.snap
+++ b/src/core/public/overlays/modal/__snapshots__/modal_service.test.tsx.snap
@@ -22,7 +22,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -47,7 +46,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -69,7 +67,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -108,7 +105,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -131,7 +127,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -159,7 +154,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -180,7 +174,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -205,7 +198,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -241,7 +233,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -264,7 +255,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -290,7 +280,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -315,7 +304,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -336,7 +324,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -360,7 +347,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -382,7 +368,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -411,7 +396,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -434,7 +418,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -460,7 +443,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -485,7 +467,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -506,7 +487,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -530,7 +510,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -552,7 +531,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -586,7 +564,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -609,7 +586,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -635,7 +611,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -660,7 +635,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -681,7 +655,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -705,7 +678,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -727,7 +699,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -756,7 +727,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -779,7 +749,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -805,7 +774,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -830,7 +798,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -851,7 +818,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -875,7 +841,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -897,7 +862,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -929,7 +893,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -965,7 +928,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -990,7 +952,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -1012,7 +973,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -1041,7 +1001,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -1066,7 +1025,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -1088,7 +1046,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -1122,7 +1079,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -1147,7 +1103,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -1169,7 +1124,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
@@ -1198,7 +1152,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -1223,7 +1176,6 @@ Array [
globalStyles={false}
theme$={
Observable {
- "_isScalar": false,
"_subscribe": [Function],
}
}
@@ -1245,7 +1197,6 @@ Array [
theme={
Object {
"theme$": Observable {
- "_isScalar": false,
"_subscribe": [Function],
},
}
diff --git a/src/core/public/plugins/plugin.ts b/src/core/public/plugins/plugin.ts
index a43cc2046b82d..8e24573bd741c 100644
--- a/src/core/public/plugins/plugin.ts
+++ b/src/core/public/plugins/plugin.ts
@@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
-import { Subject } from 'rxjs';
-import { first } from 'rxjs/operators';
+import { firstValueFrom, Subject } from 'rxjs';
import { DiscoveredPlugin, PluginOpaqueId } from '../../server';
import { PluginInitializerContext } from './plugin_context';
import { read } from './plugin_reader';
@@ -61,7 +60,7 @@ export class PluginWrapper<
private instance?: Plugin;
private readonly startDependencies$ = new Subject<[CoreStart, TPluginsStart, TStart]>();
- public readonly startDependencies = this.startDependencies$.pipe(first()).toPromise();
+ public readonly startDependencies = firstValueFrom(this.startDependencies$);
constructor(
public readonly discoveredPlugin: DiscoveredPlugin,
diff --git a/src/core/public/theme/theme_service.ts b/src/core/public/theme/theme_service.ts
index bdb00ee4fdce9..e70bd901cde80 100644
--- a/src/core/public/theme/theme_service.ts
+++ b/src/core/public/theme/theme_service.ts
@@ -17,7 +17,7 @@ export interface SetupDeps {
export class ThemeService {
private theme$?: Observable;
- private stop$ = new Subject();
+ private stop$ = new Subject();
public setup({ injectedMetadata }: SetupDeps): ThemeServiceSetup {
const theme = injectedMetadata.getTheme();
diff --git a/src/core/public/ui_settings/ui_settings_api.test.ts b/src/core/public/ui_settings/ui_settings_api.test.ts
index d14bbfe7ca953..d5f0f1175b9e5 100644
--- a/src/core/public/ui_settings/ui_settings_api.test.ts
+++ b/src/core/public/ui_settings/ui_settings_api.test.ts
@@ -169,7 +169,7 @@ describe('#getLoadingCount$()', () => {
});
const { uiSettingsApi } = setup();
- const done$ = new Rx.Subject();
+ const done$ = new Rx.Subject();
const promise = uiSettingsApi.getLoadingCount$().pipe(takeUntil(done$), toArray()).toPromise();
await uiSettingsApi.batchSet('foo', 'bar');
@@ -194,7 +194,7 @@ describe('#getLoadingCount$()', () => {
);
const { uiSettingsApi } = setup();
- const done$ = new Rx.Subject();
+ const done$ = new Rx.Subject();
const promise = uiSettingsApi.getLoadingCount$().pipe(takeUntil(done$), toArray()).toPromise();
await uiSettingsApi.batchSet('foo', 'bar');
diff --git a/src/core/public/ui_settings/ui_settings_service.test.ts b/src/core/public/ui_settings/ui_settings_service.test.ts
index 9f0c6ac5fc937..83b2c26091bfd 100644
--- a/src/core/public/ui_settings/ui_settings_service.test.ts
+++ b/src/core/public/ui_settings/ui_settings_service.test.ts
@@ -34,7 +34,10 @@ describe('#stop', () => {
service.stop();
await expect(
- Rx.combineLatest(client.getUpdate$(), client.getUpdateErrors$(), loadingCount$!).toPromise()
+ Rx.lastValueFrom(
+ Rx.combineLatest([client.getUpdate$(), client.getUpdateErrors$(), loadingCount$!]),
+ { defaultValue: undefined }
+ )
).resolves.toBe(undefined);
});
});
diff --git a/src/core/server/core_usage_data/core_usage_data_service.test.ts b/src/core/server/core_usage_data/core_usage_data_service.test.ts
index b2315a7cde281..d8fb91809bfc3 100644
--- a/src/core/server/core_usage_data/core_usage_data_service.test.ts
+++ b/src/core/server/core_usage_data/core_usage_data_service.test.ts
@@ -8,9 +8,11 @@
import type { ConfigPath } from '@kbn/config';
import { BehaviorSubject, Observable } from 'rxjs';
-import { HotObservable } from 'rxjs/internal/testing/HotObservable';
import { TestScheduler } from 'rxjs/testing';
+// eslint-disable-next-line @kbn/imports/no_unresolved_imports
+import { HotObservable } from 'rxjs/internal/testing/HotObservable';
+
import { configServiceMock } from '../config/mocks';
import { mockCoreContext } from '../core_context.mock';
diff --git a/src/core/server/core_usage_data/core_usage_data_service.ts b/src/core/server/core_usage_data/core_usage_data_service.ts
index bdd46932fd9a9..a74db26b984b6 100644
--- a/src/core/server/core_usage_data/core_usage_data_service.ts
+++ b/src/core/server/core_usage_data/core_usage_data_service.ts
@@ -6,8 +6,8 @@
* Side Public License, v 1.
*/
-import { Subject, Observable } from 'rxjs';
-import { takeUntil, first } from 'rxjs/operators';
+import { Subject, Observable, firstValueFrom } from 'rxjs';
+import { takeUntil } from 'rxjs/operators';
import { get } from 'lodash';
import { hasConfigPathIntersection, ChangedDeprecatedPaths } from '@kbn/config';
@@ -100,7 +100,7 @@ export class CoreUsageDataService
constructor(core: CoreContext) {
this.logger = core.logger.get('core-usage-stats-service');
this.configService = core.configService;
- this.stop$ = new Subject();
+ this.stop$ = new Subject();
}
private async getSavedObjectUsageData(
@@ -383,7 +383,7 @@ export class CoreUsageDataService
private async getNonDefaultKibanaConfigs(
exposedConfigsToUsage: ExposedConfigsToUsage
): Promise {
- const config = await this.configService.getConfig$().pipe(first()).toPromise();
+ const config = await firstValueFrom(this.configService.getConfig$());
const nonDefaultConfigs = config.toRaw();
const usedPaths = await this.configService.getUsedPaths();
const exposedConfigsKeys = [...exposedConfigsToUsage.keys()];
diff --git a/src/core/server/deprecations/deprecations_service.ts b/src/core/server/deprecations/deprecations_service.ts
index df8084e6c783a..7d7af552f08df 100644
--- a/src/core/server/deprecations/deprecations_service.ts
+++ b/src/core/server/deprecations/deprecations_service.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { take } from 'rxjs/operators';
+import { firstValueFrom } from 'rxjs';
import { DeprecationsFactory } from './deprecations_factory';
import { DomainDeprecationDetails, RegisterDeprecationsConfig } from './types';
@@ -144,10 +144,9 @@ export class DeprecationsService
public async setup({ http }: DeprecationsSetupDeps): Promise {
this.logger.debug('Setting up Deprecations service');
- const config = await this.configService
- .atPath(deprecationConfig.path)
- .pipe(take(1))
- .toPromise();
+ const config = await firstValueFrom(
+ this.configService.atPath(deprecationConfig.path)
+ );
this.deprecationsFactory = new DeprecationsFactory({
logger: this.logger,
diff --git a/src/core/server/elasticsearch/elasticsearch_service.ts b/src/core/server/elasticsearch/elasticsearch_service.ts
index 07462a52ef220..d0cf23c539416 100644
--- a/src/core/server/elasticsearch/elasticsearch_service.ts
+++ b/src/core/server/elasticsearch/elasticsearch_service.ts
@@ -6,8 +6,8 @@
* Side Public License, v 1.
*/
-import { Observable, Subject } from 'rxjs';
-import { first, map, shareReplay, takeUntil } from 'rxjs/operators';
+import { firstValueFrom, Observable, Subject } from 'rxjs';
+import { map, shareReplay, takeUntil } from 'rxjs/operators';
import { CoreService } from '../../types';
import { CoreContext } from '../core_context';
@@ -41,7 +41,7 @@ export class ElasticsearchService
{
private readonly log: Logger;
private readonly config$: Observable;
- private stop$ = new Subject();
+ private stop$ = new Subject();
private kibanaVersion: string;
private authHeaders?: IAuthHeadersStorage;
private executionContextClient?: IExecutionContext;
@@ -60,7 +60,7 @@ export class ElasticsearchService
public async preboot(): Promise {
this.log.debug('Prebooting elasticsearch service');
- const config = await this.config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(this.config$);
return {
config: {
hosts: config.hosts,
@@ -76,7 +76,7 @@ export class ElasticsearchService
public async setup(deps: SetupDeps): Promise {
this.log.debug('Setting up elasticsearch service');
- const config = await this.config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(this.config$);
this.authHeaders = deps.http.authRequestHeaders;
this.executionContextClient = deps.executionContext;
@@ -112,7 +112,7 @@ export class ElasticsearchService
throw new Error('ElasticsearchService needs to be setup before calling start');
}
- const config = await this.config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(this.config$);
// Log every error we may encounter in the connection to Elasticsearch
this.esNodesCompatibility$.subscribe(({ isCompatible, message }) => {
diff --git a/src/core/server/environment/environment_service.ts b/src/core/server/environment/environment_service.ts
index 472883c1f482c..65c03b108b28a 100644
--- a/src/core/server/environment/environment_service.ts
+++ b/src/core/server/environment/environment_service.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { take } from 'rxjs/operators';
+import { firstValueFrom } from 'rxjs';
import { PathConfigType, config as pathConfigDef } from '@kbn/utils';
import { CoreContext } from '../core_context';
import { Logger } from '../logging';
@@ -49,9 +49,9 @@ export class EnvironmentService {
// IMPORTANT: This code is based on the assumption that none of the configuration values used
// here is supposed to change during preboot phase and it's safe to read them only once.
const [pathConfig, serverConfig, pidConfig] = await Promise.all([
- this.configService.atPath(pathConfigDef.path).pipe(take(1)).toPromise(),
- this.configService.atPath(httpConfigDef.path).pipe(take(1)).toPromise(),
- this.configService.atPath(pidConfigDef.path).pipe(take(1)).toPromise(),
+ firstValueFrom(this.configService.atPath(pathConfigDef.path)),
+ firstValueFrom(this.configService.atPath(httpConfigDef.path)),
+ firstValueFrom(this.configService.atPath(pidConfigDef.path)),
]);
// Log unhandled rejections so that we can fix them in preparation for https://github.com/elastic/kibana/issues/77469
diff --git a/src/core/server/http/http_server.ts b/src/core/server/http/http_server.ts
index 813f8e9784332..bc9b3f41bfe19 100644
--- a/src/core/server/http/http_server.ts
+++ b/src/core/server/http/http_server.ts
@@ -19,7 +19,7 @@ import {
import agent from 'elastic-apm-node';
import type { Duration } from 'moment';
-import { Observable } from 'rxjs';
+import { firstValueFrom, Observable } from 'rxjs';
import { take } from 'rxjs/operators';
import apm from 'elastic-apm-node';
import { Logger, LoggerFactory } from '../logging';
@@ -223,7 +223,7 @@ export class HttpServer {
if (hasStarted) {
this.log.debug('stopping http server');
- const shutdownTimeout = await this.shutdownTimeout$.pipe(take(1)).toPromise();
+ const shutdownTimeout = await firstValueFrom(this.shutdownTimeout$.pipe(take(1)));
await this.server.stop({ timeout: shutdownTimeout.asMilliseconds() });
this.log.debug(`http server stopped`);
diff --git a/src/core/server/http/http_service.ts b/src/core/server/http/http_service.ts
index ca031e8ab282b..58371899596be 100644
--- a/src/core/server/http/http_service.ts
+++ b/src/core/server/http/http_service.ts
@@ -6,8 +6,8 @@
* Side Public License, v 1.
*/
-import { Observable, Subscription, combineLatest } from 'rxjs';
-import { first, map } from 'rxjs/operators';
+import { Observable, Subscription, combineLatest, firstValueFrom } from 'rxjs';
+import { map } from 'rxjs/operators';
import { pick } from '@kbn/std';
import type { RequestHandlerContext } from 'src/core/server';
@@ -84,7 +84,7 @@ export class HttpService
public async preboot(deps: PrebootDeps): Promise {
this.log.debug('setting up preboot server');
- const config = await this.config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(this.config$);
const prebootSetup = await this.prebootServer.setup(config);
prebootSetup.server.route({
@@ -147,7 +147,7 @@ export class HttpService
}
});
- const config = await this.config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(this.config$);
const { registerRouter, ...serverContract } = await this.httpServer.setup(
config,
@@ -196,7 +196,7 @@ export class HttpService
}
public async start() {
- const config = await this.config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(this.config$);
if (this.shouldListen(config)) {
this.log.debug('stopping preboot server');
await this.prebootServer.stop();
diff --git a/src/core/server/http/router/request.ts b/src/core/server/http/router/request.ts
index 5a914fb800da9..15351b9f3906a 100644
--- a/src/core/server/http/router/request.ts
+++ b/src/core/server/http/router/request.ts
@@ -9,7 +9,7 @@
import { URL } from 'url';
import uuid from 'uuid';
import { Request, RouteOptionsApp, RequestApplicationState, RouteOptions } from '@hapi/hapi';
-import { Observable, fromEvent } from 'rxjs';
+import { Observable, fromEvent, NEVER } from 'rxjs';
import { shareReplay, first, filter } from 'rxjs/operators';
import { RecursiveReadonly } from '@kbn/utility-types';
import { deepFreeze } from '@kbn/std';
@@ -216,6 +216,13 @@ export class KibanaRequest<
}
private getEvents(request: Request): KibanaRequestEvents {
+ if (!request.raw.res) {
+ return {
+ aborted$: NEVER,
+ completed$: NEVER,
+ };
+ }
+
const completed$ = fromEvent(request.raw.res, 'close').pipe(shareReplay(1), first());
// the response's underlying connection was terminated prematurely
const aborted$ = completed$.pipe(filter(() => !isCompleted(request)));
diff --git a/src/core/server/i18n/i18n_service.ts b/src/core/server/i18n/i18n_service.ts
index 5772703a5a6b8..b8e397dc12ab5 100644
--- a/src/core/server/i18n/i18n_service.ts
+++ b/src/core/server/i18n/i18n_service.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { take } from 'rxjs/operators';
+import { firstValueFrom } from 'rxjs';
import { Logger } from '../logging';
import { IConfigService } from '../config';
import { CoreContext } from '../core_context';
@@ -68,10 +68,9 @@ export class I18nService {
}
private async initTranslations(pluginPaths: string[]) {
- const i18nConfig = await this.configService
- .atPath(i18nConfigDef.path)
- .pipe(take(1))
- .toPromise();
+ const i18nConfig = await firstValueFrom(
+ this.configService.atPath(i18nConfigDef.path)
+ );
const locale = i18nConfig.locale;
this.log.debug(`Using locale: ${locale}`);
diff --git a/src/core/server/metrics/integration_tests/server_collector.test.ts b/src/core/server/metrics/integration_tests/server_collector.test.ts
index 713d3ed1dc96e..92df3c303f37d 100644
--- a/src/core/server/metrics/integration_tests/server_collector.test.ts
+++ b/src/core/server/metrics/integration_tests/server_collector.test.ts
@@ -76,8 +76,8 @@ describe('ServerMetricsCollector', () => {
it('collect disconnects requests infos', async () => {
const never = new Promise((resolve) => undefined);
- const disconnectRequested$ = new Subject(); // Controls the number of requests in the /disconnect endpoint
- const disconnectAborted$ = new Subject(); // Controls the abort event in the /disconnect endpoint
+ const disconnectRequested$ = new Subject(); // Controls the number of requests in the /disconnect endpoint
+ const disconnectAborted$ = new Subject(); // Controls the abort event in the /disconnect endpoint
router.get({ path: '/', validate: false }, async (ctx, req, res) => {
return res.ok({ body: '' });
diff --git a/src/core/server/metrics/metrics_service.ts b/src/core/server/metrics/metrics_service.ts
index 30609837447d1..8c33b183603e7 100644
--- a/src/core/server/metrics/metrics_service.ts
+++ b/src/core/server/metrics/metrics_service.ts
@@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
-import { ReplaySubject } from 'rxjs';
-import { first } from 'rxjs/operators';
+import { firstValueFrom, ReplaySubject } from 'rxjs';
import { CoreService } from '../../types';
import { CoreContext } from '../core_context';
import { Logger } from '../logging';
@@ -38,10 +37,9 @@ export class MetricsService
}
public async setup({ http }: MetricsServiceSetupDeps): Promise {
- const config = await this.coreContext.configService
- .atPath(opsConfig.path)
- .pipe(first())
- .toPromise();
+ const config = await firstValueFrom(
+ this.coreContext.configService.atPath(opsConfig.path)
+ );
this.metricsCollector = new OpsMetricsCollector(http.server, {
logger: this.logger,
diff --git a/src/core/server/plugins/discovery/plugins_discovery.test.ts b/src/core/server/plugins/discovery/plugins_discovery.test.ts
index a6ffdff4422be..91fc7bd403dca 100644
--- a/src/core/server/plugins/discovery/plugins_discovery.test.ts
+++ b/src/core/server/plugins/discovery/plugins_discovery.test.ts
@@ -13,8 +13,8 @@ import mockFs from 'mock-fs';
import { loggingSystemMock } from '../../logging/logging_system.mock';
import { getEnvOptions, rawConfigServiceMock } from '../../config/mocks';
-import { from } from 'rxjs';
-import { first, map, toArray } from 'rxjs/operators';
+import { firstValueFrom, from } from 'rxjs';
+import { map, toArray } from 'rxjs/operators';
import { resolve } from 'path';
import { ConfigService, Env } from '../../config';
import { PluginsConfig, PluginsConfigType, config } from '../plugins_config';
@@ -163,10 +163,7 @@ describe('plugins discovery system', () => {
logger,
};
- pluginConfig = await configService
- .atPath('plugins')
- .pipe(first())
- .toPromise();
+ pluginConfig = await firstValueFrom(configService.atPath('plugins'));
// jest relies on the filesystem to get sourcemaps when using console.log
// which breaks with the mocked FS, see https://github.com/tschaub/mock-fs/issues/234
@@ -195,7 +192,7 @@ describe('plugins discovery system', () => {
{ createCwd: false }
);
- const plugins = await plugin$.pipe(toArray()).toPromise();
+ const plugins = await firstValueFrom(plugin$.pipe(toArray()));
const pluginNames = plugins.map((plugin) => plugin.name);
expect(pluginNames).toHaveLength(4);
@@ -362,7 +359,7 @@ describe('plugins discovery system', () => {
{ createCwd: false }
);
- const plugins = await plugin$.pipe(toArray()).toPromise();
+ const plugins = await firstValueFrom(plugin$.pipe(toArray()));
const pluginNames = plugins.map((plugin) => plugin.name);
expect(pluginNames).toHaveLength(4);
@@ -401,7 +398,7 @@ describe('plugins discovery system', () => {
{ createCwd: false }
);
- const plugins = await plugin$.pipe(toArray()).toPromise();
+ const plugins = await firstValueFrom(plugin$.pipe(toArray()));
const pluginNames = plugins.map((plugin) => plugin.name);
expect(pluginNames).toEqual(['pluginA']);
@@ -423,7 +420,7 @@ describe('plugins discovery system', () => {
{ createCwd: false }
);
- const plugins = await plugin$.pipe(toArray()).toPromise();
+ const plugins = await firstValueFrom(plugin$.pipe(toArray()));
const pluginNames = plugins.map((plugin) => plugin.name);
expect(pluginNames).toHaveLength(5);
@@ -451,7 +448,7 @@ describe('plugins discovery system', () => {
{ createCwd: false }
);
- const plugins = await plugin$.pipe(toArray()).toPromise();
+ const plugins = await firstValueFrom(plugin$.pipe(toArray()));
const pluginNames = plugins.map((plugin) => plugin.name);
expect(pluginNames).toHaveLength(3);
@@ -536,7 +533,7 @@ describe('plugins discovery system', () => {
let { plugin$ } = discover(new PluginsConfig(pluginConfig, env), coreContext, instanceInfo);
expect(scanPluginSearchPathsMock).toHaveBeenCalledTimes(1);
- let plugins = await plugin$.pipe(toArray()).toPromise();
+ let plugins = await firstValueFrom(plugin$.pipe(toArray()));
let pluginNames = plugins.map((plugin) => plugin.name);
expect(pluginNames).toHaveLength(3);
@@ -555,7 +552,7 @@ describe('plugins discovery system', () => {
plugin$ = discover(new PluginsConfig(pluginConfig, env), coreContext, instanceInfo).plugin$;
expect(scanPluginSearchPathsMock).toHaveBeenCalledTimes(2);
- plugins = await plugin$.pipe(toArray()).toPromise();
+ plugins = await firstValueFrom(plugin$.pipe(toArray()));
pluginNames = plugins.map((plugin) => plugin.name);
expect(pluginNames).toHaveLength(3);
diff --git a/src/core/server/plugins/discovery/scan_plugin_search_paths.test.ts b/src/core/server/plugins/discovery/scan_plugin_search_paths.test.ts
index 548c479975ddf..e1c7397ef1406 100644
--- a/src/core/server/plugins/discovery/scan_plugin_search_paths.test.ts
+++ b/src/core/server/plugins/discovery/scan_plugin_search_paths.test.ts
@@ -12,6 +12,7 @@ import { toArray } from 'rxjs/operators';
import { resolve } from 'path';
import { scanPluginSearchPaths } from './scan_plugin_search_paths';
import { PluginDiscoveryError } from './plugin_discovery_error';
+import { firstValueFrom } from 'rxjs';
const KIBANA_ROOT = process.cwd();
@@ -82,7 +83,7 @@ describe('scanPluginSearchPaths', () => {
);
const pluginOrErrors$ = scanPluginSearchPaths(scanPaths, logger);
- const { paths, errors } = extract(await pluginOrErrors$.pipe(toArray()).toPromise());
+ const { paths, errors } = extract(await firstValueFrom(pluginOrErrors$.pipe(toArray())));
expect(paths).toHaveLength(3);
expect(errors).toHaveLength(0);
@@ -106,7 +107,7 @@ describe('scanPluginSearchPaths', () => {
);
const pluginOrErrors$ = scanPluginSearchPaths([`${KIBANA_ROOT}/src/plugins`], logger);
- const { paths, errors } = extract(await pluginOrErrors$.pipe(toArray()).toPromise());
+ const { paths, errors } = extract(await firstValueFrom(pluginOrErrors$.pipe(toArray())));
expect(paths).toHaveLength(1);
expect(errors).toHaveLength(0);
@@ -128,7 +129,7 @@ describe('scanPluginSearchPaths', () => {
);
const pluginOrErrors$ = scanPluginSearchPaths([`${KIBANA_ROOT}/src/plugins`], logger);
- const { paths, errors } = extract(await pluginOrErrors$.pipe(toArray()).toPromise());
+ const { paths, errors } = extract(await firstValueFrom(pluginOrErrors$.pipe(toArray())));
expect(paths).toHaveLength(0);
expect(errors).toHaveLength(1);
@@ -153,7 +154,7 @@ describe('scanPluginSearchPaths', () => {
);
const pluginOrErrors$ = scanPluginSearchPaths([`${KIBANA_ROOT}/src/plugins`], logger);
- const { paths, errors } = extract(await pluginOrErrors$.pipe(toArray()).toPromise());
+ const { paths, errors } = extract(await firstValueFrom(pluginOrErrors$.pipe(toArray())));
expect(errors).toHaveLength(0);
expect(paths).toHaveLength(4);
@@ -180,7 +181,7 @@ describe('scanPluginSearchPaths', () => {
);
const pluginOrErrors$ = scanPluginSearchPaths([`${KIBANA_ROOT}/src/plugins`], logger);
- const { paths, errors } = extract(await pluginOrErrors$.pipe(toArray()).toPromise());
+ const { paths, errors } = extract(await firstValueFrom(pluginOrErrors$.pipe(toArray())));
expect(errors).toHaveLength(0);
expect(paths).toHaveLength(1);
@@ -203,7 +204,7 @@ describe('scanPluginSearchPaths', () => {
);
const pluginOrErrors$ = scanPluginSearchPaths([`${KIBANA_ROOT}/src/plugins`], logger);
- const { paths, errors } = extract(await pluginOrErrors$.pipe(toArray()).toPromise());
+ const { paths, errors } = extract(await firstValueFrom(pluginOrErrors$.pipe(toArray())));
expect(errors).toHaveLength(0);
expect(paths).toHaveLength(5);
@@ -236,7 +237,7 @@ describe('scanPluginSearchPaths', () => {
);
const pluginOrErrors$ = scanPluginSearchPaths([`${KIBANA_ROOT}/plugins`], logger);
- const { paths, errors } = extract(await pluginOrErrors$.pipe(toArray()).toPromise());
+ const { paths, errors } = extract(await firstValueFrom(pluginOrErrors$.pipe(toArray())));
expect(errors).toHaveLength(0);
expect(paths).toHaveLength(2);
diff --git a/src/core/server/plugins/discovery/scan_plugin_search_paths.ts b/src/core/server/plugins/discovery/scan_plugin_search_paths.ts
index 51d5a29115c30..7c352d0d7c47f 100644
--- a/src/core/server/plugins/discovery/scan_plugin_search_paths.ts
+++ b/src/core/server/plugins/discovery/scan_plugin_search_paths.ts
@@ -13,8 +13,8 @@ import { catchError, mergeMap } from 'rxjs/operators';
import { Logger } from '../../logging';
import { PluginDiscoveryError } from './plugin_discovery_error';
-const fsReadDir$ = bindNodeCallback(readdir);
-const fsStat$ = bindNodeCallback(stat);
+const fsReadDir$ = bindNodeCallback<[string], [string[]]>(readdir);
+const fsStat$ = bindNodeCallback<[PathLike], [Stats]>(stat);
const maxScanDepth = 5;
diff --git a/src/core/server/plugins/plugin.ts b/src/core/server/plugins/plugin.ts
index dc861b4489dcf..67c32526f2bf4 100644
--- a/src/core/server/plugins/plugin.ts
+++ b/src/core/server/plugins/plugin.ts
@@ -8,8 +8,7 @@
import { join } from 'path';
import typeDetect from 'type-detect';
-import { Subject } from 'rxjs';
-import { first } from 'rxjs/operators';
+import { firstValueFrom, Subject } from 'rxjs';
import { isPromise } from '@kbn/std';
import { isConfigSchema } from '@kbn/config-schema';
@@ -63,7 +62,7 @@ export class PluginWrapper<
| AsyncPlugin;
private readonly startDependencies$ = new Subject<[CoreStart, TPluginsStart, TStart]>();
- public readonly startDependencies = this.startDependencies$.pipe(first()).toPromise();
+ public readonly startDependencies = firstValueFrom(this.startDependencies$);
constructor(
public readonly params: {
diff --git a/src/core/server/plugins/plugins_service.ts b/src/core/server/plugins/plugins_service.ts
index 2c1ba26b96ebb..43e10fbe59b6a 100644
--- a/src/core/server/plugins/plugins_service.ts
+++ b/src/core/server/plugins/plugins_service.ts
@@ -7,8 +7,8 @@
*/
import Path from 'path';
-import { Observable } from 'rxjs';
-import { filter, first, map, tap, toArray } from 'rxjs/operators';
+import { firstValueFrom, Observable } from 'rxjs';
+import { filter, map, tap, toArray } from 'rxjs/operators';
import { getFlattenedObject } from '@kbn/std';
import { CoreService } from '../../types';
@@ -111,7 +111,7 @@ export class PluginsService implements CoreService {
- const config = await this.config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(this.config$);
const { error$, plugin$ } = discover(config, this.coreContext, {
uuid: environment.instanceUuid,
@@ -151,7 +151,7 @@ export class PluginsService implements CoreService();
if (config.initialize) {
@@ -186,7 +186,7 @@ export class PluginsService implements CoreService errorTypesToReport.includes(error.type)),
tap((pluginError) => this.log.error(pluginError)),
toArray()
)
- .toPromise();
+ );
if (errors.length > 0) {
throw new Error(
`Failed to initialize plugins:${errors.map((err) => `\n\t${err.message}`).join('')}`
@@ -265,7 +265,7 @@ export class PluginsService implements CoreService();
- const plugins = await plugin$.pipe(toArray()).toPromise();
+ const plugins = await firstValueFrom(plugin$.pipe(toArray()));
// Register config descriptors and deprecations
for (const plugin of plugins) {
diff --git a/src/core/server/saved_objects/migrations/kibana_migrator.test.ts b/src/core/server/saved_objects/migrations/kibana_migrator.test.ts
index 2adf4d5dee184..e5aa51f9d6b0a 100644
--- a/src/core/server/saved_objects/migrations/kibana_migrator.test.ts
+++ b/src/core/server/saved_objects/migrations/kibana_migrator.test.ts
@@ -16,6 +16,7 @@ import { SavedObjectTypeRegistry } from '../saved_objects_type_registry';
import { SavedObjectsType } from '../types';
import { DocumentMigrator } from './core/document_migrator';
import { ByteSizeValue } from '@kbn/config-schema';
+import { lastValueFrom } from 'rxjs';
jest.mock('./core/document_migrator', () => {
return {
@@ -134,7 +135,7 @@ describe('KibanaMigrator', () => {
it('emits results on getMigratorResult$()', async () => {
const options = mockV2MigrationOptions();
const migrator = new KibanaMigrator(options);
- const migratorStatus = migrator.getStatus$().pipe(take(3)).toPromise();
+ const migratorStatus = lastValueFrom(migrator.getStatus$().pipe(take(3)));
migrator.prepareMigrations();
await migrator.runMigrations();
diff --git a/src/core/server/saved_objects/saved_objects_service.ts b/src/core/server/saved_objects/saved_objects_service.ts
index fef20937c9cfe..0fc5057d1b88b 100644
--- a/src/core/server/saved_objects/saved_objects_service.ts
+++ b/src/core/server/saved_objects/saved_objects_service.ts
@@ -6,8 +6,8 @@
* Side Public License, v 1.
*/
-import { Subject, Observable } from 'rxjs';
-import { first, filter, take, switchMap } from 'rxjs/operators';
+import { Subject, Observable, firstValueFrom } from 'rxjs';
+import { filter, take, switchMap } from 'rxjs/operators';
import { CoreService } from '../../types';
import {
SavedObjectsClient,
@@ -314,14 +314,12 @@ export class SavedObjectsService
this.setupDeps = setupDeps;
const { http, elasticsearch, coreUsageData, deprecations } = setupDeps;
- const savedObjectsConfig = await this.coreContext.configService
- .atPath('savedObjects')
- .pipe(first())
- .toPromise();
- const savedObjectsMigrationConfig = await this.coreContext.configService
- .atPath('migrations')
- .pipe(first())
- .toPromise();
+ const savedObjectsConfig = await firstValueFrom(
+ this.coreContext.configService.atPath('savedObjects')
+ );
+ const savedObjectsMigrationConfig = await firstValueFrom(
+ this.coreContext.configService.atPath('migrations')
+ );
this.config = new SavedObjectConfig(savedObjectsConfig, savedObjectsMigrationConfig);
deprecations.getRegistry('savedObjects').registerDeprecations(
@@ -340,7 +338,7 @@ export class SavedObjectsService
coreUsageData,
logger: this.logger,
config: this.config,
- migratorPromise: this.migrator$.pipe(first()).toPromise(),
+ migratorPromise: firstValueFrom(this.migrator$),
kibanaIndex,
kibanaVersion: this.kibanaVersion,
});
diff --git a/src/core/server/status/routes/integration_tests/status.test.ts b/src/core/server/status/routes/integration_tests/status.test.ts
index df203675725a8..3f83a05d0e0a6 100644
--- a/src/core/server/status/routes/integration_tests/status.test.ts
+++ b/src/core/server/status/routes/integration_tests/status.test.ts
@@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
-import { BehaviorSubject } from 'rxjs';
-import { first } from 'rxjs/operators';
+import { BehaviorSubject, firstValueFrom } from 'rxjs';
import supertest from 'supertest';
import { omit } from 'lodash';
@@ -144,7 +143,7 @@ describe('GET /api/status', () => {
build_number: 1234,
build_snapshot: true,
});
- const metricsMockValue = await metrics.getOpsMetrics$().pipe(first()).toPromise();
+ const metricsMockValue = await firstValueFrom(metrics.getOpsMetrics$());
expect(result.body.metrics).toEqual({
last_updated: expect.any(String),
collection_interval_in_millis: metrics.collectionInterval,
diff --git a/src/core/server/status/routes/status.ts b/src/core/server/status/routes/status.ts
index 7751980ae6ec3..4fb0900b23238 100644
--- a/src/core/server/status/routes/status.ts
+++ b/src/core/server/status/routes/status.ts
@@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
-import { Observable, combineLatest, ReplaySubject } from 'rxjs';
-import { first } from 'rxjs/operators';
+import { Observable, combineLatest, ReplaySubject, firstValueFrom } from 'rxjs';
import { schema } from '@kbn/config-schema';
import { IRouter } from '../../http';
@@ -92,7 +91,7 @@ export const registerStatusRoute = ({
async (context, req, res) => {
const { version, buildSha, buildNum } = config.packageInfo;
const versionWithoutSnapshot = version.replace(SNAPSHOT_POSTFIX, '');
- const [overall, coreOverall, core, plugins] = await combinedStatus$.pipe(first()).toPromise();
+ const [overall, coreOverall, core, plugins] = await firstValueFrom(combinedStatus$);
const { v8format = true, v7format = false } = req.query ?? {};
@@ -113,7 +112,7 @@ export const registerStatusRoute = ({
});
}
- const lastMetrics = await metrics.getOpsMetrics$().pipe(first()).toPromise();
+ const lastMetrics = await firstValueFrom(metrics.getOpsMetrics$());
const body: StatusHttpBody = {
name: config.serverName,
diff --git a/src/core/server/status/status_service.ts b/src/core/server/status/status_service.ts
index a5b5f0a37397a..6c8f8716c036e 100644
--- a/src/core/server/status/status_service.ts
+++ b/src/core/server/status/status_service.ts
@@ -6,8 +6,8 @@
* Side Public License, v 1.
*/
-import { Observable, combineLatest, Subscription, Subject } from 'rxjs';
-import { map, distinctUntilChanged, shareReplay, take, debounceTime } from 'rxjs/operators';
+import { Observable, combineLatest, Subscription, Subject, firstValueFrom } from 'rxjs';
+import { map, distinctUntilChanged, shareReplay, debounceTime } from 'rxjs/operators';
import { isDeepStrictEqual } from 'util';
import { CoreService } from '../../types';
@@ -65,7 +65,7 @@ export class StatusService implements CoreService {
environment,
coreUsageData,
}: SetupDeps) {
- const statusConfig = await this.config$.pipe(take(1)).toPromise();
+ const statusConfig = await firstValueFrom(this.config$);
const core$ = this.setupCoreStatus({ elasticsearch, savedObjects });
this.pluginsStatus = new PluginsStatusService({ core$, pluginDependencies });
diff --git a/src/core/server/ui_settings/ui_settings_service.ts b/src/core/server/ui_settings/ui_settings_service.ts
index 924aaa0717f70..64765ec7d6c74 100644
--- a/src/core/server/ui_settings/ui_settings_service.ts
+++ b/src/core/server/ui_settings/ui_settings_service.ts
@@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
-import { Observable } from 'rxjs';
-import { first } from 'rxjs/operators';
+import { firstValueFrom, Observable } from 'rxjs';
import { mapToObject } from '@kbn/std';
import { CoreService } from '../../types';
@@ -53,7 +52,7 @@ export class UiSettingsService
public async preboot(): Promise {
this.log.debug('Prebooting ui settings service');
- const { overrides } = await this.config$.pipe(first()).toPromise();
+ const { overrides } = await firstValueFrom(this.config$);
this.overrides = overrides;
this.register(getCoreSettings({ isDist: this.isDist }));
@@ -74,7 +73,7 @@ export class UiSettingsService
savedObjects.registerType(uiSettingsType);
registerRoutes(http.createRouter(''));
- const config = await this.config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(this.config$);
this.overrides = config.overrides;
return {
diff --git a/src/dev/bazel/pkg_npm_types.bzl b/src/dev/bazel/pkg_npm_types.bzl
index f90d60252af2d..392a8185d9563 100644
--- a/src/dev/bazel/pkg_npm_types.bzl
+++ b/src/dev/bazel/pkg_npm_types.bzl
@@ -6,7 +6,7 @@
# Side Public License, v 1.
#
-load("@npm//@bazel/typescript/internal:ts_config.bzl", "TsConfigInfo")
+load("@rules_nodejs//nodejs/private:ts_config.bzl", "TsConfigInfo")
load("@build_bazel_rules_nodejs//:providers.bzl", "run_node", "LinkablePackageInfo", "DeclarationInfo", "declaration_info")
load("@build_bazel_rules_nodejs//internal/linker:link_node_modules.bzl", "module_mappings_aspect")
diff --git a/src/dev/build/lib/scan.ts b/src/dev/build/lib/scan.ts
index 422a455d44a0c..5ba7385792d74 100644
--- a/src/dev/build/lib/scan.ts
+++ b/src/dev/build/lib/scan.ts
@@ -15,8 +15,8 @@ import { map, mergeAll, mergeMap } from 'rxjs/operators';
// @ts-ignore
import { assertAbsolute } from './fs';
-const getStat$ = Rx.bindNodeCallback(Fs.stat) as (path: string) => Rx.Observable;
-const getReadDir$ = Rx.bindNodeCallback(Fs.readdir) as (path: string) => Rx.Observable;
+const getStat$ = Rx.bindNodeCallback<[string], [Fs.Stats]>(Fs.stat);
+const getReadDir$ = Rx.bindNodeCallback<[string], [string[]]>(Fs.readdir);
/**
* Return an observable of all files in a directory, starting with the
diff --git a/src/dev/build/lib/scan_delete.ts b/src/dev/build/lib/scan_delete.ts
index 2a12c54972bf4..cc193f2cffd00 100644
--- a/src/dev/build/lib/scan_delete.ts
+++ b/src/dev/build/lib/scan_delete.ts
@@ -16,8 +16,8 @@ import { count, map, mergeAll, mergeMap } from 'rxjs/operators';
// @ts-ignore
import { assertAbsolute } from './fs';
-const getStat$ = Rx.bindNodeCallback(Fs.stat);
-const getReadDir$ = Rx.bindNodeCallback(Fs.readdir);
+const getStat$ = Rx.bindNodeCallback<[Fs.PathLike], [Fs.Stats]>(Fs.stat);
+const getReadDir$ = Rx.bindNodeCallback<[string], [string[]]>(Fs.readdir);
interface Options {
directory: string;
diff --git a/src/dev/build/tasks/build_kibana_platform_plugins.ts b/src/dev/build/tasks/build_kibana_platform_plugins.ts
index 48d249ca37409..aa9101abb507f 100644
--- a/src/dev/build/tasks/build_kibana_platform_plugins.ts
+++ b/src/dev/build/tasks/build_kibana_platform_plugins.ts
@@ -9,7 +9,7 @@
import Path from 'path';
import { REPO_ROOT } from '@kbn/utils';
-import { lastValueFrom } from '@kbn/std';
+import { lastValueFrom } from 'rxjs';
import { CiStatsMetric } from '@kbn/dev-utils';
import {
runOptimizer,
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 191f53208df72..7ce7459d6eefd 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
@@ -170,6 +170,7 @@ kibana_vars=(
status.v6ApiFormat
telemetry.allowChangingOptInStatus
telemetry.enabled
+ telemetry.hidePrivacyStatement
telemetry.optIn
telemetry.sendUsageTo
telemetry.sendUsageFrom
diff --git a/src/dev/eslint/run_eslint_with_types.ts b/src/dev/eslint/run_eslint_with_types.ts
index d7f2482fcb26b..1ac7e1c6a91c7 100644
--- a/src/dev/eslint/run_eslint_with_types.ts
+++ b/src/dev/eslint/run_eslint_with_types.ts
@@ -16,7 +16,6 @@ import { mergeMap, reduce } from 'rxjs/operators';
import { supportsColor } from 'chalk';
import { run, createFailError } from '@kbn/dev-utils';
import { REPO_ROOT } from '@kbn/utils';
-import { lastValueFrom } from '@kbn/std';
import { PROJECTS } from '../typescript/projects';
import { Project } from '../typescript/project';
@@ -61,7 +60,7 @@ export function runEslintWithTypes() {
const concurrency = Math.max(1, Math.round((Os.cpus() || []).length / 2) || 1) || 1;
log.info(`Linting ${projects.length} projects, ${concurrency} at a time`);
- const failures = await lastValueFrom(
+ const failures = await Rx.lastValueFrom(
Rx.from(projects).pipe(
mergeMap(async (project) => {
const configFilePath = Path.resolve(project.directory, 'types.eslint.config.js');
diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts
index cb1c61b0a47e0..2a067a54d472e 100644
--- a/src/dev/license_checker/config.ts
+++ b/src/dev/license_checker/config.ts
@@ -77,6 +77,6 @@ export const LICENSE_OVERRIDES = {
'jsts@1.6.2': ['Eclipse Distribution License - v 1.0'], // cf. https://github.com/bjornharrtell/jsts
'@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint
'@elastic/ems-client@8.2.0': ['Elastic License 2.0'],
- '@elastic/eui@53.0.1': ['SSPL-1.0 OR Elastic License 2.0'],
+ '@elastic/eui@54.0.0': ['SSPL-1.0 OR Elastic License 2.0'],
'language-subtag-registry@0.3.21': ['CC-BY-4.0'], // retired ODC‑By license https://github.com/mattcg/language-subtag-registry
};
diff --git a/src/dev/typescript/concurrent_map.ts b/src/dev/typescript/concurrent_map.ts
index b40da14f4162b..ad7231687faad 100644
--- a/src/dev/typescript/concurrent_map.ts
+++ b/src/dev/typescript/concurrent_map.ts
@@ -8,7 +8,6 @@
import * as Rx from 'rxjs';
import { mergeMap, toArray, map } from 'rxjs/operators';
-import { lastValueFrom } from '@kbn/std';
export async function concurrentMap(
concurrency: number,
@@ -19,7 +18,7 @@ export async function concurrentMap(
return [];
}
- return await lastValueFrom(
+ return await Rx.lastValueFrom(
Rx.from(arr).pipe(
// execute items in parallel based on concurrency
mergeMap(async (item, index) => ({ index, result: await fn(item, index) }), concurrency),
diff --git a/src/dev/typescript/run_type_check_cli.ts b/src/dev/typescript/run_type_check_cli.ts
index 5888e6eaf6806..bafd2406c1095 100644
--- a/src/dev/typescript/run_type_check_cli.ts
+++ b/src/dev/typescript/run_type_check_cli.ts
@@ -13,7 +13,6 @@ import * as Rx from 'rxjs';
import { mergeMap, reduce } from 'rxjs/operators';
import execa from 'execa';
import { run, createFailError } from '@kbn/dev-utils';
-import { lastValueFrom } from '@kbn/std';
import { PROJECTS } from './projects';
import { buildTsRefs } from './build_ts_refs';
@@ -65,7 +64,7 @@ export async function runTypeCheckCli() {
: ['--skipLibCheck', 'false']),
];
- const failureCount = await lastValueFrom(
+ const failureCount = await Rx.lastValueFrom(
Rx.from(projects).pipe(
mergeMap(async (p) => {
const relativePath = Path.relative(process.cwd(), p.tsConfigPath);
diff --git a/src/plugins/charts/public/services/active_cursor/active_cursor.test.ts b/src/plugins/charts/public/services/active_cursor/active_cursor.test.ts
index 7f840c858d603..ad0dbb4f5e363 100644
--- a/src/plugins/charts/public/services/active_cursor/active_cursor.test.ts
+++ b/src/plugins/charts/public/services/active_cursor/active_cursor.test.ts
@@ -22,8 +22,8 @@ describe('ActiveCursor', () => {
expect(activeCursor.activeCursor$).toMatchInlineSnapshot(`
Subject {
- "_isScalar": false,
"closed": false,
+ "currentObservers": null,
"hasError": false,
"isStopped": false,
"observers": Array [],
diff --git a/src/plugins/console/public/application/components/help_panel.tsx b/src/plugins/console/public/application/components/help_panel.tsx
index 50238006f6ce2..ed57d3178df4b 100644
--- a/src/plugins/console/public/application/components/help_panel.tsx
+++ b/src/plugins/console/public/application/components/help_panel.tsx
@@ -140,6 +140,13 @@ export function HelpPanel(props: Props) {
defaultMessage="Select the currently selected or the top most term in auto-complete menu"
/>
+ Ctrl/Cmd + L
+
+
+
Esc
void;
refreshAutocompleteSettings: (selectedSettings: DevToolsSettings['autocomplete']) => void;
settings: DevToolsSettings;
+ editorInstance: SenseEditor | null;
}
export function DevToolsSettingsModal(props: Props) {
@@ -74,7 +77,10 @@ export function DevToolsSettingsModal(props: Props) {
const [polling, setPolling] = useState(props.settings.polling);
const [pollInterval, setPollInterval] = useState(props.settings.pollInterval);
const [tripleQuotes, setTripleQuotes] = useState(props.settings.tripleQuotes);
- const [historyDisabled, setHistoryDisabled] = useState(props.settings.historyDisabled);
+ const [isHistoryDisabled, setIsHistoryDisabled] = useState(props.settings.isHistoryDisabled);
+ const [isKeyboardShortcutsDisabled, setIsKeyboardShortcutsDisabled] = useState(
+ props.settings.isKeyboardShortcutsDisabled
+ );
const autoCompleteCheckboxes = [
{
@@ -134,7 +140,8 @@ export function DevToolsSettingsModal(props: Props) {
polling,
pollInterval,
tripleQuotes,
- historyDisabled,
+ isHistoryDisabled,
+ isKeyboardShortcutsDisabled,
});
}
@@ -145,6 +152,21 @@ export function DevToolsSettingsModal(props: Props) {
setPollInterval(sanitizedValue);
}, []);
+ const toggleKeyboardShortcuts = useCallback(
+ (isDisabled: boolean) => {
+ if (props.editorInstance) {
+ unregisterCommands(props.editorInstance);
+ setIsKeyboardShortcutsDisabled(isDisabled);
+ }
+ },
+ [props.editorInstance]
+ );
+
+ const toggleSavingToHistory = useCallback(
+ (isDisabled: boolean) => setIsHistoryDisabled(isDisabled),
+ []
+ );
+
// It only makes sense to show polling options if the user needs to fetch any data.
const pollingFields =
fields || indices || templates ? (
@@ -160,7 +182,7 @@ export function DevToolsSettingsModal(props: Props) {
}
>
@@ -267,15 +289,34 @@ export function DevToolsSettingsModal(props: Props) {
}
>
}
- onChange={(e) => setHistoryDisabled(e.target.checked)}
+ onChange={(e) => toggleSavingToHistory(e.target.checked)}
+ />
+
+
+
+ }
+ >
+
+ }
+ onChange={(e) => toggleKeyboardShortcuts(e.target.checked)}
/>
diff --git a/src/plugins/console/public/application/containers/editor/editor.tsx b/src/plugins/console/public/application/containers/editor/editor.tsx
index df017250664e4..4931648c07df7 100644
--- a/src/plugins/console/public/application/containers/editor/editor.tsx
+++ b/src/plugins/console/public/application/containers/editor/editor.tsx
@@ -15,15 +15,17 @@ import { Panel, PanelsContainer } from '../../containers';
import { Editor as EditorUI, EditorOutput } from './legacy/console_editor';
import { StorageKeys } from '../../../services';
import { useEditorReadContext, useServicesContext, useRequestReadContext } from '../../contexts';
+import type { SenseEditor } from '../../models';
const INITIAL_PANEL_WIDTH = 50;
const PANEL_MIN_WIDTH = '100px';
interface Props {
loading: boolean;
+ setEditorInstance: (instance: SenseEditor) => void;
}
-export const Editor = memo(({ loading }: Props) => {
+export const Editor = memo(({ loading, setEditorInstance }: Props) => {
const {
services: { storage },
} = useServicesContext();
@@ -61,7 +63,10 @@ export const Editor = memo(({ loading }: Props) => {
{loading ? (
) : (
-
+
)}
{
-
+ {}} />
diff --git a/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx b/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx
index 9105d86f9e2ec..9a879b4a72916 100644
--- a/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx
+++ b/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx
@@ -34,11 +34,13 @@ import { autoIndent, getDocumentation } from '../console_menu_actions';
import { subscribeResizeChecker } from '../subscribe_console_resize_checker';
import { applyCurrentSettings } from './apply_editor_settings';
import { registerCommands } from './keyboard_shortcuts';
+import type { SenseEditor } from '../../../../models/sense_editor';
const { useUIAceKeyboardMode } = ace;
export interface EditorProps {
initialTextValue: string;
+ setEditorInstance: (instance: SenseEditor) => void;
}
interface QueryParams {
@@ -62,7 +64,7 @@ const DEFAULT_INPUT_VALUE = `GET _search
const inputId = 'ConAppInputTextarea';
-function EditorUI({ initialTextValue }: EditorProps) {
+function EditorUI({ initialTextValue, setEditorInstance }: EditorProps) {
const {
services: { history, notifications, settings: settingsService, esHostService, http },
docLinkVersion,
@@ -225,12 +227,22 @@ function EditorUI({ initialTextValue }: EditorProps) {
}, [settings]);
useEffect(() => {
- registerCommands({
- senseEditor: editorInstanceRef.current!,
- sendCurrentRequestToES,
- openDocumentation,
- });
- }, [sendCurrentRequestToES, openDocumentation]);
+ const { isKeyboardShortcutsDisabled } = settings;
+ if (!isKeyboardShortcutsDisabled) {
+ registerCommands({
+ senseEditor: editorInstanceRef.current!,
+ sendCurrentRequestToES,
+ openDocumentation,
+ });
+ }
+ }, [sendCurrentRequestToES, openDocumentation, settings]);
+
+ useEffect(() => {
+ const { current: editor } = editorInstanceRef;
+ if (editor) {
+ setEditorInstance(editor);
+ }
+ }, [setEditorInstance]);
return (
diff --git a/src/plugins/console/public/application/containers/editor/legacy/console_editor/keyboard_shortcuts.ts b/src/plugins/console/public/application/containers/editor/legacy/console_editor/keyboard_shortcuts.ts
index 4f09a49f3ac96..3d100ef0a5528 100644
--- a/src/plugins/console/public/application/containers/editor/legacy/console_editor/keyboard_shortcuts.ts
+++ b/src/plugins/console/public/application/containers/editor/legacy/console_editor/keyboard_shortcuts.ts
@@ -15,6 +15,15 @@ interface Actions {
openDocumentation: () => void;
}
+const COMMANDS = {
+ SEND_TO_ELASTICSEARCH: 'send to Elasticsearch',
+ OPEN_DOCUMENTATION: 'open documentation',
+ AUTO_INDENT_REQUEST: 'auto indent request',
+ MOVE_TO_PREVIOUS_REQUEST: 'move to previous request start or end',
+ MOVE_TO_NEXT_REQUEST: 'move to next request start or end',
+ GO_TO_LINE: 'gotoline',
+};
+
export function registerCommands({
senseEditor,
sendCurrentRequestToES,
@@ -28,12 +37,14 @@ export function registerCommands({
coreEditor.registerKeyboardShortcut({
keys: { win: 'Ctrl-Enter', mac: 'Command-Enter' },
- name: 'send to Elasticsearch',
- fn: () => sendCurrentRequestToES(),
+ name: COMMANDS.SEND_TO_ELASTICSEARCH,
+ fn: () => {
+ sendCurrentRequestToES();
+ },
});
coreEditor.registerKeyboardShortcut({
- name: 'open documentation',
+ name: COMMANDS.OPEN_DOCUMENTATION,
keys: { win: 'Ctrl-/', mac: 'Command-/' },
fn: () => {
openDocumentation();
@@ -41,7 +52,7 @@ export function registerCommands({
});
coreEditor.registerKeyboardShortcut({
- name: 'auto indent request',
+ name: COMMANDS.AUTO_INDENT_REQUEST,
keys: { win: 'Ctrl-I', mac: 'Command-I' },
fn: () => {
throttledAutoIndent();
@@ -49,7 +60,7 @@ export function registerCommands({
});
coreEditor.registerKeyboardShortcut({
- name: 'move to previous request start or end',
+ name: COMMANDS.MOVE_TO_PREVIOUS_REQUEST,
keys: { win: 'Ctrl-Up', mac: 'Command-Up' },
fn: () => {
senseEditor.moveToPreviousRequestEdge();
@@ -57,10 +68,28 @@ export function registerCommands({
});
coreEditor.registerKeyboardShortcut({
- name: 'move to next request start or end',
+ name: COMMANDS.MOVE_TO_NEXT_REQUEST,
keys: { win: 'Ctrl-Down', mac: 'Command-Down' },
fn: () => {
senseEditor.moveToNextRequestEdge(false);
},
});
+
+ coreEditor.registerKeyboardShortcut({
+ name: COMMANDS.GO_TO_LINE,
+ keys: { win: 'Ctrl-L', mac: 'Command-L' },
+ fn: (editor) => {
+ const line = parseInt(prompt('Enter line number') ?? '', 10);
+ if (!isNaN(line)) {
+ editor.gotoLine(line);
+ }
+ },
+ });
+}
+
+export function unregisterCommands(senseEditor: SenseEditor) {
+ const coreEditor = senseEditor.getCoreEditor();
+ Object.values(COMMANDS).forEach((command) => {
+ coreEditor.unregisterKeyboardShortcut(command);
+ });
}
diff --git a/src/plugins/console/public/application/containers/main/main.tsx b/src/plugins/console/public/application/containers/main/main.tsx
index 30bf23d94a327..5895b919f9842 100644
--- a/src/plugins/console/public/application/containers/main/main.tsx
+++ b/src/plugins/console/public/application/containers/main/main.tsx
@@ -25,6 +25,7 @@ import { useServicesContext, useEditorReadContext, useRequestReadContext } from
import { useDataInit } from '../../hooks';
import { getTopNavConfig } from './get_top_nav';
+import type { SenseEditor } from '../../models/sense_editor';
export function Main() {
const {
@@ -46,6 +47,8 @@ export function Main() {
const [showSettings, setShowSettings] = useState(false);
const [showHelp, setShowHelp] = useState(false);
+ const [editorInstance, setEditorInstance] = useState(null);
+
const renderConsoleHistory = () => {
return editorsReady ? setShowHistory(false)} /> : null;
};
@@ -108,7 +111,7 @@ export function Main() {
{showingHistory ? {renderConsoleHistory()} : null}
-
+
@@ -121,7 +124,9 @@ export function Main() {
/>
) : null}
- {showSettings ? setShowSettings(false)} /> : null}
+ {showSettings ? (
+ setShowSettings(false)} editorInstance={editorInstance} />
+ ) : null}
{showHelp ? setShowHelp(false)} /> : null}
diff --git a/src/plugins/console/public/application/containers/settings.tsx b/src/plugins/console/public/application/containers/settings.tsx
index f0ec64f4b13b2..c0bd1b18fff26 100644
--- a/src/plugins/console/public/application/containers/settings.tsx
+++ b/src/plugins/console/public/application/containers/settings.tsx
@@ -15,6 +15,7 @@ import { AutocompleteOptions, DevToolsSettingsModal } from '../components';
import { retrieveAutoCompleteInfo } from '../../lib/mappings/mappings';
import { useServicesContext, useEditorActionContext } from '../contexts';
import { DevToolsSettings, Settings as SettingsService } from '../../services';
+import type { SenseEditor } from '../models';
const getAutocompleteDiff = (
newSettings: DevToolsSettings,
@@ -70,9 +71,10 @@ const fetchAutocompleteSettingsIfNeeded = (
export interface Props {
onClose: () => void;
+ editorInstance: SenseEditor | null;
}
-export function Settings({ onClose }: Props) {
+export function Settings({ onClose, editorInstance }: Props) {
const {
services: { settings, http },
} = useServicesContext();
@@ -102,6 +104,7 @@ export function Settings({ onClose }: Props) {
refreshAutocompleteSettings(http, settings, selectedSettings)
}
settings={settings.toJSON()}
+ editorInstance={editorInstance}
/>
);
}
diff --git a/src/plugins/console/public/application/hooks/use_send_current_request_to_es/use_send_current_request_to_es.ts b/src/plugins/console/public/application/hooks/use_send_current_request_to_es/use_send_current_request_to_es.ts
index f53a9dadbe108..e7c436c9806b3 100644
--- a/src/plugins/console/public/application/hooks/use_send_current_request_to_es/use_send_current_request_to_es.ts
+++ b/src/plugins/console/public/application/hooks/use_send_current_request_to_es/use_send_current_request_to_es.ts
@@ -49,9 +49,9 @@ export const useSendCurrentRequestToES = () => {
const results = await sendRequestToES({ http, requests });
let saveToHistoryError: undefined | Error;
- const { historyDisabled } = settings.toJSON();
+ const { isHistoryDisabled } = settings.toJSON();
- if (!historyDisabled) {
+ if (!isHistoryDisabled) {
results.forEach(({ request: { path, method, data } }) => {
try {
history.addToHistory(path, method, data);
@@ -81,7 +81,7 @@ export const useSendCurrentRequestToES = () => {
notifications.toasts.remove(toast);
},
onDisableSavingToHistory: () => {
- settings.setHistoryDisabled(true);
+ settings.setIsHistoryDisabled(true);
notifications.toasts.remove(toast);
},
}),
diff --git a/src/plugins/console/public/application/models/legacy_core_editor/legacy_core_editor.ts b/src/plugins/console/public/application/models/legacy_core_editor/legacy_core_editor.ts
index 7a90dbe138f17..f13597e933bb2 100644
--- a/src/plugins/console/public/application/models/legacy_core_editor/legacy_core_editor.ts
+++ b/src/plugins/console/public/application/models/legacy_core_editor/legacy_core_editor.ts
@@ -297,6 +297,11 @@ export class LegacyCoreEditor implements CoreEditor {
});
}
+ unregisterKeyboardShortcut(command: string) {
+ // @ts-ignore
+ this.editor.commands.removeCommand(command);
+ }
+
legacyUpdateUI(range: Range) {
if (!this.$actions) {
return;
diff --git a/src/plugins/console/public/services/settings.ts b/src/plugins/console/public/services/settings.ts
index 1a7eff3e7ca54..6757631a7d7c5 100644
--- a/src/plugins/console/public/services/settings.ts
+++ b/src/plugins/console/public/services/settings.ts
@@ -15,7 +15,8 @@ export const DEFAULT_SETTINGS = Object.freeze({
tripleQuotes: true,
wrapMode: true,
autocomplete: Object.freeze({ fields: true, indices: true, templates: true, dataStreams: true }),
- historyDisabled: false,
+ isHistoryDisabled: false,
+ isKeyboardShortcutsDisabled: false,
});
export interface DevToolsSettings {
@@ -30,72 +31,96 @@ export interface DevToolsSettings {
polling: boolean;
pollInterval: number;
tripleQuotes: boolean;
- historyDisabled: boolean;
+ isHistoryDisabled: boolean;
+ isKeyboardShortcutsDisabled: boolean;
+}
+
+enum SettingKeys {
+ FONT_SIZE = 'font_size',
+ WRAP_MODE = 'wrap_mode',
+ TRIPLE_QUOTES = 'triple_quotes',
+ AUTOCOMPLETE_SETTINGS = 'autocomplete_settings',
+ CONSOLE_POLLING = 'console_polling',
+ POLL_INTERVAL = 'poll_interval',
+ IS_HISTORY_DISABLED = 'is_history_disabled',
+ IS_KEYBOARD_SHORTCUTS_DISABLED = 'is_keyboard_shortcuts_disabled',
}
export class Settings {
constructor(private readonly storage: Storage) {}
getFontSize() {
- return this.storage.get('font_size', DEFAULT_SETTINGS.fontSize);
+ return this.storage.get(SettingKeys.FONT_SIZE, DEFAULT_SETTINGS.fontSize);
}
setFontSize(size: number) {
- this.storage.set('font_size', size);
+ this.storage.set(SettingKeys.FONT_SIZE, size);
return true;
}
getWrapMode() {
- return this.storage.get('wrap_mode', DEFAULT_SETTINGS.wrapMode);
+ return this.storage.get(SettingKeys.WRAP_MODE, DEFAULT_SETTINGS.wrapMode);
}
setWrapMode(mode: boolean) {
- this.storage.set('wrap_mode', mode);
+ this.storage.set(SettingKeys.WRAP_MODE, mode);
return true;
}
setTripleQuotes(tripleQuotes: boolean) {
- this.storage.set('triple_quotes', tripleQuotes);
+ this.storage.set(SettingKeys.TRIPLE_QUOTES, tripleQuotes);
return true;
}
getTripleQuotes() {
- return this.storage.get('triple_quotes', DEFAULT_SETTINGS.tripleQuotes);
+ return this.storage.get(SettingKeys.TRIPLE_QUOTES, DEFAULT_SETTINGS.tripleQuotes);
}
getAutocomplete() {
- return this.storage.get('autocomplete_settings', DEFAULT_SETTINGS.autocomplete);
+ return this.storage.get(SettingKeys.AUTOCOMPLETE_SETTINGS, DEFAULT_SETTINGS.autocomplete);
}
setAutocomplete(settings: object) {
- this.storage.set('autocomplete_settings', settings);
+ this.storage.set(SettingKeys.AUTOCOMPLETE_SETTINGS, settings);
return true;
}
getPolling() {
- return this.storage.get('console_polling', DEFAULT_SETTINGS.polling);
+ return this.storage.get(SettingKeys.CONSOLE_POLLING, DEFAULT_SETTINGS.polling);
}
setPolling(polling: boolean) {
- this.storage.set('console_polling', polling);
+ this.storage.set(SettingKeys.CONSOLE_POLLING, polling);
return true;
}
- setHistoryDisabled(disable: boolean) {
- this.storage.set('disable_history', disable);
+ setIsHistoryDisabled(isDisabled: boolean) {
+ this.storage.set(SettingKeys.IS_HISTORY_DISABLED, isDisabled);
return true;
}
- getHistoryDisabled() {
- return this.storage.get('disable_history', DEFAULT_SETTINGS.historyDisabled);
+ getIsHistoryDisabled() {
+ return this.storage.get(SettingKeys.IS_HISTORY_DISABLED, DEFAULT_SETTINGS.isHistoryDisabled);
}
setPollInterval(interval: number) {
- this.storage.set('poll_interval', interval);
+ this.storage.set(SettingKeys.POLL_INTERVAL, interval);
}
getPollInterval() {
- return this.storage.get('poll_interval', DEFAULT_SETTINGS.pollInterval);
+ return this.storage.get(SettingKeys.POLL_INTERVAL, DEFAULT_SETTINGS.pollInterval);
+ }
+
+ setIsKeyboardShortcutsDisabled(disable: boolean) {
+ this.storage.set(SettingKeys.IS_KEYBOARD_SHORTCUTS_DISABLED, disable);
+ return true;
+ }
+
+ getIsKeyboardShortcutsDisabled() {
+ return this.storage.get(
+ SettingKeys.IS_KEYBOARD_SHORTCUTS_DISABLED,
+ DEFAULT_SETTINGS.isKeyboardShortcutsDisabled
+ );
}
toJSON(): DevToolsSettings {
@@ -106,7 +131,8 @@ export class Settings {
fontSize: parseFloat(this.getFontSize()),
polling: Boolean(this.getPolling()),
pollInterval: this.getPollInterval(),
- historyDisabled: Boolean(this.getHistoryDisabled()),
+ isHistoryDisabled: Boolean(this.getIsHistoryDisabled()),
+ isKeyboardShortcutsDisabled: Boolean(this.getIsKeyboardShortcutsDisabled()),
};
}
@@ -117,7 +143,8 @@ export class Settings {
autocomplete,
polling,
pollInterval,
- historyDisabled,
+ isHistoryDisabled,
+ isKeyboardShortcutsDisabled,
}: DevToolsSettings) {
this.setFontSize(fontSize);
this.setWrapMode(wrapMode);
@@ -125,7 +152,8 @@ export class Settings {
this.setAutocomplete(autocomplete);
this.setPolling(polling);
this.setPollInterval(pollInterval);
- this.setHistoryDisabled(historyDisabled);
+ this.setIsHistoryDisabled(isHistoryDisabled);
+ this.setIsKeyboardShortcutsDisabled(isKeyboardShortcutsDisabled);
}
}
diff --git a/src/plugins/console/public/types/core_editor.ts b/src/plugins/console/public/types/core_editor.ts
index cc344d6bcc881..db8010afe762b 100644
--- a/src/plugins/console/public/types/core_editor.ts
+++ b/src/plugins/console/public/types/core_editor.ts
@@ -6,6 +6,7 @@
* Side Public License, v 1.
*/
+import type { Editor } from 'brace';
import { TokensProvider } from './tokens_provider';
import { Token } from './token';
@@ -252,10 +253,15 @@ export interface CoreEditor {
*/
registerKeyboardShortcut(opts: {
keys: string | { win?: string; mac?: string };
- fn: () => void;
+ fn: (editor: Editor) => void;
name: string;
}): void;
+ /**
+ * Unregister a keyboard shortcut and provide a command name
+ */
+ unregisterKeyboardShortcut(command: string): void;
+
/**
* Register a completions function that will be called when the editor
* detects a change
diff --git a/src/plugins/console/server/services/es_legacy_config_service.ts b/src/plugins/console/server/services/es_legacy_config_service.ts
index ba13c63e8f95b..f599398c2c34a 100644
--- a/src/plugins/console/server/services/es_legacy_config_service.ts
+++ b/src/plugins/console/server/services/es_legacy_config_service.ts
@@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
-import { Observable, Subscription } from 'rxjs';
-import { first } from 'rxjs/operators';
+import { firstValueFrom, Observable, Subscription } from 'rxjs';
import { ElasticsearchConfig } from 'kibana/server';
export class EsLegacyConfigService {
@@ -45,7 +44,7 @@ export class EsLegacyConfigService {
}
if (!this.config) {
- return this.config$.pipe(first()).toPromise();
+ return firstValueFrom(this.config$);
}
return this.config;
diff --git a/src/plugins/controls/public/control_group/embeddable/control_group_chaining_system.ts b/src/plugins/controls/public/control_group/embeddable/control_group_chaining_system.ts
index 6f0f3e1a23218..263343e299a9c 100644
--- a/src/plugins/controls/public/control_group/embeddable/control_group_chaining_system.ts
+++ b/src/plugins/controls/public/control_group/embeddable/control_group_chaining_system.ts
@@ -59,7 +59,7 @@ export const ControlGroupChainingSystems: {
onChildChange: ({ childOutputChangedId, childOrder, recalculateFilters$, getChild }) => {
if (childOutputChangedId === childOrder.lastChildId) {
// the last control's output has updated, recalculate filters
- recalculateFilters$.next();
+ recalculateFilters$.next(null);
return;
}
@@ -75,6 +75,6 @@ export const ControlGroupChainingSystems: {
NONE: {
getContainerSettings: () => undefined,
getPrecedingFilters: () => undefined,
- onChildChange: ({ recalculateFilters$ }) => recalculateFilters$.next(),
+ onChildChange: ({ recalculateFilters$ }) => recalculateFilters$.next(null),
},
};
diff --git a/src/plugins/controls/public/control_types/time_slider/time_slider_embeddable.tsx b/src/plugins/controls/public/control_types/time_slider/time_slider_embeddable.tsx
index d6507c10b2d6f..fcc8b6652f992 100644
--- a/src/plugins/controls/public/control_types/time_slider/time_slider_embeddable.tsx
+++ b/src/plugins/controls/public/control_types/time_slider/time_slider_embeddable.tsx
@@ -151,7 +151,7 @@ export class TimeSliderControlEmbeddable extends Embeddable<
const min = value ? value[0] : null;
const max = value ? value[1] : null;
const hasRange =
- this.componentState.range!.max !== undefined && this.componentState.range!.min !== undefined;
+ this.componentState.range?.max !== undefined && this.componentState.range?.min !== undefined;
this.getCurrentDataView$().subscribe((dataView) => {
const range: RangeFilterParams = {};
diff --git a/src/plugins/dashboard/public/application/hooks/use_dashboard_app_state.ts b/src/plugins/dashboard/public/application/hooks/use_dashboard_app_state.ts
index e0ce89f268c2a..50c40e4863bee 100644
--- a/src/plugins/dashboard/public/application/hooks/use_dashboard_app_state.ts
+++ b/src/plugins/dashboard/public/application/hooks/use_dashboard_app_state.ts
@@ -308,7 +308,7 @@ export const useDashboardAppState = ({
* the last saved state on save.
*/
setLastSavedState(savedDashboardState);
- dashboardBuildContext.$checkForUnsavedChanges.next();
+ dashboardBuildContext.$checkForUnsavedChanges.next(undefined);
const updateLastSavedState = () => {
setLastSavedState(
savedObjectToDashboardState({
diff --git a/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts b/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts
index 541724549011e..8bf2f0881f4f4 100644
--- a/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts
+++ b/src/plugins/dashboard/public/application/lib/sync_dashboard_container_input.ts
@@ -60,7 +60,7 @@ export const syncDashboardContainerInput = (
.getInput$()
.subscribe(() => applyContainerChangesToState(syncDashboardContainerProps))
);
- subscriptions.add($onDashboardStateChange.subscribe(() => $triggerDashboardRefresh.next()));
+ subscriptions.add($onDashboardStateChange.subscribe(() => $triggerDashboardRefresh.next({})));
subscriptions.add(
getSessionURLObservable(history).subscribe(() => {
$triggerDashboardRefresh.next({ force: true });
diff --git a/src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts b/src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts
index d187ee207b2fe..ff64f4672922c 100644
--- a/src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts
+++ b/src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts
@@ -103,13 +103,14 @@ export const syncDashboardFilterState = ({
.subscribe(() => applyFilters(queryString.getQuery(), filterManager.getFilters()));
const timeRefreshSubscription = merge(
- ...[timefilterService.getRefreshIntervalUpdate$(), timefilterService.getTimeUpdate$()]
+ timefilterService.getRefreshIntervalUpdate$(),
+ timefilterService.getTimeUpdate$()
).subscribe(() => {
- $triggerDashboardRefresh.next();
+ $triggerDashboardRefresh.next({});
// manually check for unsaved changes here because the time range is not stored on the dashboardState,
// but it could trigger the unsaved changes badge.
- $checkForUnsavedChanges.next();
+ $checkForUnsavedChanges.next(undefined);
});
const forceRefreshSubscription = timefilterService
diff --git a/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap b/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap
index 598254ad2173f..d4513837efa11 100644
--- a/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap
+++ b/src/plugins/dashboard/public/application/listing/__snapshots__/dashboard_listing.test.tsx.snap
@@ -22,6 +22,37 @@ exports[`after fetch When given a title that matches multiple dashboards, filter
title="search by title"
>
{
expect(getFormat).toHaveBeenCalledTimes(3);
});
+ test('date_range does not crash on empty value', () => {
+ const mapping = { id: 'date_range', params: {} };
+ const format = getAggFormat(mapping, getFormat);
+
+ expect(format.convert(undefined)).toBe('');
+ });
+
test('creates custom format for ip_range', () => {
const mapping = { id: 'ip_range', params: {} };
const format = getAggFormat(mapping, getFormat);
@@ -62,6 +69,13 @@ describe('getAggsFormats', () => {
expect(getFormat).toHaveBeenCalledTimes(4);
});
+ test('ip_range does not crash on empty value', () => {
+ const mapping = { id: 'ip_range', params: {} };
+ const format = getAggFormat(mapping, getFormat);
+
+ expect(format.convert(undefined)).toBe('');
+ });
+
test('creates custom format for range', () => {
const mapping = { id: 'range', params: {} };
const format = getAggFormat(mapping, getFormat);
@@ -70,6 +84,13 @@ describe('getAggsFormats', () => {
expect(getFormat).toHaveBeenCalledTimes(1);
});
+ test('range does not crash on empty value', () => {
+ const mapping = { id: 'range', params: {} };
+ const format = getAggFormat(mapping, getFormat);
+
+ expect(format.convert(undefined)).toBe('');
+ });
+
test('creates alternative format for range using the template parameter', () => {
const mapping = { id: 'range', params: { template: 'arrow_right' } };
const format = getAggFormat(mapping, getFormat);
diff --git a/src/plugins/data/common/search/aggs/utils/get_aggs_formats.ts b/src/plugins/data/common/search/aggs/utils/get_aggs_formats.ts
index 876d7673b87a6..2233c9338cd58 100644
--- a/src/plugins/data/common/search/aggs/utils/get_aggs_formats.ts
+++ b/src/plugins/data/common/search/aggs/utils/get_aggs_formats.ts
@@ -44,6 +44,10 @@ export function getAggsFormats(getFieldFormat: GetFieldFormat): FieldFormatInsta
textConvert = (range: any) => {
const params = this._params;
+ if (range == null) {
+ return '';
+ }
+
if (range.label) {
return range.label;
}
@@ -90,6 +94,10 @@ export function getAggsFormats(getFieldFormat: GetFieldFormat): FieldFormatInsta
static hidden = true;
textConvert = (range: DateRange) => {
+ if (range == null) {
+ return '';
+ }
+
const nestedFormatter = this._params as SerializedFieldFormat;
const format = getFieldFormat({
id: nestedFormatter.id,
@@ -103,6 +111,10 @@ export function getAggsFormats(getFieldFormat: GetFieldFormat): FieldFormatInsta
static hidden = true;
textConvert = (range: IpRangeKey) => {
+ if (range == null) {
+ return '';
+ }
+
const nestedFormatter = this._params as SerializedFieldFormat;
const format = getFieldFormat({
id: nestedFormatter.id,
diff --git a/src/plugins/data/common/search/expressions/eql.ts b/src/plugins/data/common/search/expressions/eql.ts
index b7a8c47985601..cef099ca447c0 100644
--- a/src/plugins/data/common/search/expressions/eql.ts
+++ b/src/plugins/data/common/search/expressions/eql.ts
@@ -11,6 +11,7 @@ import { buildEsQuery } from '@kbn/es-query';
import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common';
import { EqlSearchRequest } from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
+import { lastValueFrom } from 'rxjs';
import { RequestStatistics, RequestAdapter } from '../../../../inspector/common';
import {
ISearchGeneric,
@@ -143,15 +144,17 @@ export const getEqlFn = ({
});
try {
- const response = await search(
- {
- params: {
- index: args.index,
- body: dsl,
+ const response = await lastValueFrom(
+ search(
+ {
+ params: {
+ index: args.index,
+ body: dsl,
+ },
},
- },
- { abortSignal, strategy: EQL_SEARCH_STRATEGY }
- ).toPromise();
+ { abortSignal, strategy: EQL_SEARCH_STRATEGY }
+ )
+ );
const stats: RequestStatistics = {};
diff --git a/src/plugins/data/common/search/expressions/esdsl.ts b/src/plugins/data/common/search/expressions/esdsl.ts
index 69e3c54e43806..fbf8add29bb93 100644
--- a/src/plugins/data/common/search/expressions/esdsl.ts
+++ b/src/plugins/data/common/search/expressions/esdsl.ts
@@ -10,6 +10,7 @@ import { i18n } from '@kbn/i18n';
import { buildEsQuery } from '@kbn/es-query';
import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common';
+import { lastValueFrom } from 'rxjs';
import { EsRawResponse } from './es_raw_response';
import { RequestStatistics, RequestAdapter } from '../../../../inspector/common';
import { ISearchGeneric, KibanaContext } from '..';
@@ -125,16 +126,18 @@ export const getEsdslFn = ({
});
try {
- const { rawResponse } = await search(
- {
- params: {
- index: args.index,
- size: args.size,
- body: dsl,
+ const { rawResponse } = await lastValueFrom(
+ search(
+ {
+ params: {
+ index: args.index,
+ size: args.size,
+ body: dsl,
+ },
},
- },
- { abortSignal }
- ).toPromise();
+ { abortSignal }
+ )
+ );
const stats: RequestStatistics = {};
diff --git a/src/plugins/data/common/search/search_source/search_source.test.ts b/src/plugins/data/common/search/search_source/search_source.test.ts
index 87e249acab8b1..4c8ac7b46d867 100644
--- a/src/plugins/data/common/search/search_source/search_source.test.ts
+++ b/src/plugins/data/common/search/search_source/search_source.test.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { of, throwError } from 'rxjs';
+import { lastValueFrom, of, throwError } from 'rxjs';
import { IndexPattern } from '../..';
import { SearchSource, SearchSourceDependencies, SortDirection } from './';
import { AggConfigs, AggTypesRegistryStart } from '../../';
@@ -1240,7 +1240,7 @@ describe('SearchSource', () => {
const fetch$ = searchSource.fetch$({});
fetch$.subscribe(fetchSub);
- const resp = await fetch$.toPromise();
+ const resp = await lastValueFrom(fetch$);
expect(fetchSub.next).toHaveBeenCalledTimes(3);
expect(fetchSub.complete).toHaveBeenCalledTimes(1);
diff --git a/src/plugins/data/common/search/search_source/search_source.ts b/src/plugins/data/common/search/search_source/search_source.ts
index 8acdb0514cccb..1115eff507154 100644
--- a/src/plugins/data/common/search/search_source/search_source.ts
+++ b/src/plugins/data/common/search/search_source/search_source.ts
@@ -70,7 +70,7 @@ import {
switchMap,
tap,
} from 'rxjs/operators';
-import { defer, EMPTY, from, Observable } from 'rxjs';
+import { defer, EMPTY, from, lastValueFrom, Observable } from 'rxjs';
import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import { buildEsQuery, Filter } from '@kbn/es-query';
import { normalizeSortRequest } from './normalize_sort_request';
@@ -325,11 +325,9 @@ export class SearchSource {
* @removeBy 8.1
*/
fetch(options: ISearchOptions = {}) {
- return this.fetch$(options)
- .toPromise()
- .then((r) => {
- return r.rawResponse as estypes.SearchResponse;
- });
+ return lastValueFrom(this.fetch$(options)).then((r) => {
+ return r.rawResponse as estypes.SearchResponse;
+ });
}
/**
diff --git a/src/plugins/data/public/query/filter_manager/lib/get_display_value.ts b/src/plugins/data/public/query/filter_manager/lib/get_display_value.ts
index 1ccfaacb24e4b..d38c1d6375d8c 100644
--- a/src/plugins/data/public/query/filter_manager/lib/get_display_value.ts
+++ b/src/plugins/data/public/query/filter_manager/lib/get_display_value.ts
@@ -7,15 +7,16 @@
*/
import { i18n } from '@kbn/i18n';
-import { Filter, IIndexPattern } from '../../../../common';
+import { Filter } from '../../../../common';
+import { DataView, DataViewField } from '../../../../../data_views/public';
import { getIndexPatternFromFilter } from './get_index_pattern_from_filter';
-function getValueFormatter(indexPattern?: IIndexPattern, key?: string) {
+function getValueFormatter(indexPattern?: DataView, key?: string) {
// checking getFormatterForField exists because there is at least once case where an index pattern
// is an object rather than an IndexPattern class
if (!indexPattern || !indexPattern.getFormatterForField || !key) return;
- const field = indexPattern.fields.find((f) => f.name === key);
+ const field = indexPattern.fields.find((f: DataViewField) => f.name === key);
if (!field) {
throw new Error(
i18n.translate('data.filter.filterBar.fieldNotFound', {
@@ -27,7 +28,7 @@ function getValueFormatter(indexPattern?: IIndexPattern, key?: string) {
return indexPattern.getFormatterForField(field);
}
-export function getDisplayValueFromFilter(filter: Filter, indexPatterns: IIndexPattern[]): string {
+export function getDisplayValueFromFilter(filter: Filter, indexPatterns: DataView[]): string {
const { key, value } = filter.meta;
if (typeof value === 'function') {
const indexPattern = getIndexPatternFromFilter(filter, indexPatterns);
diff --git a/src/plugins/data/public/query/filter_manager/lib/get_index_pattern_from_filter.ts b/src/plugins/data/public/query/filter_manager/lib/get_index_pattern_from_filter.ts
index 7a2ce29102e51..d4951ebc6efc2 100644
--- a/src/plugins/data/public/query/filter_manager/lib/get_index_pattern_from_filter.ts
+++ b/src/plugins/data/public/query/filter_manager/lib/get_index_pattern_from_filter.ts
@@ -6,11 +6,12 @@
* Side Public License, v 1.
*/
-import { Filter, IIndexPattern } from '../../../../common';
+import { Filter } from '../../../../common';
+import { DataView } from '../../../../../data_views/public';
export function getIndexPatternFromFilter(
filter: Filter,
- indexPatterns: IIndexPattern[]
-): IIndexPattern | undefined {
+ indexPatterns: DataView[]
+): DataView | undefined {
return indexPatterns.find((indexPattern) => indexPattern.id === filter.meta.index);
}
diff --git a/src/plugins/data/public/query/timefilter/timefilter.ts b/src/plugins/data/public/query/timefilter/timefilter.ts
index b81a95618b815..d4ceb83940d27 100644
--- a/src/plugins/data/public/query/timefilter/timefilter.ts
+++ b/src/plugins/data/public/query/timefilter/timefilter.ts
@@ -32,10 +32,10 @@ export class Timefilter {
// Fired when isTimeRangeSelectorEnabled \ isAutoRefreshSelectorEnabled are toggled
private enabledUpdated$ = new BehaviorSubject(false);
// Fired when a user changes the timerange
- private timeUpdate$ = new Subject();
+ private timeUpdate$ = new Subject();
// Fired when a user changes the the autorefresh settings
- private refreshIntervalUpdate$ = new Subject();
- private fetch$ = new Subject();
+ private refreshIntervalUpdate$ = new Subject();
+ private fetch$ = new Subject();
private _time: TimeRange;
// Denotes whether setTime has been called, can be used to determine if the constructor defaults are being used.
diff --git a/src/plugins/data/public/query/timefilter/timefilter_service.mock.ts b/src/plugins/data/public/query/timefilter/timefilter_service.mock.ts
index ec5caae031498..6a16924a0f20b 100644
--- a/src/plugins/data/public/query/timefilter/timefilter_service.mock.ts
+++ b/src/plugins/data/public/query/timefilter/timefilter_service.mock.ts
@@ -23,7 +23,7 @@ const createSetupContractMock = () => {
getTimeUpdate$: jest.fn(),
getRefreshIntervalUpdate$: jest.fn(),
getAutoRefreshFetch$: jest.fn(() => new Observable<() => void>()),
- getFetch$: jest.fn(() => new Observable<() => void>()),
+ getFetch$: jest.fn().mockImplementation(() => new Observable<() => void>()),
getTime: jest.fn(),
setTime: jest.fn(),
setRefreshInterval: jest.fn(),
diff --git a/src/plugins/data/public/search/session/session_helpers.test.ts b/src/plugins/data/public/search/session/session_helpers.test.ts
index 5b64e7b554d18..fdebe4bce7586 100644
--- a/src/plugins/data/public/search/session/session_helpers.test.ts
+++ b/src/plugins/data/public/search/session/session_helpers.test.ts
@@ -9,6 +9,7 @@
import { waitUntilNextSessionCompletes$ } from './session_helpers';
import { ISessionService, SessionService } from './session_service';
import { BehaviorSubject } from 'rxjs';
+import { fakeSchedulers } from 'rxjs-marbles/jest';
import { SearchSessionState } from './search_session_state';
import { NowProviderInternalContract } from '../../now_provider';
import { coreMock } from '../../../../../core/public/mocks';
@@ -62,27 +63,30 @@ describe('waitUntilNextSessionCompletes$', () => {
afterEach(() => {
jest.useRealTimers();
});
- test('emits when next session starts', () => {
- sessionService.start();
- let untrackSearch = sessionService.trackSearch({ abort: () => {} });
- untrackSearch();
+ test(
+ 'emits when next session starts',
+ fakeSchedulers((advance) => {
+ sessionService.start();
+ let untrackSearch = sessionService.trackSearch({ abort: () => {} });
+ untrackSearch();
- const next = jest.fn();
- const complete = jest.fn();
- waitUntilNextSessionCompletes$(sessionService).subscribe({ next, complete });
- expect(next).not.toBeCalled();
+ const next = jest.fn();
+ const complete = jest.fn();
+ waitUntilNextSessionCompletes$(sessionService).subscribe({ next, complete });
+ expect(next).not.toBeCalled();
- sessionService.start();
- expect(next).not.toBeCalled();
+ sessionService.start();
+ expect(next).not.toBeCalled();
- untrackSearch = sessionService.trackSearch({ abort: () => {} });
- untrackSearch();
+ untrackSearch = sessionService.trackSearch({ abort: () => {} });
+ untrackSearch();
- expect(next).not.toBeCalled();
- jest.advanceTimersByTime(500);
- expect(next).not.toBeCalled();
- jest.advanceTimersByTime(1000);
- expect(next).toBeCalledTimes(1);
- expect(complete).toBeCalled();
- });
+ expect(next).not.toBeCalled();
+ advance(500);
+ expect(next).not.toBeCalled();
+ advance(1000);
+ expect(next).toBeCalledTimes(1);
+ expect(complete).toBeCalled();
+ })
+ );
});
diff --git a/src/plugins/data/server/autocomplete/value_suggestions_route.ts b/src/plugins/data/server/autocomplete/value_suggestions_route.ts
index de76183da3be3..302abae2bdc84 100644
--- a/src/plugins/data/server/autocomplete/value_suggestions_route.ts
+++ b/src/plugins/data/server/autocomplete/value_suggestions_route.ts
@@ -8,8 +8,7 @@
import { schema } from '@kbn/config-schema';
import { IRouter } from 'kibana/server';
-import { Observable } from 'rxjs';
-import { first } from 'rxjs/operators';
+import { firstValueFrom, Observable } from 'rxjs';
import { getRequestAbortedSignal } from '../lib';
import { getKbnServerError, reportServerError } from '../../../kibana_utils/server';
import type { ConfigSchema } from '../../config';
@@ -42,7 +41,7 @@ export function registerValueSuggestionsRoute(router: IRouter, config$: Observab
},
},
async (context, request, response) => {
- const config = await config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(config$);
const { field: fieldName, query, filters, fieldMeta, method } = request.body;
const { index } = request.params;
const abortSignal = getRequestAbortedSignal(request.events.aborted$);
diff --git a/src/plugins/data/server/search/routes/bsearch.ts b/src/plugins/data/server/search/routes/bsearch.ts
index 25b1bd0d7009d..649a86591d0a1 100644
--- a/src/plugins/data/server/search/routes/bsearch.ts
+++ b/src/plugins/data/server/search/routes/bsearch.ts
@@ -6,7 +6,8 @@
* Side Public License, v 1.
*/
-import { catchError, first } from 'rxjs/operators';
+import { firstValueFrom } from 'rxjs';
+import { catchError } from 'rxjs/operators';
import { BfetchServerSetup } from 'src/plugins/bfetch/server';
import type { ExecutionContextSetup } from 'src/core/server';
import apm from 'elastic-apm-node';
@@ -37,10 +38,8 @@ export function registerBsearchRoute(
return executionContextService.withContext(executionContext, () => {
apm.addLabels(executionContextService.getAsLabels());
- return search
- .search(requestData, restOptions)
- .pipe(
- first(),
+ return firstValueFrom(
+ search.search(requestData, restOptions).pipe(
catchError((err) => {
// Re-throw as object, to get attributes passed to the client
// eslint-disable-next-line no-throw-literal
@@ -51,7 +50,7 @@ export function registerBsearchRoute(
};
})
)
- .toPromise();
+ );
});
},
};
diff --git a/src/plugins/data/server/search/search_service.test.ts b/src/plugins/data/server/search/search_service.test.ts
index f449018612cef..92487796d363b 100644
--- a/src/plugins/data/server/search/search_service.test.ts
+++ b/src/plugins/data/server/search/search_service.test.ts
@@ -16,7 +16,7 @@ import { createIndexPatternsStartMock } from '../data_views/mocks';
import { SearchService, SearchServiceSetupDependencies } from './search_service';
import { bfetchPluginMock } from '../../../bfetch/server/mocks';
-import { of } from 'rxjs';
+import { lastValueFrom, of } from 'rxjs';
import type {
IEsSearchRequest,
IEsSearchResponse,
@@ -182,7 +182,7 @@ describe('Search service', () => {
throw new NoSearchIdInSessionError();
});
- const res = await mockScopedClient.search(searchRequest, options).toPromise();
+ const res = await lastValueFrom(mockScopedClient.search(searchRequest, options));
const [request, callOptions] = mockStrategy.search.mock.calls[0];
expect(callOptions).toBe(options);
diff --git a/src/plugins/data/server/search/search_service.ts b/src/plugins/data/server/search/search_service.ts
index 7c01fefc92d65..9841263f74542 100644
--- a/src/plugins/data/server/search/search_service.ts
+++ b/src/plugins/data/server/search/search_service.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { from, Observable, throwError } from 'rxjs';
+import { firstValueFrom, from, Observable, throwError } from 'rxjs';
import { pick } from 'lodash';
import moment from 'moment';
import {
@@ -19,7 +19,7 @@ import {
SharedGlobalConfig,
StartServicesAccessor,
} from 'src/core/server';
-import { first, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';
+import { map, switchMap, tap, withLatestFrom } from 'rxjs/operators';
import { BfetchServerSetup } from 'src/plugins/bfetch/server';
import { ExpressionsServerSetup } from 'src/plugins/expressions/server';
import type {
@@ -221,16 +221,12 @@ export class SearchService implements Plugin {
const aggs = this.aggsService.setup({ registerFunction: expressions.registerFunction });
- this.initializerContext.config
- .create()
- .pipe(first())
- .toPromise()
- .then((value) => {
- if (value.search.aggs.shardDelay.enabled) {
- aggs.types.registerBucket(SHARD_DELAY_AGG_NAME, getShardDelayBucketAgg);
- expressions.registerFunction(aggShardDelay);
- }
- });
+ firstValueFrom(this.initializerContext.config.create()).then((value) => {
+ if (value.search.aggs.shardDelay.enabled) {
+ aggs.types.registerBucket(SHARD_DELAY_AGG_NAME, getShardDelayBucketAgg);
+ expressions.registerFunction(aggShardDelay);
+ }
+ });
return {
__enhance: (enhancements: SearchEnhancements) => {
diff --git a/src/plugins/data/server/search/strategies/es_search/es_search_strategy.ts b/src/plugins/data/server/search/strategies/es_search/es_search_strategy.ts
index 5fd734138824d..de59402c2c19c 100644
--- a/src/plugins/data/server/search/strategies/es_search/es_search_strategy.ts
+++ b/src/plugins/data/server/search/strategies/es_search/es_search_strategy.ts
@@ -6,8 +6,8 @@
* Side Public License, v 1.
*/
-import { from, Observable } from 'rxjs';
-import { first, tap } from 'rxjs/operators';
+import { firstValueFrom, from, Observable } from 'rxjs';
+import { tap } from 'rxjs/operators';
import type { Logger, SharedGlobalConfig } from 'kibana/server';
import type { ISearchStrategy } from '../../types';
import type { SearchUsage } from '../../collectors';
@@ -37,7 +37,7 @@ export const esSearchStrategyProvider = (
const search = async () => {
try {
- const config = await config$.pipe(first()).toPromise();
+ const config = await firstValueFrom(config$);
// @ts-expect-error params fall back to any, but should be valid SearchRequest params
const { terminateAfter, ...requestParams } = request.params ?? {};
const params = {
diff --git a/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts b/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts
index 7a9caa4998f9a..34cc98131fb48 100644
--- a/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts
+++ b/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts
@@ -8,9 +8,9 @@
import type { Observable } from 'rxjs';
import type { IScopedClusterClient, Logger, SharedGlobalConfig } from 'kibana/server';
-import { catchError, first, tap } from 'rxjs/operators';
+import { catchError, tap } from 'rxjs/operators';
import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
-import { from } from 'rxjs';
+import { firstValueFrom, from } from 'rxjs';
import type { ISearchStrategy, SearchStrategyDependencies } from '../../types';
import type {
IAsyncSearchOptions,
@@ -107,7 +107,7 @@ export const enhancedEsSearchStrategyProvider = (
{ esClient, uiSettingsClient }: SearchStrategyDependencies
): Promise {
const client = useInternalUser ? esClient.asInternalUser : esClient.asCurrentUser;
- const legacyConfig = await legacyConfig$.pipe(first()).toPromise();
+ const legacyConfig = await firstValueFrom(legacyConfig$);
const { body, index, ...params } = request.params!;
const method = 'POST';
const path = encodeURI(`/${index}/_rollup_search`);
diff --git a/src/plugins/data_view_field_editor/__jest__/client_integration/helpers/setup_environment.tsx b/src/plugins/data_view_field_editor/__jest__/client_integration/helpers/setup_environment.tsx
index 02d4f713871a3..ce0fb1b3a915f 100644
--- a/src/plugins/data_view_field_editor/__jest__/client_integration/helpers/setup_environment.tsx
+++ b/src/plugins/data_view_field_editor/__jest__/client_integration/helpers/setup_environment.tsx
@@ -12,6 +12,7 @@ import './jest.mocks';
import React, { FunctionComponent } from 'react';
import { merge } from 'lodash';
+import { defer } from 'rxjs';
import { notificationServiceMock, uiSettingsServiceMock } from '../../../../../core/public/mocks';
import { dataPluginMock } from '../../../../data/public/mocks';
import { FieldEditorProvider, Context } from '../../../public/components/field_editor_context';
@@ -36,22 +37,20 @@ export const setSearchResponseLatency = (ms: number) => {
};
spySearchQuery.mockImplementation(() => {
- return {
- toPromise: () => {
- if (searchResponseDelay === 0) {
- // no delay, it is synchronous
- return spySearchQueryResponse();
- }
-
- return new Promise((resolve) => {
- setTimeout(() => {
- resolve(undefined);
- }, searchResponseDelay);
- }).then(() => {
- return spySearchQueryResponse();
- });
- },
- };
+ return defer(() => {
+ if (searchResponseDelay === 0) {
+ // no delay, it is synchronous
+ return spySearchQueryResponse();
+ }
+
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ resolve(undefined);
+ }, searchResponseDelay);
+ }).then(() => {
+ return spySearchQueryResponse();
+ });
+ });
});
search.search = spySearchQuery;
diff --git a/src/plugins/data_view_field_editor/public/components/field_editor/form_fields/script_field.tsx b/src/plugins/data_view_field_editor/public/components/field_editor/form_fields/script_field.tsx
index c5eaeb02c05cf..a7cd508401c6c 100644
--- a/src/plugins/data_view_field_editor/public/components/field_editor/form_fields/script_field.tsx
+++ b/src/plugins/data_view_field_editor/public/components/field_editor/form_fields/script_field.tsx
@@ -7,13 +7,12 @@
*/
import React, { useState, useEffect, useMemo, useRef, useCallback } from 'react';
-import { first } from 'rxjs/operators';
+import { first, firstValueFrom } from 'rxjs';
import type { Subscription } from 'rxjs';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { EuiFormRow, EuiLink, EuiCode } from '@elastic/eui';
import { PainlessLang, PainlessContext, monaco } from '@kbn/monaco';
-import { firstValueFrom } from '@kbn/std';
import {
UseField,
diff --git a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/url/__snapshots__/url.test.tsx.snap b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/url/__snapshots__/url.test.tsx.snap
index c37e1d28dab4c..a90cf78b4f46f 100644
--- a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/url/__snapshots__/url.test.tsx.snap
+++ b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/url/__snapshots__/url.test.tsx.snap
@@ -29,7 +29,7 @@ exports[`UrlFormatEditor should render normally 1`] = `
class="euiFormControlLayout__childrenWrapper"
>
diff --git a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx
index b6ee4133f1f75..088b89b682ca1 100644
--- a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx
+++ b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx
@@ -307,7 +307,7 @@ export function DiscoverLayout({
/>
)}
{resultState === 'uninitialized' && (
- savedSearchRefetch$.next()} />
+ savedSearchRefetch$.next(undefined)} />
)}
{resultState === 'loading' && }
{resultState === 'ready' && (
diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_field.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_field.tsx
index e629c85c6d242..e14d9f7a0e5a7 100644
--- a/src/plugins/discover/public/application/main/components/sidebar/discover_field.tsx
+++ b/src/plugins/discover/public/application/main/components/sidebar/discover_field.tsx
@@ -25,6 +25,7 @@ import { i18n } from '@kbn/i18n';
import { UiCounterMetricType } from '@kbn/analytics';
import classNames from 'classnames';
import { FieldButton, FieldIcon } from '@kbn/react-field';
+import { getTypeForFieldIcon } from '../../../../utils/get_type_for_field_icon';
import { DiscoverFieldDetails } from './discover_field_details';
import { FieldDetails } from './types';
import type { DataViewField, DataView } from '../../../../../../data_views/public';
@@ -59,9 +60,10 @@ const FieldInfoIcon: React.FC = memo(() => (
));
const DiscoverFieldTypeIcon: React.FC<{ field: DataViewField }> = memo(({ field }) => {
- // If it's a string type, we want to distinguish between keyword and text
- const tempType = field.type === 'string' && field.esTypes ? field.esTypes[0] : field.type;
- return ;
+ const typeForIcon = getTypeForFieldIcon(field);
+ return (
+
+ );
});
const FieldName: React.FC<{ field: DataViewField }> = memo(({ field }) => {
diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.scss b/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.scss
index 4b620f2073771..59b6e49b0fe0e 100644
--- a/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.scss
+++ b/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.scss
@@ -2,6 +2,14 @@
padding: $euiSizeM;
}
-.dscFieldSearch__filterWrapper {
- width: 100%;
+.dscFieldTypesHelp__popover {
+ flex-grow: 0;
+ min-width: 0 !important; // Reduce width of icon-only button
}
+
+.dscFieldTypesHelp__panel {
+ width: $euiSize * 22;
+ @include euiBreakpoint('xs', 's') {
+ width: $euiSize * 20;
+ }
+}
\ No newline at end of file
diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.test.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.test.tsx
index 40474f3e4fc1d..454f8620d7b08 100644
--- a/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.test.tsx
+++ b/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.test.tsx
@@ -13,17 +13,25 @@ import { findTestSubject } from '@elastic/eui/lib/test';
import { DiscoverFieldSearch, Props } from './discover_field_search';
import { EuiButtonGroupProps, EuiPopover } from '@elastic/eui';
import { ReactWrapper } from 'enzyme';
+import { KibanaContextProvider } from '../../../../../../kibana_react/public';
describe('DiscoverFieldSearch', () => {
const defaultProps = {
onChange: jest.fn(),
value: 'test',
types: ['any', 'string', '_source'],
+ presentFieldTypes: ['string', 'date', 'boolean', 'number'],
};
function mountComponent(props?: Props) {
const compProps = props || defaultProps;
- return mountWithIntl( );
+ return mountWithIntl(
+
+
+
+ );
}
function findButtonGroup(component: ReactWrapper, id: string) {
@@ -131,9 +139,25 @@ describe('DiscoverFieldSearch', () => {
const btn = findTestSubject(component, 'toggleFieldFilterButton');
btn.simulate('click');
let popover = component.find(EuiPopover);
- expect(popover.prop('isOpen')).toBe(true);
+ expect(popover.get(0).props.isOpen).toBe(true);
btn.simulate('click');
popover = component.find(EuiPopover);
- expect(popover.prop('isOpen')).toBe(false);
+ expect(popover.get(0).props.isOpen).toBe(false);
+ });
+
+ test('click help button should open popover with types of field docs', () => {
+ const component = mountComponent();
+
+ const btn = findTestSubject(component, 'fieldTypesHelpButton');
+ btn.simulate('click');
+ let popover = component.find(EuiPopover);
+ expect(popover.get(1).props.isOpen).toBe(true);
+
+ const rows = component.find('.euiTableRow');
+ expect(rows.length).toBe(4);
+
+ btn.simulate('click');
+ popover = component.find(EuiPopover);
+ expect(popover.get(1).props.isOpen).toBe(false);
});
});
diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.tsx
index 67282ea2667ed..f79e45059e87e 100644
--- a/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.tsx
+++ b/src/plugins/discover/public/application/main/components/sidebar/discover_field_search.tsx
@@ -8,9 +8,10 @@
import './discover_field_search.scss';
-import React, { OptionHTMLAttributes, ReactNode, useState } from 'react';
+import React, { OptionHTMLAttributes, ReactNode, useMemo, useState } from 'react';
import { i18n } from '@kbn/i18n';
import {
+ EuiBasicTable,
EuiFieldSearch,
EuiFilterGroup,
EuiFlexGroup,
@@ -24,11 +25,18 @@ import {
EuiForm,
EuiFormRow,
EuiButtonGroup,
- EuiOutsideClickDetector,
EuiFilterButton,
EuiSpacer,
+ EuiIcon,
+ EuiBasicTableColumn,
+ EuiLink,
+ EuiText,
+ EuiPanel,
} from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n-react';
+import { FieldIcon } from '@kbn/react-field';
+import { GetFieldTypeDescription } from './lib/get_field_type_description';
+import { useDiscoverServices } from '../../../../utils/use_discover_services';
export interface State {
searchable: string;
@@ -43,23 +51,31 @@ export interface Props {
* triggered on input of user into search field
*/
onChange: (field: string, value: string | boolean | undefined) => void;
-
+ /**
+ * types for the type filter
+ */
+ types: string[];
+ /**
+ * types presented in current data view
+ */
+ presentFieldTypes: string[];
/**
* the input value of the user
*/
value?: string;
+}
- /**
- * types for the type filter
- */
- types: string[];
+interface FieldTypeTableItem {
+ id: number;
+ dataType: string;
+ description: string;
}
/**
* Component is Discover's side bar to search of available fields
* Additionally there's a button displayed that allows the user to show/hide more filter fields
*/
-export function DiscoverFieldSearch({ onChange, value, types }: Props) {
+export function DiscoverFieldSearch({ onChange, value, types, presentFieldTypes }: Props) {
const searchPlaceholder = i18n.translate('discover.fieldChooser.searchPlaceHolder', {
defaultMessage: 'Search field names',
});
@@ -80,6 +96,7 @@ export function DiscoverFieldSearch({ onChange, value, types }: Props) {
const [activeFiltersCount, setActiveFiltersCount] = useState(0);
const [isPopoverOpen, setPopoverOpen] = useState(false);
+ const [isHelpOpen, setIsHelpOpen] = useState(false);
const [values, setValues] = useState({
searchable: 'any',
aggregatable: 'any',
@@ -87,6 +104,43 @@ export function DiscoverFieldSearch({ onChange, value, types }: Props) {
missing: true,
});
+ const { docLinks } = useDiscoverServices();
+
+ const items: FieldTypeTableItem[] = useMemo(() => {
+ return presentFieldTypes
+ .sort((one, another) => one.localeCompare(another))
+ .map((element, index) => ({
+ id: index,
+ dataType: element,
+ description: GetFieldTypeDescription(element),
+ }));
+ }, [presentFieldTypes]);
+
+ const onHelpClick = () => setIsHelpOpen((prevIsHelpOpen) => !prevIsHelpOpen);
+ const closeHelp = () => setIsHelpOpen(false);
+
+ const columnsSidebar: Array> = [
+ {
+ field: 'dataType',
+ name: 'Data type',
+ width: '110px',
+ render: (name: string) => (
+
+
+
+
+ {name}
+
+ ),
+ },
+ {
+ field: 'description',
+ name: 'Description',
+ // eslint-disable-next-line react/no-danger
+ render: (description: string) =>
,
+ },
+ ];
+
const filterBtnAriaLabel = isPopoverOpen
? i18n.translate('discover.fieldChooser.toggleFieldFilterButtonHideAriaLabel', {
defaultMessage: 'Hide field filter settings',
@@ -257,6 +311,26 @@ export function DiscoverFieldSearch({ onChange, value, types }: Props) {
);
+ const helpButton = (
+
+
+
+ );
+
return (
@@ -272,8 +346,8 @@ export function DiscoverFieldSearch({ onChange, value, types }: Props) {
- {}} isDisabled={!isPopoverOpen}>
-
+
+
+
+
+ {i18n.translate('discover.fieldChooser.popoverTitle', {
+ defaultMessage: 'Field types',
+ })}
+
+
+
+
+
+
+
+ {i18n.translate('discover.fieldTypesPopover.learnMoreText', {
+ defaultMessage: 'Learn more about',
+ })}
+
+
+
+
+
+
+
+
-
+
);
}
diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx
index 5b9f9a6c452d6..f3a3f121e36ad 100644
--- a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx
+++ b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx
@@ -196,16 +196,31 @@ export function DiscoverSidebarComponent({
}
}, [paginate, scrollContainer, unpopularFields]);
- const fieldTypes = useMemo(() => {
+ const { fieldTypes, presentFieldTypes } = useMemo(() => {
const result = ['any'];
+ const dataViewFieldTypes = new Set
();
if (Array.isArray(fields)) {
for (const field of fields) {
- if (result.indexOf(field.type) === -1) {
- result.push(field.type);
+ if (field.type !== '_source') {
+ // If it's a string type, we want to distinguish between keyword and text
+ // For this purpose we need the ES type
+ const type =
+ field.type === 'string' &&
+ field.esTypes &&
+ ['keyword', 'text'].includes(field.esTypes[0])
+ ? field.esTypes?.[0]
+ : field.type;
+ // _id and _index would map to string, that's why we don't add the string type here
+ if (type && type !== 'string') {
+ dataViewFieldTypes.add(type);
+ }
+ if (result.indexOf(field.type) === -1) {
+ result.push(field.type);
+ }
}
}
}
- return result;
+ return { fieldTypes: result, presentFieldTypes: Array.from(dataViewFieldTypes) };
}, [fields]);
const showFieldStats = useMemo(() => viewMode === VIEW_MODE.DOCUMENT_LEVEL, [viewMode]);
@@ -327,7 +342,7 @@ export function DiscoverSidebarComponent({
responsive={false}
>
-
+
diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.test.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.test.tsx
index ef8fcd145c908..2adb1e5607a3b 100644
--- a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.test.tsx
+++ b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.test.tsx
@@ -51,6 +51,7 @@ const mockServices = {
}
},
},
+ docLinks: { links: { discover: { fieldTypeHelp: '' } } },
} as unknown as DiscoverServices;
const mockfieldCounts: Record = {};
diff --git a/src/plugins/discover/public/application/main/components/sidebar/lib/get_field_type_description.ts b/src/plugins/discover/public/application/main/components/sidebar/lib/get_field_type_description.ts
new file mode 100644
index 0000000000000..69728787e7667
--- /dev/null
+++ b/src/plugins/discover/public/application/main/components/sidebar/lib/get_field_type_description.ts
@@ -0,0 +1,110 @@
+/*
+ * 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 { i18n } from '@kbn/i18n';
+import { useDiscoverServices } from '../../../../../utils/use_discover_services';
+
+export function GetFieldTypeDescription(type: string) {
+ const { docLinks } = useDiscoverServices();
+ switch (type) {
+ case 'boolean':
+ return i18n.translate('discover.fieldNameDescription.booleanField', {
+ defaultMessage: 'True and false values.',
+ });
+ case 'conflict':
+ return i18n.translate('discover.fieldNameDescription.conflictField', {
+ defaultMessage: 'Field has values of different types. Resolve in Management > Data Views.',
+ });
+ case 'date':
+ return i18n.translate('discover.fieldNameDescription.dateField', {
+ defaultMessage: 'A date string or the number of seconds or milliseconds since 1/1/1970.',
+ });
+ case 'date_range':
+ return i18n.translate('discover.fieldNameDescription.dateRangeField', {
+ defaultMessage: 'Range of {dateFieldTypeLink} values. {viewSupportedDateFormatsLink}',
+ values: {
+ dateFieldTypeLink:
+ `` +
+ i18n.translate('discover.fieldNameDescription.dateRangeFieldLinkText', {
+ defaultMessage: 'date',
+ }) +
+ ' ',
+ viewSupportedDateFormatsLink:
+ `` +
+ i18n.translate('discover.fieldNameDescription.viewSupportedDateFormatsLinkText', {
+ defaultMessage: 'View supported date formats.',
+ }) +
+ ' ',
+ },
+ });
+ case 'geo_point':
+ return i18n.translate('discover.fieldNameDescription.geoPointField', {
+ defaultMessage: 'Latitude and longitude points.',
+ });
+ case 'geo_shape':
+ return i18n.translate('discover.fieldNameDescription.geoShapeField', {
+ defaultMessage: 'Complex shapes, such as polygons.',
+ });
+ case 'ip':
+ return i18n.translate('discover.fieldNameDescription.ipAddressField', {
+ defaultMessage: 'IPv4 and IPv6 addresses.',
+ });
+ case 'ip_range':
+ return i18n.translate('discover.fieldNameDescription.ipAddressRangeField', {
+ defaultMessage: 'Range of ip values supporting either IPv4 or IPv6 (or mixed) addresses.',
+ });
+ case 'murmur3':
+ return i18n.translate('discover.fieldNameDescription.murmur3Field', {
+ defaultMessage: 'Field that computes and stores hashes of values.',
+ });
+ case 'number':
+ return i18n.translate('discover.fieldNameDescription.numberField', {
+ defaultMessage: 'Long, integer, short, byte, double, and float values.',
+ });
+ case 'string':
+ return i18n.translate('discover.fieldNameDescription.stringField', {
+ defaultMessage: 'Full text such as the body of an email or a product description.',
+ });
+ case 'text':
+ return i18n.translate('discover.fieldNameDescription.textField', {
+ defaultMessage: 'Full text such as the body of an email or a product description.',
+ });
+ case 'keyword':
+ return i18n.translate('discover.fieldNameDescription.keywordField', {
+ defaultMessage:
+ 'Structured content such as an ID, email address, hostname, status code, or tag.',
+ });
+
+ case 'nested':
+ return i18n.translate('discover.fieldNameDescription.nestedField', {
+ defaultMessage: 'JSON object that preserves the relationship between its subfields.',
+ });
+ case 'version':
+ return i18n.translate('discover.fieldNameDescription.versionField', {
+ defaultMessage: 'Software versions. Supports {SemanticVersioningLink} precedence rules.',
+ values: {
+ SemanticVersioningLink:
+ `` +
+ i18n.translate(
+ 'discover.advancedSettings.discover.fieldNameDescription.versionFieldLinkText',
+ {
+ defaultMessage: 'Semantic Versioning',
+ }
+ ) +
+ ' ',
+ },
+ });
+ default:
+ return i18n.translate('discover.fieldNameDescription.unknownField', {
+ defaultMessage: 'Unknown field',
+ });
+ }
+}
diff --git a/src/plugins/discover/public/application/main/utils/fetch_all.test.ts b/src/plugins/discover/public/application/main/utils/fetch_all.test.ts
index d63b2323f607e..bb5d2be1b6d9b 100644
--- a/src/plugins/discover/public/application/main/utils/fetch_all.test.ts
+++ b/src/plugins/discover/public/application/main/utils/fetch_all.test.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import { FetchStatus } from '../../types';
-import { BehaviorSubject, Subject } from 'rxjs';
+import { BehaviorSubject, firstValueFrom, Subject } from 'rxjs';
import { reduce } from 'rxjs/operators';
import { SearchSource } from '../../../../../data/public';
import { RequestAdapter } from '../../../../../inspector';
@@ -45,9 +45,9 @@ const mockFetchTotalHits = fetchTotalHits as unknown as jest.MockedFunction;
function subjectCollector(subject: Subject): () => Promise {
- const promise = subject
- .pipe(reduce((history, value) => history.concat([value]), [] as T[]))
- .toPromise();
+ const promise = firstValueFrom(
+ subject.pipe(reduce((history, value) => history.concat([value]), [] as T[]))
+ );
return () => {
subject.complete();
diff --git a/src/plugins/discover/public/application/main/utils/fetch_chart.ts b/src/plugins/discover/public/application/main/utils/fetch_chart.ts
index 9d1baf6e57cb2..e279651fccebb 100644
--- a/src/plugins/discover/public/application/main/utils/fetch_chart.ts
+++ b/src/plugins/discover/public/application/main/utils/fetch_chart.ts
@@ -7,6 +7,7 @@
*/
import { i18n } from '@kbn/i18n';
import { filter, map } from 'rxjs/operators';
+import { lastValueFrom } from 'rxjs';
import {
DataPublicPluginStart,
isCompleteResponse,
@@ -77,7 +78,7 @@ export function fetchChart(
})
);
- return fetch$.toPromise();
+ return lastValueFrom(fetch$);
}
export function updateSearchSource(
diff --git a/src/plugins/discover/public/application/main/utils/fetch_documents.ts b/src/plugins/discover/public/application/main/utils/fetch_documents.ts
index 57be8911d7d0e..78535dfcf12ac 100644
--- a/src/plugins/discover/public/application/main/utils/fetch_documents.ts
+++ b/src/plugins/discover/public/application/main/utils/fetch_documents.ts
@@ -7,6 +7,7 @@
*/
import { i18n } from '@kbn/i18n';
import { filter, map } from 'rxjs/operators';
+import { lastValueFrom } from 'rxjs';
import { isCompleteResponse, ISearchSource } from '../../../../../data/public';
import { SAMPLE_SIZE_SETTING } from '../../../../common';
import { FetchDeps } from './fetch_all';
@@ -55,5 +56,5 @@ export const fetchDocuments = (
map((res) => res.rawResponse.hits.hits)
);
- return fetch$.toPromise();
+ return lastValueFrom(fetch$);
};
diff --git a/src/plugins/discover/public/application/main/utils/fetch_total_hits.ts b/src/plugins/discover/public/application/main/utils/fetch_total_hits.ts
index 080cec6cf2646..0a968c43da592 100644
--- a/src/plugins/discover/public/application/main/utils/fetch_total_hits.ts
+++ b/src/plugins/discover/public/application/main/utils/fetch_total_hits.ts
@@ -8,6 +8,7 @@
import { i18n } from '@kbn/i18n';
import { filter, map } from 'rxjs/operators';
+import { lastValueFrom } from 'rxjs';
import { isCompleteResponse, ISearchSource } from '../../../../../data/public';
import { DataViewType } from '../../../../../data_views/public';
import { FetchDeps } from './fetch_all';
@@ -53,5 +54,5 @@ export function fetchTotalHits(
map((res) => res.rawResponse.hits.total as number)
);
- return fetch$.toPromise();
+ return lastValueFrom(fetch$);
}
diff --git a/src/plugins/discover/public/application/main/utils/get_fetch_observeable.test.ts b/src/plugins/discover/public/application/main/utils/get_fetch_observeable.test.ts
index 58fcc20396dee..7fb51506f6ce4 100644
--- a/src/plugins/discover/public/application/main/utils/get_fetch_observeable.test.ts
+++ b/src/plugins/discover/public/application/main/utils/get_fetch_observeable.test.ts
@@ -5,9 +5,10 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
+import { BehaviorSubject, Subject } from 'rxjs';
+import { fakeSchedulers } from 'rxjs-marbles/jest';
import { getFetch$ } from './get_fetch_observable';
import { FetchStatus } from '../../types';
-import { BehaviorSubject, Subject } from 'rxjs';
import { DataPublicPluginStart } from '../../../../../data/public';
import { createSearchSessionMock } from '../../../__mocks__/search_session';
import { DataRefetch$ } from './use_saved_search';
@@ -46,6 +47,10 @@ function createDataMock(
}
describe('getFetchObservable', () => {
+ afterEach(() => {
+ jest.useRealTimers();
+ });
+
test('refetch$.next should trigger fetch$.next', async (done) => {
const searchSessionManagerMock = createSearchSessionMock();
@@ -64,34 +69,43 @@ describe('getFetchObservable', () => {
fetch$.subscribe(() => {
done();
});
- refetch$.next();
+ refetch$.next(undefined);
});
- test('getAutoRefreshFetch$ should trigger fetch$.next', async () => {
- jest.useFakeTimers();
- const searchSessionManagerMock = createSearchSessionMock();
- const autoRefreshFetch$ = new Subject();
- const main$ = new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED });
- const refetch$: DataRefetch$ = new Subject();
- const dataMock = createDataMock(new Subject(), new Subject(), new Subject(), autoRefreshFetch$);
- const setAutoRefreshDone = jest.fn();
- const fetch$ = getFetch$({
- setAutoRefreshDone,
- main$,
- refetch$,
- data: dataMock,
- searchSessionManager: searchSessionManagerMock.searchSessionManager,
- searchSource: savedSearchMockWithTimeField.searchSource,
- initialFetchStatus: FetchStatus.LOADING,
- });
+ test(
+ 'getAutoRefreshFetch$ should trigger fetch$.next',
+ fakeSchedulers((advance) => {
+ jest.useFakeTimers();
+ const searchSessionManagerMock = createSearchSessionMock();
+ const autoRefreshFetch$ = new Subject();
- const fetchfnMock = jest.fn();
- fetch$.subscribe(() => {
- fetchfnMock();
- });
- autoRefreshFetch$.next(jest.fn());
- jest.runAllTimers();
- expect(fetchfnMock).toHaveBeenCalledTimes(1);
- expect(setAutoRefreshDone).toHaveBeenCalled();
- });
+ const main$ = new BehaviorSubject({ fetchStatus: FetchStatus.UNINITIALIZED });
+ const refetch$: DataRefetch$ = new Subject();
+ const dataMock = createDataMock(
+ new Subject(),
+ new Subject(),
+ new Subject(),
+ autoRefreshFetch$
+ );
+ const setAutoRefreshDone = jest.fn();
+ const fetch$ = getFetch$({
+ setAutoRefreshDone,
+ main$,
+ refetch$,
+ data: dataMock,
+ searchSessionManager: searchSessionManagerMock.searchSessionManager,
+ searchSource: savedSearchMockWithTimeField.searchSource,
+ initialFetchStatus: FetchStatus.LOADING,
+ });
+
+ const fetchfnMock = jest.fn();
+ fetch$.subscribe(() => {
+ fetchfnMock();
+ });
+ autoRefreshFetch$.next(jest.fn());
+ advance(100);
+ expect(fetchfnMock).toHaveBeenCalledTimes(1);
+ expect(setAutoRefreshDone).toHaveBeenCalled();
+ })
+ );
});
diff --git a/src/plugins/discover/public/application/main/utils/use_discover_state.ts b/src/plugins/discover/public/application/main/utils/use_discover_state.ts
index 4d5d911f8abf3..607aba88e033c 100644
--- a/src/plugins/discover/public/application/main/utils/use_discover_state.ts
+++ b/src/plugins/discover/public/application/main/utils/use_discover_state.ts
@@ -141,7 +141,7 @@ export function useDiscoverState({
}
if (chartDisplayChanged || chartIntervalChanged || docTableSortChanged) {
- refetch$.next();
+ refetch$.next(undefined);
}
setState(nextState);
});
@@ -211,7 +211,7 @@ export function useDiscoverState({
(_payload, isUpdate?: boolean) => {
if (isUpdate === false) {
searchSessionManager.removeSearchSessionIdFromURL({ replace: false });
- refetch$.next();
+ refetch$.next(undefined);
}
},
[refetch$, searchSessionManager]
@@ -222,7 +222,7 @@ export function useDiscoverState({
*/
useEffect(() => {
if (indexPattern) {
- refetch$.next();
+ refetch$.next(undefined);
}
}, [initialFetchStatus, refetch$, indexPattern, savedSearch.id]);
diff --git a/src/plugins/discover/public/application/main/utils/use_saved_search.test.ts b/src/plugins/discover/public/application/main/utils/use_saved_search.test.ts
index 0430b5672aebd..597d8b76be8aa 100644
--- a/src/plugins/discover/public/application/main/utils/use_saved_search.test.ts
+++ b/src/plugins/discover/public/application/main/utils/use_saved_search.test.ts
@@ -76,7 +76,7 @@ describe('test useSavedSearch', () => {
});
});
- result.current.refetch$.next();
+ result.current.refetch$.next(undefined);
await waitForValueToChange(() => {
return result.current.data$.main$.value.fetchStatus === 'complete';
@@ -119,7 +119,7 @@ describe('test useSavedSearch', () => {
});
});
- result.current.refetch$.next();
+ result.current.refetch$.next(undefined);
await waitForValueToChange(() => {
return result.current.data$.main$.value.fetchStatus === FetchStatus.COMPLETE;
diff --git a/src/plugins/discover/public/application/main/utils/use_saved_search.ts b/src/plugins/discover/public/application/main/utils/use_saved_search.ts
index c8a59d2eb3167..8197979e103eb 100644
--- a/src/plugins/discover/public/application/main/utils/use_saved_search.ts
+++ b/src/plugins/discover/public/application/main/utils/use_saved_search.ts
@@ -147,7 +147,6 @@ export const useSavedSearch = ({
* Values that shouldn't trigger re-rendering when changed
*/
const refs = useRef<{
- abortController?: AbortController;
autoRefreshDone?: AutoRefreshDoneFn;
}>({});
@@ -172,6 +171,7 @@ export const useSavedSearch = ({
searchSource,
initialFetchStatus,
});
+ let abortController: AbortController;
const subscription = fetch$.subscribe(async (val) => {
if (!validateTimeRange(timefilter.getTime(), services.toastNotifications)) {
@@ -179,12 +179,12 @@ export const useSavedSearch = ({
}
inspectorAdapters.requests.reset();
- refs.current.abortController?.abort();
- refs.current.abortController = new AbortController();
+ abortController?.abort();
+ abortController = new AbortController();
const autoRefreshDone = refs.current.autoRefreshDone;
await fetchAll(dataSubjects, searchSource, val === 'reset', {
- abortController: refs.current.abortController,
+ abortController,
appStateContainer: stateContainer.appStateContainer,
data,
initialFetchStatus,
@@ -205,7 +205,10 @@ export const useSavedSearch = ({
}
});
- return () => subscription.unsubscribe();
+ return () => {
+ abortController?.abort();
+ subscription.unsubscribe();
+ };
}, [
data,
data.query.queryString,
diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid_cell_actions.test.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid_cell_actions.test.tsx
index 0c6783fabf189..497a8a1d953a7 100644
--- a/src/plugins/discover/public/components/discover_grid/discover_grid_cell_actions.test.tsx
+++ b/src/plugins/discover/public/components/discover_grid/discover_grid_cell_actions.test.tsx
@@ -43,7 +43,6 @@ describe('Discover cell actions ', function () {
colIndex={1}
columnId="extension"
isExpanded={false}
- closePopover={jest.fn()}
/>
);
@@ -72,7 +71,6 @@ describe('Discover cell actions ', function () {
colIndex={1}
columnId="extension"
isExpanded={false}
- closePopover={jest.fn()}
/>
);
diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx
index b1fd1ae873e08..a5702da29975c 100644
--- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx
+++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { Subscription } from 'rxjs';
+import { lastValueFrom, Subscription } from 'rxjs';
import { onlyDisabledFiltersChanged, Filter } from '@kbn/es-query';
import React from 'react';
import ReactDOM from 'react-dom';
@@ -182,8 +182,8 @@ export class SavedSearchEmbeddable
try {
// Make the request
- const { rawResponse: resp } = await searchSource
- .fetch$({
+ const { rawResponse: resp } = await lastValueFrom(
+ searchSource.fetch$({
abortSignal: this.abortController.signal,
sessionId: searchSessionId,
inspector: {
@@ -198,7 +198,7 @@ export class SavedSearchEmbeddable
},
executionContext,
})
- .toPromise();
+ );
this.updateOutput({ loading: false, error: undefined });
this.searchProps!.rows = resp.hits.hits;
diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.tsx b/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.tsx
index aab4856d6698c..aa44f0d56889c 100644
--- a/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.tsx
+++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.tsx
@@ -9,6 +9,7 @@
import '../table.scss';
import React, { useCallback, useMemo } from 'react';
import { EuiInMemoryTable } from '@elastic/eui';
+import { getTypeForFieldIcon } from '../../../../../utils/get_type_for_field_icon';
import { useDiscoverServices } from '../../../../../utils/use_discover_services';
import { flattenHit } from '../../../../../../../data/public';
import { SHOW_MULTIFIELDS } from '../../../../../../common';
@@ -73,7 +74,11 @@ export const DocViewerLegacyTable = ({
.map((field) => {
const fieldMapping = mapping(field);
const displayName = fieldMapping?.displayName ?? field;
- const fieldType = isNestedFieldParent(field, dataView) ? 'nested' : fieldMapping?.type;
+ const fieldType = isNestedFieldParent(field, dataView)
+ ? 'nested'
+ : fieldMapping
+ ? getTypeForFieldIcon(fieldMapping)
+ : undefined;
const ignored = getIgnoredReason(fieldMapping ?? field, hit._ignored);
return {
action: {
diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/table.tsx b/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/table.tsx
index 7aa372e36adff..4742dd3d8f585 100644
--- a/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/table.tsx
+++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/table.tsx
@@ -27,6 +27,7 @@ import {
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { debounce } from 'lodash';
+import { getTypeForFieldIcon } from '../../../../utils/get_type_for_field_icon';
import { useDiscoverServices } from '../../../../utils/use_discover_services';
import { Storage } from '../../../../../../kibana_utils/public';
import { usePager } from '../../../../utils/use_pager';
@@ -157,7 +158,11 @@ export const DocViewerTable = ({
(field: string) => {
const fieldMapping = mapping(field);
const displayName = fieldMapping?.displayName ?? field;
- const fieldType = isNestedFieldParent(field, dataView) ? 'nested' : fieldMapping?.type;
+ const fieldType = isNestedFieldParent(field, dataView)
+ ? 'nested'
+ : fieldMapping
+ ? getTypeForFieldIcon(fieldMapping)
+ : undefined;
const ignored = getIgnoredReason(fieldMapping ?? field, hit._ignored);
diff --git a/src/plugins/discover/public/utils/get_type_for_field_icon.test.ts b/src/plugins/discover/public/utils/get_type_for_field_icon.test.ts
new file mode 100644
index 0000000000000..bffa0fecaed74
--- /dev/null
+++ b/src/plugins/discover/public/utils/get_type_for_field_icon.test.ts
@@ -0,0 +1,39 @@
+/*
+ * 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 { DataViewField } from 'src/plugins/data_views/common';
+import { getTypeForFieldIcon } from './get_type_for_field_icon';
+
+describe('getTypeForFieldIcon', () => {
+ it('extracts type for non-string types', () => {
+ expect(
+ getTypeForFieldIcon({
+ type: 'not-string',
+ esTypes: ['bar'],
+ } as DataViewField)
+ ).toBe('not-string');
+ });
+
+ it('extracts type when type is string but esTypes is unavailable', () => {
+ expect(
+ getTypeForFieldIcon({
+ type: 'string',
+ esTypes: undefined,
+ } as DataViewField)
+ ).toBe('string');
+ });
+
+ it('extracts esType when type is string and esTypes is available', () => {
+ expect(
+ getTypeForFieldIcon({
+ type: 'string',
+ esTypes: ['version'],
+ } as DataViewField)
+ ).toBe('version');
+ });
+});
diff --git a/src/plugins/discover/public/utils/get_type_for_field_icon.ts b/src/plugins/discover/public/utils/get_type_for_field_icon.ts
new file mode 100644
index 0000000000000..bb3f65ed3e01c
--- /dev/null
+++ b/src/plugins/discover/public/utils/get_type_for_field_icon.ts
@@ -0,0 +1,17 @@
+/*
+ * 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 { DataViewField } from 'src/plugins/data_views/common';
+
+/**
+ * Extracts the type from a data view field that will match the right icon.
+ *
+ * We define custom logic for Discover in order to distinguish between various "string" types.
+ */
+export const getTypeForFieldIcon = (field: DataViewField) =>
+ field.type === 'string' && field.esTypes ? field.esTypes[0] : field.type;
diff --git a/src/plugins/discover/public/utils/use_es_doc_search.ts b/src/plugins/discover/public/utils/use_es_doc_search.ts
index e33d30d65979e..106b5828b2f01 100644
--- a/src/plugins/discover/public/utils/use_es_doc_search.ts
+++ b/src/plugins/discover/public/utils/use_es_doc_search.ts
@@ -8,6 +8,7 @@
import { useCallback, useEffect, useMemo, useState } from 'react';
import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
+import { firstValueFrom } from 'rxjs';
import { DataView } from '../../../data_views/public';
import { DocProps } from '../application/doc/components/doc';
import { ElasticRequestState } from '../application/doc/types';
@@ -74,14 +75,14 @@ export function useEsDocSearch({
const requestData = useCallback(async () => {
try {
- const { rawResponse } = await data.search
- .search({
+ const { rawResponse } = await firstValueFrom(
+ data.search.search({
params: {
index,
body: buildSearchBody(id, indexPattern, useNewFieldsApi, requestSource)?.body,
},
})
- .toPromise();
+ );
const hits = rawResponse.hits;
diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap b/src/plugins/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap
index 64e940756539a..17cf07121e7ce 100644
--- a/src/plugins/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap
+++ b/src/plugins/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap
@@ -95,13 +95,8 @@ exports[`CronEditor is rendered with a DAY frequency 1`] = `
@@ -124,7 +119,7 @@ exports[`CronEditor is rendered with a DAY frequency 1`] = `
>
@@ -769,7 +754,7 @@ exports[`CronEditor is rendered with a DAY frequency 1`] = `
@@ -1250,7 +1225,7 @@ exports[`CronEditor is rendered with a DAY frequency 1`] = `
@@ -1794,7 +1759,7 @@ exports[`CronEditor is rendered with a HOUR frequency 1`] = `
>
@@ -2468,7 +2423,7 @@ exports[`CronEditor is rendered with a HOUR frequency 1`] = `
>
@@ -3011,7 +2956,7 @@ exports[`CronEditor is rendered with a MINUTE frequency 1`] = `
>
@@ -3229,7 +3164,7 @@ exports[`CronEditor is rendered with a MONTH frequency 1`] = `
>
@@ -4017,7 +3942,7 @@ exports[`CronEditor is rendered with a MONTH frequency 1`] = `
>
@@ -4463,7 +4378,7 @@ exports[`CronEditor is rendered with a MONTH frequency 1`] = `
@@ -4944,7 +4849,7 @@ exports[`CronEditor is rendered with a MONTH frequency 1`] = `
@@ -5488,7 +5383,7 @@ exports[`CronEditor is rendered with a WEEK frequency 1`] = `
>
@@ -6084,7 +5969,7 @@ exports[`CronEditor is rendered with a WEEK frequency 1`] = `
>
@@ -6386,7 +6261,7 @@ exports[`CronEditor is rendered with a WEEK frequency 1`] = `
@@ -6867,7 +6732,7 @@ exports[`CronEditor is rendered with a WEEK frequency 1`] = `
@@ -7411,7 +7266,7 @@ exports[`CronEditor is rendered with a YEAR frequency 1`] = `
>
@@ -8176,7 +8021,7 @@ exports[`CronEditor is rendered with a YEAR frequency 1`] = `
>
@@ -8522,7 +8357,7 @@ exports[`CronEditor is rendered with a YEAR frequency 1`] = `
>
@@ -8968,7 +8793,7 @@ exports[`CronEditor is rendered with a YEAR frequency 1`] = `
@@ -9449,7 +9264,7 @@ exports[`CronEditor is rendered with a YEAR frequency 1`] = `
{
const { form } = useForm();
diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.test.tsx b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.test.tsx
new file mode 100644
index 0000000000000..dc8695190bdaf
--- /dev/null
+++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.test.tsx
@@ -0,0 +1,112 @@
+/*
+ * 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 React, { useEffect } from 'react';
+import { act } from 'react-dom/test-utils';
+
+import { registerTestBed } from '../shared_imports';
+import { useForm } from '../hooks/use_form';
+import { useFormData } from '../hooks/use_form_data';
+import { Form } from './form';
+import { UseField } from './use_field';
+import { UseArray } from './use_array';
+
+describe('
', () => {
+ beforeAll(() => {
+ jest.useFakeTimers();
+ });
+
+ afterAll(() => {
+ jest.useRealTimers();
+ });
+
+ test('it should render by default 1 array item', () => {
+ const TestComp = () => {
+ const { form } = useForm();
+ return (
+
+ );
+ };
+
+ const setup = registerTestBed(TestComp, {
+ memoryRouter: { wrapComponent: false },
+ });
+
+ const { find } = setup();
+
+ expect(find('arrayItem').length).toBe(1);
+ });
+
+ test('it should allow to listen to array item field value change', async () => {
+ const onFormData = jest.fn();
+
+ const TestComp = ({ onData }: { onData: (data: any) => void }) => {
+ const { form } = useForm();
+ const [formData] = useFormData({ form, watch: 'users[0].name' });
+
+ useEffect(() => {
+ onData(formData);
+ }, [onData, formData]);
+
+ return (
+
+ );
+ };
+
+ const setup = registerTestBed(TestComp, {
+ defaultProps: { onData: onFormData },
+ memoryRouter: { wrapComponent: false },
+ });
+
+ const {
+ form: { setInputValue },
+ } = setup();
+
+ await act(async () => {
+ setInputValue('nameField__0', 'John');
+ });
+
+ const formData = onFormData.mock.calls[onFormData.mock.calls.length - 1][0];
+
+ expect(formData.users[0].name).toEqual('John');
+ });
+});
diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts
index 3e7b061603458..78379aa9fffbf 100644
--- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts
+++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts
@@ -6,6 +6,7 @@
* Side Public License, v 1.
*/
+import uuid from 'uuid';
import { useEffect, useRef, useCallback, useMemo } from 'react';
import { FormHook, FieldConfig } from '../types';
@@ -53,7 +54,7 @@ export interface FormArrayField {
*/
export const UseArray = ({
path,
- initialNumberOfItems,
+ initialNumberOfItems = 1,
validations,
readDefaultValueOnForm = true,
children,
@@ -92,6 +93,9 @@ export const UseArray = ({
// Create an internal hook field which behaves like any other form field except that it is not
// outputed in the form data (when calling form.submit() or form.getFormData())
// This allow us to run custom validations (passed to the props) on the Array items
+
+ const internalFieldPath = useMemo(() => `${path}__${uuid.v4()}`, [path]);
+
const fieldConfigBase: FieldConfig
& InternalFieldConfig = {
defaultValue: fieldDefaultValue,
initialValue: fieldDefaultValue,
@@ -103,7 +107,7 @@ export const UseArray = ({
? { validations, ...fieldConfigBase }
: fieldConfigBase;
- const field = useField(form, path, fieldConfig);
+ const field = useField(form, internalFieldPath, fieldConfig);
const { setValue, value, isChangingValue, errors } = field;
// Derived state from the field
diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx
index cbf0d9d619636..36fd16209f5d4 100644
--- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx
+++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx
@@ -26,41 +26,91 @@ describe(' ', () => {
jest.useRealTimers();
});
- test('should read the default value from the prop and fallback to the config object', () => {
- const onFormData = jest.fn();
+ describe('defaultValue', () => {
+ test('should read the default value from the prop and fallback to the config object', () => {
+ const onFormData = jest.fn();
- const TestComp = ({ onData }: { onData: OnUpdateHandler }) => {
- const { form } = useForm();
- const { subscribe } = form;
+ const TestComp = ({ onData }: { onData: OnUpdateHandler }) => {
+ const { form } = useForm();
+ const { subscribe } = form;
- useEffect(() => subscribe(onData).unsubscribe, [subscribe, onData]);
+ useEffect(() => subscribe(onData).unsubscribe, [subscribe, onData]);
- return (
-
- );
- };
+ return (
+
+ );
+ };
+
+ const setup = registerTestBed(TestComp, {
+ defaultProps: { onData: onFormData },
+ memoryRouter: { wrapComponent: false },
+ });
- const setup = registerTestBed(TestComp, {
- defaultProps: { onData: onFormData },
- memoryRouter: { wrapComponent: false },
+ setup();
+
+ const [{ data }] = onFormData.mock.calls[
+ onFormData.mock.calls.length - 1
+ ] as Parameters;
+
+ expect(data.internal).toEqual({
+ name: 'John',
+ lastName: 'Snow',
+ });
});
- setup();
+ test('should update the form.defaultValue when a field defaultValue is provided through prop', () => {
+ let formHook: FormHook | null = null;
- const [{ data }] = onFormData.mock.calls[
- onFormData.mock.calls.length - 1
- ] as Parameters;
+ const TestComp = () => {
+ const [isFieldVisible, setIsFieldVisible] = useState(true);
+ const { form } = useForm();
+ formHook = form;
+
+ return (
+
+ );
+ };
+
+ const setup = registerTestBed(TestComp, {
+ memoryRouter: { wrapComponent: false },
+ });
+
+ const { find } = setup();
+
+ expect(formHook!.__getFormDefaultValue()).toEqual({
+ name: 'John',
+ myArray: [
+ { name: 'John', lastName: 'Snow' },
+ { name: 'Foo', lastName: 'Bar' },
+ ],
+ });
+
+ // Unmounts the field and make sure the form.defaultValue has been updated
+ act(() => {
+ find('unmountField').simulate('click');
+ });
- expect(data.internal).toEqual({
- name: 'John',
- lastName: 'Snow',
+ expect(formHook!.__getFormDefaultValue()).toEqual({});
});
});
@@ -205,7 +255,7 @@ describe(' ', () => {
describe('validation', () => {
let formHook: FormHook | null = null;
- let fieldHook: FieldHook | null = null;
+ let fieldHook: FieldHook | null = null;
beforeEach(() => {
formHook = null;
@@ -216,19 +266,24 @@ describe(' ', () => {
formHook = form;
};
- const onFieldHook = (field: FieldHook) => {
+ const onFieldHook = (field: FieldHook) => {
fieldHook = field;
};
- const getTestComp = (fieldConfig: FieldConfig) => {
+ const getTestComp = (fieldConfig?: FieldConfig) => {
const TestComp = () => {
- const { form } = useForm();
+ const { form } = useForm();
const [isFieldActive, setIsFieldActive] = useState(true);
+ const [fieldPath, setFieldPath] = useState('name');
const unmountField = () => {
setIsFieldActive(false);
};
+ const changeFieldPath = () => {
+ setFieldPath('newPath');
+ };
+
useEffect(() => {
onFormHook(form);
}, [form]);
@@ -236,16 +291,12 @@ describe(' ', () => {
return (
);
};
return TestComp;
};
- const setup = (fieldConfig: FieldConfig) => {
+ const setup = (fieldConfig?: FieldConfig) => {
return registerTestBed(getTestComp(fieldConfig), {
memoryRouter: { wrapComponent: false },
})() as TestBed;
};
test('should update the form validity whenever the field value changes', async () => {
- const fieldConfig: FieldConfig = {
+ const fieldConfig: FieldConfig = {
defaultValue: '', // empty string, which is not valid
validations: [
{
@@ -317,7 +371,7 @@ describe(' ', () => {
});
test('should not update the state if the field has unmounted while validating', async () => {
- const fieldConfig: FieldConfig = {
+ const fieldConfig: FieldConfig = {
validations: [
{
validator: () => {
@@ -369,6 +423,40 @@ describe(' ', () => {
console.error = originalConsoleError; // eslint-disable-line no-console
});
+ test('should not validate the field if the "path" changes but the value has not changed', async () => {
+ // This happens with the UseArray. When we delete an item from the array the path for
+ // the remaining items are recalculated and thus changed for every inside
+ // the array. We should not re-run the validation when adding/removing array items.
+
+ const validator = jest.fn();
+ const fieldConfig: FieldConfig = {
+ validations: [
+ {
+ validator,
+ },
+ ],
+ };
+
+ const {
+ find,
+ form: { setInputValue },
+ } = setup(fieldConfig);
+
+ await act(async () => {
+ setInputValue('myField', 'changedValue');
+ });
+
+ expect(validator).toHaveBeenCalledTimes(1);
+ validator.mockReset();
+
+ await act(async () => {
+ // Change the field path
+ find('changeFieldPathBtn').simulate('click');
+ });
+
+ expect(validator).not.toHaveBeenCalled();
+ });
+
describe('dynamic data', () => {
let nameFieldHook: FieldHook | null = null;
let lastNameFieldHook: FieldHook | null = null;
@@ -708,32 +796,54 @@ describe(' ', () => {
});
describe('change handlers', () => {
+ const onChange = jest.fn();
const onError = jest.fn();
beforeEach(() => {
jest.resetAllMocks();
});
- const getTestComp = (fieldConfig: FieldConfig) => {
+ const getTestComp = (fieldConfig?: FieldConfig) => {
const TestComp = () => {
const { form } = useForm();
return (
);
};
return TestComp;
};
- const setup = (fieldConfig: FieldConfig) => {
+ const setup = (fieldConfig?: FieldConfig) => {
return registerTestBed(getTestComp(fieldConfig), {
memoryRouter: { wrapComponent: false },
})() as TestBed;
};
- it('calls onError when validation state changes', async () => {
+ test('calls onChange() prop when value state changes', async () => {
+ const {
+ form: { setInputValue },
+ } = setup();
+
+ expect(onChange).toBeCalledTimes(0);
+
+ await act(async () => {
+ setInputValue('myField', 'foo');
+ });
+
+ expect(onChange).toBeCalledTimes(1);
+ expect(onChange).toBeCalledWith('foo');
+ });
+
+ test('calls onError() prop when validation state changes', async () => {
const {
form: { setInputValue },
} = setup({
diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx
index bc4e2ccf58294..7e216e3126ed8 100644
--- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx
+++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx
@@ -128,11 +128,20 @@ function UseFieldComp(props: Props {
+ let needsCleanUp = false;
+
if (defaultValue !== undefined) {
+ needsCleanUp = true;
// Update the form "defaultValue" ref object.
// This allows us to reset the form and put back the defaultValue of each field
__updateDefaultValueAt(path, defaultValue);
}
+
+ return () => {
+ if (needsCleanUp) {
+ __updateDefaultValueAt(path, undefined);
+ }
+ };
}, [path, defaultValue, __updateDefaultValueAt]);
// Children prevails over anything else provided.
diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts
index f0c9c50c1033e..7ba06304b971b 100644
--- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts
+++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts
@@ -26,6 +26,10 @@ export interface InternalFieldConfig {
isIncludedInOutput?: boolean;
}
+const errorsToString = (errors: ValidationError[]): string[] | null => {
+ return errors.length ? errors.map((error) => error.message) : null;
+};
+
export const useField = (
form: FormHook,
path: string,
@@ -81,14 +85,13 @@ export const useField = (
const isMounted = useRef(false);
const validateCounter = useRef(0);
const changeCounter = useRef(0);
- const hasBeenReset = useRef(false);
const inflightValidation = useRef(null);
const debounceTimeout = useRef(null);
// Keep a ref of the last state (value and errors) notified to the consumer so they don't get
// loads of updates whenever they don't wrap the "onChange()" and "onError()" handlers with a useCallback
// e.g. { // inline code }}
const lastNotifiedState = useRef<{ value?: I; errors: string[] | null }>({
- value: undefined,
+ value: initialValueDeserialized,
errors: null,
});
@@ -100,6 +103,9 @@ export const useField = (
[validations]
);
+ const valueHasChanged = value !== lastNotifiedState.current.value;
+ const errorsHaveChanged = lastNotifiedState.current.errors !== errorsToString(errors);
+
// ----------------------------------
// -- HELPERS
// ----------------------------------
@@ -519,8 +525,8 @@ export const useField = (
setStateErrors([]);
if (resetValue) {
- hasBeenReset.current = true;
const newValue = deserializeValue(updatedDefaultValue ?? defaultValue);
+ lastNotifiedState.current.value = newValue;
setValue(newValue);
return newValue;
}
@@ -604,36 +610,29 @@ export const useField = (
// might not be wrapped inside a "useCallback" and that would trigger a possible infinite
// amount of effect executions.
useEffect(() => {
- if (!isMounted.current) {
+ if (!isMounted.current || value === undefined) {
return;
}
- if (valueChangeListener && value !== lastNotifiedState.current.value) {
+ if (valueChangeListener && valueHasChanged) {
valueChangeListener(value);
- lastNotifiedState.current.value = value;
}
- }, [value, valueChangeListener]);
+ }, [value, valueHasChanged, valueChangeListener]);
// Value change: update state and run validations
useEffect(() => {
- if (!isMounted.current) {
+ if (!isMounted.current || !valueHasChanged) {
return;
}
- if (hasBeenReset.current) {
- // If the field value has just been reset (triggering this useEffect)
- // we don't want to set the "isPristine" state to true and validate the field
- hasBeenReset.current = false;
- } else {
- setPristine(false);
- setIsChangingValue(true);
-
- runValidationsOnValueChange(() => {
- if (isMounted.current) {
- setIsChangingValue(false);
- }
- });
- }
+ setPristine(false);
+ setIsChangingValue(true);
+
+ runValidationsOnValueChange(() => {
+ if (isMounted.current) {
+ setIsChangingValue(false);
+ }
+ });
return () => {
if (debounceTimeout.current) {
@@ -641,7 +640,7 @@ export const useField = (
debounceTimeout.current = null;
}
};
- }, [value, runValidationsOnValueChange]);
+ }, [valueHasChanged, runValidationsOnValueChange]);
// Value change: set "isModified" state
useEffect(() => {
@@ -659,13 +658,18 @@ export const useField = (
return;
}
- const errorMessages = errors.length ? errors.map((error) => error.message) : null;
-
- if (errorChangeListener && lastNotifiedState.current.errors !== errorMessages) {
- errorChangeListener(errorMessages);
- lastNotifiedState.current.errors = errorMessages;
+ if (errorChangeListener && errorsHaveChanged) {
+ errorChangeListener(errorsToString(errors));
}
- }, [errors, errorChangeListener]);
+ }, [errors, errorsHaveChanged, errorChangeListener]);
+
+ useEffect(() => {
+ lastNotifiedState.current.value = value;
+ }, [value]);
+
+ useEffect(() => {
+ lastNotifiedState.current.errors = errorsToString(errors);
+ }, [errors]);
useEffect(() => {
isMounted.current = true;
diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts
index 2160c09ef720e..3966f9cc61a70 100644
--- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts
+++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts
@@ -11,7 +11,7 @@ import { get } from 'lodash';
import { set } from '@elastic/safer-lodash-set';
import { FormHook, FieldHook, FormData, FieldsMap, FormConfig } from '../types';
-import { mapFormFields, unflattenObject, Subject, Subscription } from '../lib';
+import { mapFormFields, unflattenObject, flattenObject, Subject, Subscription } from '../lib';
const DEFAULT_OPTIONS = {
valueChangeDebounceTime: 500,
@@ -205,7 +205,18 @@ export function useForm(
if (defaultValueDeserialized.current === undefined) {
defaultValueDeserialized.current = {} as I;
}
- set(defaultValueDeserialized.current!, path, value);
+
+ // We allow "undefined" to be passed to be able to remove a value from the form `defaultValue` object.
+ // When mounts it calls `updateDefaultValueAt("foo", "bar")` to
+ // update the form "defaultValue" object. When that component unmounts we want to be able to clean up and
+ // remove its defaultValue on the form.
+ if (value === undefined) {
+ const updated = flattenObject(defaultValueDeserialized.current!);
+ delete updated[path];
+ defaultValueDeserialized.current = unflattenObject(updated);
+ } else {
+ set(defaultValueDeserialized.current!, path, value);
+ }
},
[]
);
diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx
index dc89cfe4f1fb6..7c0cd960999e8 100644
--- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx
+++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx
@@ -5,7 +5,7 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
-import React, { useState } from 'react';
+import React, { useState, useEffect } from 'react';
import { act } from 'react-dom/test-utils';
import { registerTestBed } from '../shared_imports';
@@ -36,8 +36,10 @@ describe('useFormIsModified()', () => {
const [isNameVisible, setIsNameVisible] = useState(true);
const [isLastNameVisible, setIsLastNameVisible] = useState(true);
- // Call our jest.spy() with the latest hook value
- onIsModifiedChange(isModified);
+ useEffect(() => {
+ // Call our jest.spy() with the latest hook value
+ onIsModifiedChange(isModified);
+ }, [onIsModifiedChange, isModified]);
return (
@@ -518,12 +538,24 @@ Array [
className="euiFormControlLayout__childrenWrapper"
>
+
+
+
+
+
@@ -561,12 +593,24 @@ Array [
className="euiFormControlLayout__childrenWrapper"
>
+
+
+
+
+
@@ -604,12 +648,24 @@ Array [
className="euiFormControlLayout__childrenWrapper"
>
+
+
+
+
+
@@ -647,12 +703,24 @@ Array [
className="euiFormControlLayout__childrenWrapper"
>
+
+
+
+
+
@@ -690,12 +758,24 @@ Array [
className="euiFormControlLayout__childrenWrapper"
>
+
+
+
+
+
@@ -733,12 +813,24 @@ Array [
className="euiFormControlLayout__childrenWrapper"
>
+
+
+
+
+
@@ -785,6 +877,7 @@ Array [
className="euiFormControlLayout__childrenWrapper"
>
({
body: {
@@ -72,7 +73,7 @@ describe('ESSQL search strategy', () => {
describe('query functionality', () => {
it('performs a simple query', async () => {
const sqlSearch = await essqlSearchStrategyProvider();
- const result = await sqlSearch.search(basicReq, {}, mockDeps).toPromise();
+ const result = await lastValueFrom(sqlSearch.search(basicReq, {}, mockDeps));
const [[request]] = mockQuery.mock.calls;
expect(request.format).toEqual('json');
@@ -120,7 +121,9 @@ describe('ESSQL search strategy', () => {
mockQuery.mockReset().mockReturnValueOnce(pageOne).mockReturnValueOnce(pageTwo);
const sqlSearch = await essqlSearchStrategyProvider();
- const result = await sqlSearch.search({ ...basicReq, count: 2 }, {}, mockDeps).toPromise();
+ const result = await lastValueFrom(
+ sqlSearch.search({ ...basicReq, count: 2 }, {}, mockDeps)
+ );
expect(result.rows).toHaveLength(2);
});
diff --git a/x-pack/plugins/canvas/shareable_runtime/components/footer/settings/__snapshots__/settings.test.tsx.snap b/x-pack/plugins/canvas/shareable_runtime/components/footer/settings/__snapshots__/settings.test.tsx.snap
index 0109e292ebc7c..557b8698f7e12 100644
--- a/x-pack/plugins/canvas/shareable_runtime/components/footer/settings/__snapshots__/settings.test.tsx.snap
+++ b/x-pack/plugins/canvas/shareable_runtime/components/footer/settings/__snapshots__/settings.test.tsx.snap
@@ -296,6 +296,7 @@ exports[` can navigate Autoplay Settings 2`] = `
>
{
pushCaseToExternalServiceOrder < onFormSubmitSuccessOrder
).toBe(true);
});
+
+ describe('Permissions', () => {
+ it('should not push to service if the user does not have access to actions', async () => {
+ mockedContext.coreStart.application.capabilities = {
+ ...mockedContext.coreStart.application.capabilities,
+ actions: { save: false, show: false },
+ };
+
+ const result = mockedContext.render(
+
+
+
+
+ );
+
+ await act(async () => {
+ fillFormReactTestingLib(result);
+ });
+
+ await act(async () => {
+ userEvent.click(result.getByTestId('create-case-submit'));
+ });
+
+ expect(pushCaseToExternalService).not.toHaveBeenCalled();
+ });
+ });
});
diff --git a/x-pack/plugins/cases/public/components/create/form_context.tsx b/x-pack/plugins/cases/public/components/create/form_context.tsx
index 3576ea8377731..8a89dfea3a811 100644
--- a/x-pack/plugins/cases/public/components/create/form_context.tsx
+++ b/x-pack/plugins/cases/public/components/create/form_context.tsx
@@ -93,7 +93,7 @@ export const FormContext: React.FC = ({
await afterCaseCreated(updatedCase, postComment);
}
- if (updatedCase?.id && dataConnectorId !== 'none') {
+ if (updatedCase?.id && connectorToUpdate.id !== 'none') {
await pushCaseToExternalService({
caseId: updatedCase.id,
connector: connectorToUpdate,
diff --git a/x-pack/plugins/cases/public/components/edit_connector/index.test.tsx b/x-pack/plugins/cases/public/components/edit_connector/index.test.tsx
index 040fe0866a84e..87d4ea8f1e586 100644
--- a/x-pack/plugins/cases/public/components/edit_connector/index.test.tsx
+++ b/x-pack/plugins/cases/public/components/edit_connector/index.test.tsx
@@ -361,4 +361,19 @@ describe('EditConnector ', () => {
expect(result.queryByTestId('has-data-to-push-button')).toBe(null);
});
});
+
+ it('does not show the edit connectors pencil if the user does not have read access to actions', async () => {
+ const defaultProps = getDefaultProps();
+ const props = { ...defaultProps, connectors: [] };
+ appMockRender.coreStart.application.capabilities = {
+ ...appMockRender.coreStart.application.capabilities,
+ actions: { save: false, show: false },
+ };
+
+ const result = appMockRender.render( );
+ await waitFor(() => {
+ expect(result.getByTestId('connector-edit-header')).toBeInTheDocument();
+ expect(result.queryByTestId('connector-edit')).toBe(null);
+ });
+ });
});
diff --git a/x-pack/plugins/cases/public/components/edit_connector/index.tsx b/x-pack/plugins/cases/public/components/edit_connector/index.tsx
index 85bf7de10b7ca..3d87578e90d8f 100644
--- a/x-pack/plugins/cases/public/components/edit_connector/index.tsx
+++ b/x-pack/plugins/cases/public/components/edit_connector/index.tsx
@@ -288,11 +288,11 @@ export const EditConnector = React.memo(
justifyContent="spaceBetween"
responsive={false}
>
-
+
{i18n.CONNECTORS}
{isLoading && }
- {!isLoading && !editConnector && userCanCrud && (
+ {!isLoading && !editConnector && userCanCrud && actionsReadCapabilities && (
+ Logos/CIS/CIS_logo_no-tag_stacked_large
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/x-pack/plugins/cloud_security_posture/public/assets/icons/k8s_logo.svg b/x-pack/plugins/cloud_security_posture/public/assets/icons/k8s_logo.svg
new file mode 100644
index 0000000000000..1949c06d51520
--- /dev/null
+++ b/x-pack/plugins/cloud_security_posture/public/assets/icons/k8s_logo.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.test.tsx
index 6d66542380e69..0e5de30cf6479 100644
--- a/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.test.tsx
+++ b/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.test.tsx
@@ -7,6 +7,7 @@
import React from 'react';
import type { UseQueryResult } from 'react-query';
import { render, screen } from '@testing-library/react';
+import { of } from 'rxjs';
import { useKubebeatDataView } from '../../common/api/use_kubebeat_data_view';
import { Findings } from './findings';
import { TestProvider } from '../../test/test_provider';
@@ -48,9 +49,7 @@ describe(' ', () => {
(useCisKubernetesIntegration as jest.Mock).mockImplementation(() => ({
data: { item: { status: 'installed' } },
}));
- (source.fetch$ as jest.Mock).mockReturnValue({
- toPromise: () => Promise.resolve({ rawResponse: { hits: { hits: [] } } }),
- });
+ (source.fetch$ as jest.Mock).mockReturnValue(of({ rawResponse: { hits: { hits: [] } } }));
(useKubebeatDataView as jest.Mock).mockReturnValue({
status: 'success',
diff --git a/x-pack/plugins/cloud_security_posture/public/pages/findings/findings_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/findings/findings_flyout.tsx
index f53d76b82c177..65493bd493342 100644
--- a/x-pack/plugins/cloud_security_posture/public/pages/findings/findings_flyout.tsx
+++ b/x-pack/plugins/cloud_security_posture/public/pages/findings/findings_flyout.tsx
@@ -21,12 +21,15 @@ import {
EuiFlexGrid,
EuiCard,
EuiFlexGroup,
+ EuiIcon,
type PropsOf,
} from '@elastic/eui';
import { assertNever } from '@kbn/std';
import type { CspFinding } from './types';
import { CspEvaluationBadge } from '../../components/csp_evaluation_badge';
import * as TEXT from './translations';
+import cisLogoIcon from '../../assets/icons/cis_logo.svg';
+import k8sLogoIcon from '../../assets/icons/k8s_logo.svg';
const tabs = ['remediation', 'resource', 'general'] as const;
@@ -163,7 +166,17 @@ const getGeneralCards = ({ rule }: CspFinding): Card[] => [
[TEXT.SEVERITY, ''],
[TEXT.INDEX, ''],
[TEXT.RULE_EVALUATED_AT, ''],
- [TEXT.FRAMEWORK_SOURCES, ''],
+ [
+ TEXT.FRAMEWORK_SOURCES,
+
+
+
+
+
+
+
+ ,
+ ],
[TEXT.SECTION, ''],
[TEXT.PROFILE_APPLICABILITY, ''],
[TEXT.AUDIT, ''],
diff --git a/x-pack/plugins/cloud_security_posture/public/pages/findings/use_findings.ts b/x-pack/plugins/cloud_security_posture/public/pages/findings/use_findings.ts
index f9e2a59d6316c..25054747808dc 100644
--- a/x-pack/plugins/cloud_security_posture/public/pages/findings/use_findings.ts
+++ b/x-pack/plugins/cloud_security_posture/public/pages/findings/use_findings.ts
@@ -8,6 +8,7 @@ import type { Filter } from '@kbn/es-query';
import { type UseQueryResult, useQuery } from 'react-query';
import type { AggregationsAggregate, SearchResponse } from '@elastic/elasticsearch/lib/api/types';
import { number } from 'io-ts';
+import { lastValueFrom } from 'rxjs';
import { extractErrorMessage } from '../../../common/utils/helpers';
import type {
DataView,
@@ -122,7 +123,7 @@ export const useFindings = (
createFindingsSearchSource({ ...searchProps, dataView }, query)
);
- const response = await source.fetch$().toPromise();
+ const response = await lastValueFrom(source.fetch$());
return response;
},
diff --git a/x-pack/plugins/cross_cluster_replication/public/plugin.ts b/x-pack/plugins/cross_cluster_replication/public/plugin.ts
index 87b8c93119624..5699ad0980dc4 100644
--- a/x-pack/plugins/cross_cluster_replication/public/plugin.ts
+++ b/x-pack/plugins/cross_cluster_replication/public/plugin.ts
@@ -7,7 +7,7 @@
import { i18n } from '@kbn/i18n';
import { get } from 'lodash';
-import { first } from 'rxjs/operators';
+import { firstValueFrom } from 'rxjs';
import { CoreSetup, Plugin, PluginInitializerContext } from 'src/core/public';
import { PLUGIN, MANAGEMENT_ID } from '../common/constants';
@@ -75,7 +75,7 @@ export class CrossClusterReplicationPlugin implements Plugin {
// NOTE: We enable the plugin by default instead of disabling it by default because this
// creates a race condition that causes functional tests to fail on CI (see #66781).
- Promise.all([licensing.license$.pipe(first()).toPromise(), getStartServices()]).then(
+ Promise.all([firstValueFrom(licensing.license$), getStartServices()]).then(
([license, startServices]) => {
const licenseStatus = license.check(PLUGIN.ID, PLUGIN.minimumLicenseType);
const isLicenseOk = licenseStatus.state === 'valid';
diff --git a/x-pack/plugins/cross_cluster_replication/server/plugin.ts b/x-pack/plugins/cross_cluster_replication/server/plugin.ts
index 9e4a8c484964b..31c9647cad788 100644
--- a/x-pack/plugins/cross_cluster_replication/server/plugin.ts
+++ b/x-pack/plugins/cross_cluster_replication/server/plugin.ts
@@ -5,8 +5,7 @@
* 2.0.
*/
-import { Observable } from 'rxjs';
-import { first } from 'rxjs/operators';
+import { firstValueFrom, Observable } from 'rxjs';
import { CoreSetup, CoreStart, Plugin, Logger, PluginInitializerContext } from 'src/core/server';
import { IScopedClusterClient } from 'kibana/server';
@@ -58,23 +57,20 @@ export class CrossClusterReplicationServerPlugin implements Plugin {
- // remoteClusters.isUiEnabled is driven by the xpack.remote_clusters.ui.enabled setting.
- // The CCR UI depends upon the Remote Clusters UI (e.g. by cross-linking to it), so if
- // the Remote Clusters UI is disabled we can't show the CCR UI.
- const isCcrUiEnabled = config.ui.enabled && remoteClusters.isUiEnabled;
+ firstValueFrom(this.config$).then((config) => {
+ // remoteClusters.isUiEnabled is driven by the xpack.remote_clusters.ui.enabled setting.
+ // The CCR UI depends upon the Remote Clusters UI (e.g. by cross-linking to it), so if
+ // the Remote Clusters UI is disabled we can't show the CCR UI.
+ const isCcrUiEnabled = config.ui.enabled && remoteClusters.isUiEnabled;
- // If the UI isn't enabled, then we don't want to expose any CCR concepts in the UI, including
- // "follower" badges for follower indices.
- if (isCcrUiEnabled) {
- if (indexManagement.indexDataEnricher) {
- indexManagement.indexDataEnricher.add(ccrDataEnricher);
- }
+ // If the UI isn't enabled, then we don't want to expose any CCR concepts in the UI, including
+ // "follower" badges for follower indices.
+ if (isCcrUiEnabled) {
+ if (indexManagement.indexDataEnricher) {
+ indexManagement.indexDataEnricher.add(ccrDataEnricher);
}
- });
+ }
+ });
this.license.setup({
pluginName: PLUGIN.TITLE,
diff --git a/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.ts b/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.ts
index fbd7f472177cb..ba6ab57eb0ea3 100644
--- a/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.ts
+++ b/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.ts
@@ -133,10 +133,6 @@ export class SearchSessionsMgmtAPI {
) {}
public async fetchTableData(): Promise {
- interface FetchResult {
- saved_objects: object[];
- }
-
const mgmtConfig = this.config.management;
const refreshTimeout = moment.duration(mgmtConfig.refreshTimeout);
@@ -165,7 +161,7 @@ export class SearchSessionsMgmtAPI {
// fetch the search sessions before timeout triggers
try {
- const result = await race(fetch$, timeout$).toPromise();
+ const result = await race(fetch$, timeout$).toPromise();
if (result && result.saved_objects) {
const savedObjects = result.saved_objects as Array<
SavedObject
diff --git a/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.test.tsx b/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.test.tsx
index 5f5753b8858e0..a6dbe850b5e4f 100644
--- a/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.test.tsx
+++ b/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.test.tsx
@@ -12,6 +12,7 @@ import { Storage } from '../../../../../../../src/plugins/kibana_utils/public/';
import { dataPluginMock } from '../../../../../../../src/plugins/data/public/mocks';
import { createConnectedSearchSessionIndicator } from './connected_search_session_indicator';
import { BehaviorSubject } from 'rxjs';
+import { map } from 'rxjs/operators';
import {
ISessionService,
RefreshInterval,
@@ -35,7 +36,7 @@ let usageCollector: jest.Mocked;
const refreshInterval$ = new BehaviorSubject({ value: 0, pause: true });
const timeFilter = dataStart.query.timefilter.timefilter as jest.Mocked;
-timeFilter.getRefreshIntervalUpdate$.mockImplementation(() => refreshInterval$);
+timeFilter.getRefreshIntervalUpdate$.mockImplementation(() => refreshInterval$.pipe(map(() => {})));
timeFilter.getRefreshInterval.mockImplementation(() => refreshInterval$.getValue());
const disableSaveAfterSessionCompletesTimeout = 5 * 60 * 1000;
diff --git a/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.test.ts b/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.test.ts
index df2b7d964642d..207dabe7c43d9 100644
--- a/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.test.ts
+++ b/x-pack/plugins/data_enhanced/server/search/session/get_search_session_page.test.ts
@@ -245,7 +245,7 @@ describe('checkSearchSessionsByPage', () => {
test('fetching is abortable', async () => {
let i = 0;
- const abort$ = new Subject();
+ const abort$ = new Subject();
const checkFn = jest.fn().mockImplementation(() => {
if (++i === 2) {
diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx
index c44932470c7e8..eac3732006525 100644
--- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx
+++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx
@@ -189,7 +189,7 @@ export class DataVisualizerGridEmbeddable extends Embeddable<
DataVisualizerGridEmbeddableOutput
> {
private node?: HTMLElement;
- private reload$ = new Subject();
+ private reload$ = new Subject();
public readonly type: string = DATA_VISUALIZER_GRID_EMBEDDABLE_TYPE;
constructor(
diff --git a/x-pack/plugins/discover_enhanced/server/plugin.ts b/x-pack/plugins/discover_enhanced/server/plugin.ts
index d5dd32791dcd5..50751cd550419 100644
--- a/x-pack/plugins/discover_enhanced/server/plugin.ts
+++ b/x-pack/plugins/discover_enhanced/server/plugin.ts
@@ -5,8 +5,7 @@
* 2.0.
*/
-import { Observable } from 'rxjs';
-import { take } from 'rxjs/operators';
+import { firstValueFrom, Observable } from 'rxjs';
import {
CoreSetup,
CoreStart,
@@ -46,7 +45,7 @@ export class DiscoverEnhancedPlugin
},
isReady: () => true,
fetch: async () => {
- const config = await this.config$.pipe(take(1)).toPromise();
+ const config = await firstValueFrom(this.config$);
return {
exploreDataInChartActionEnabled: config.actions.exploreDataInChart.enabled,
};
diff --git a/x-pack/plugins/fleet/cypress/integration/fleet_startup.spec.ts b/x-pack/plugins/fleet/cypress/integration/fleet_startup.spec.ts
index 1505754635bcb..4f7f4378c0fc2 100644
--- a/x-pack/plugins/fleet/cypress/integration/fleet_startup.spec.ts
+++ b/x-pack/plugins/fleet/cypress/integration/fleet_startup.spec.ts
@@ -10,6 +10,7 @@ import {
ADD_AGENT_BUTTON_TOP,
AGENT_FLYOUT_CLOSE_BUTTON,
STANDALONE_TAB,
+ AGENT_POLICY_CODE_BLOCK,
} from '../screens/fleet';
import { cleanupAgentPolicies, unenrollAgent } from '../tasks/cleanup';
import { verifyPolicy, verifyAgentPackage, navigateToTab } from '../tasks/fleet';
@@ -60,12 +61,11 @@ describe('Fleet startup', () => {
cy.log('Create agent policy took: ' + (Date.now() - startTime) / 1000 + ' s');
agentPolicyId = xhr.response.body.item.id;
- cy.getBySel('agentPolicyCreateStatusCallOut').contains('Agent policy created');
-
// verify create button changed to dropdown
cy.getBySel('agentPolicyDropdown');
+
// verify agent.yml code block has new policy id
- cy.get('.euiCodeBlock__code').contains(`id: ${agentPolicyId}`);
+ cy.getBySel(AGENT_POLICY_CODE_BLOCK).contains(`id: ${agentPolicyId}`);
cy.getBySel(AGENT_FLYOUT_CLOSE_BUTTON).click();
@@ -78,7 +78,6 @@ describe('Fleet startup', () => {
it('should create Fleet Server policy', () => {
cy.getBySel('createFleetServerPolicyBtn').click();
- cy.getBySel('agentPolicyCreateStatusCallOut').contains('Agent policy created');
// verify policy is created and has fleet server and system package
verifyPolicy('Fleet Server policy 1', ['Fleet Server', 'System']);
diff --git a/x-pack/plugins/fleet/cypress/screens/fleet.ts b/x-pack/plugins/fleet/cypress/screens/fleet.ts
index 32ecdc4f5da71..ef3389b90bd5d 100644
--- a/x-pack/plugins/fleet/cypress/screens/fleet.ts
+++ b/x-pack/plugins/fleet/cypress/screens/fleet.ts
@@ -9,6 +9,7 @@ export const ADD_AGENT_BUTTON = 'addAgentButton';
export const ADD_AGENT_BUTTON_TOP = 'addAgentBtnTop';
export const CREATE_POLICY_BUTTON = 'createPolicyBtn';
export const AGENT_FLYOUT_CLOSE_BUTTON = 'euiFlyoutCloseButton';
+export const AGENT_POLICY_CODE_BLOCK = 'agentPolicyCodeBlock';
export const AGENTS_TAB = 'fleet-agents-tab';
export const AGENT_POLICIES_TAB = 'fleet-agent-policies-tab';
diff --git a/x-pack/plugins/fleet/cypress/tasks/fleet.ts b/x-pack/plugins/fleet/cypress/tasks/fleet.ts
index 304ab7445d4e4..926734503ae0c 100644
--- a/x-pack/plugins/fleet/cypress/tasks/fleet.ts
+++ b/x-pack/plugins/fleet/cypress/tasks/fleet.ts
@@ -18,7 +18,6 @@ export function createAgentPolicy() {
cy.getBySel(ADD_AGENT_BUTTON_TOP).click();
cy.getBySel(STANDALONE_TAB).click();
cy.getBySel(CREATE_POLICY_BUTTON).click();
- cy.getBySel('agentPolicyCreateStatusCallOut').contains('Agent policy created');
cy.getBySel(AGENT_FLYOUT_CLOSE_BUTTON).click();
}
diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx b/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx
index 6537bbea98c92..40e0fc5aca40d 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.tsx
@@ -11,6 +11,7 @@ import { fromKueryExpression } from '@kbn/es-query';
import type { FieldSpec } from '../../../../../../../src/plugins/data/common';
import { QueryStringInput } from '../../../../../../../src/plugins/unified_search/public';
+import type { DataView } from '../../../../../../../src/plugins/data_views/public';
import { useStartServices } from '../hooks';
import { INDEX_NAME, AGENTS_PREFIX } from '../constants';
@@ -79,12 +80,12 @@ export const SearchBar: React.FunctionComponent = ({
disableLanguageSwitcher={true}
indexPatterns={
indexPatternFields
- ? [
+ ? ([
{
title: indexPattern,
fields: indexPatternFields,
},
- ]
+ ] as DataView[])
: []
}
query={{
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx
index 8a0d8fec58f11..6fa49491b2c62 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx
@@ -10,6 +10,7 @@ import { i18n } from '@kbn/i18n';
import type { FieldSpec } from '../../../../../../../../../../../src/plugins/data/common';
import { QueryStringInput } from '../../../../../../../../../../../src/plugins/unified_search/public';
+import type { DataView } from '../../../../../../../../../../../src/plugins/data_views/public';
import { useStartServices } from '../../../../../hooks';
import {
@@ -53,12 +54,12 @@ export const LogQueryBar: React.FunctionComponent<{
disableLanguageSwitcher={true}
indexPatterns={
indexPatternFields
- ? [
+ ? ([
{
title: AGENT_LOG_INDEX_PATTERN,
fields: indexPatternFields,
},
- ]
+ ] as DataView[])
: []
}
query={{
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_requirements_page/components/fleet_server_on_prem_instructions.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_requirements_page/components/fleet_server_on_prem_instructions.tsx
index 1eef74180fdd3..93547bba36de8 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_requirements_page/components/fleet_server_on_prem_instructions.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_requirements_page/components/fleet_server_on_prem_instructions.tsx
@@ -203,7 +203,6 @@ export const FleetServerCommandStep = ({
windowsCommand={installCommand.windows}
linuxDebCommand={installCommand.deb}
linuxRpmCommand={installCommand.rpm}
- troubleshootLink={docLinks.links.fleet.troubleshooting}
isK8s={false}
/>
>
@@ -290,36 +289,16 @@ export const useFleetServerInstructions = (policyId?: string) => {
};
const AgentPolicySelectionStep = ({
- policyId,
+ selectedPolicy,
setPolicyId,
+ agentPolicies,
+ refreshAgentPolicies,
}: {
- policyId?: string;
- setPolicyId: (v: string) => void;
+ selectedPolicy?: AgentPolicy;
+ setPolicyId: (v?: string) => void;
+ agentPolicies: AgentPolicy[];
+ refreshAgentPolicies: () => void;
}): EuiStepProps => {
- const { data, resendRequest: refreshAgentPolicies } = useGetAgentPolicies({ full: true });
-
- const agentPolicies = useMemo(
- () => (data ? data.items.filter((item) => policyHasFleetServer(item)) : []),
- [data]
- );
-
- useEffect(() => {
- // Select default value
- if (agentPolicies.length && !policyId) {
- setPolicyId(agentPolicies[0].id);
- }
- }, [agentPolicies, policyId, setPolicyId]);
-
- const onChangeCallback = useCallback(
- (key: string | undefined, policy?: AgentPolicy) => {
- if (policy) {
- refreshAgentPolicies();
- }
- setPolicyId(key!);
- },
- [setPolicyId, refreshAgentPolicies]
- );
-
return {
title:
agentPolicies.length === 0
@@ -335,9 +314,11 @@ const AgentPolicySelectionStep = ({
>
),
@@ -642,9 +623,28 @@ const CompleteStep = (): EuiStepProps => {
};
};
+const findPolicyById = (policies: AgentPolicy[], id: string | undefined) => {
+ if (!id) return undefined;
+ return policies.find((p) => p.id === id);
+};
+
export const OnPremInstructions: React.FC = () => {
const { notifications } = useStartServices();
- const [policyId, setPolicyId] = useState();
+
+ const { data, resendRequest: refreshAgentPolicies } = useGetAgentPolicies({ full: true });
+
+ const agentPolicies = useMemo(
+ () => (data ? data.items.filter((item) => policyHasFleetServer(item)) : []),
+ [data]
+ );
+
+ // Select default value
+ let defaultValue = '';
+ if (agentPolicies.length) {
+ defaultValue = agentPolicies[0].id;
+ }
+ const [policyId, setPolicyId] = useState(defaultValue);
+ const selectedPolicy = findPolicyById(agentPolicies, policyId);
const {
serviceToken,
@@ -720,7 +720,12 @@ export const OnPremInstructions: React.FC = () => {
{
setIsEnrollmentFlyoutOpen(false)}
/>
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/helpers.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/helpers.tsx
index e6326eeb1ecc2..1239233b4e12d 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/helpers.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/helpers.tsx
@@ -16,7 +16,7 @@ export function getLogstashPipeline(apiKey?: string) {
ssl => true
ssl_certificate_authorities => [""]
ssl_certificate => ""
- ssl_key => ""
+ ssl_key => ""
ssl_verify_mode => "force_peer"
}
}
@@ -27,7 +27,7 @@ output {
api_key => ""
data_stream => true
ssl => true
- # cacert:
+ # cacert => ""
}
}`.replace('', apiKey || '');
}
diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/policies/package_policies.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/policies/package_policies.tsx
index 7ca852fa9b6e7..3edb60ff10a48 100644
--- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/policies/package_policies.tsx
+++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/policies/package_policies.tsx
@@ -7,11 +7,7 @@
import { stringify, parse } from 'query-string';
import React, { memo, useCallback, useEffect, useMemo, useState } from 'react';
import { Redirect, useLocation, useHistory } from 'react-router-dom';
-import type {
- CriteriaWithPagination,
- EuiStepProps,
- EuiTableFieldDataColumnType,
-} from '@elastic/eui';
+import type { CriteriaWithPagination, EuiTableFieldDataColumnType } from '@elastic/eui';
import {
EuiBasicTable,
EuiLink,
@@ -19,7 +15,6 @@ import {
EuiFlexItem,
EuiText,
EuiButton,
- EuiSpacer,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { FormattedRelative, FormattedMessage } from '@kbn/i18n-react';
@@ -31,7 +26,6 @@ import {
useUrlPagination,
useGetPackageInstallStatus,
AgentPolicyRefreshContext,
- useUIExtension,
usePackageInstallations,
useAuthz,
} from '../../../../../hooks';
@@ -103,7 +97,6 @@ export const PackagePoliciesPage = ({ name, version }: PackagePoliciesPanelProps
kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name: ${name}`,
});
const { updatableIntegrations } = usePackageInstallations();
- const agentEnrollmentFlyoutExtension = useUIExtension(name, 'agent-enrollment-flyout');
const canWriteIntegrationPolicies = useAuthz().integrations.writeIntegrationPolicies;
@@ -165,50 +158,6 @@ export const PackagePoliciesPage = ({ name, version }: PackagePoliciesPanelProps
[setPagination]
);
- const viewDataStep = useMemo(() => {
- if (agentEnrollmentFlyoutExtension) {
- return {
- title: agentEnrollmentFlyoutExtension.title,
- children: ,
- };
- }
-
- return {
- title: i18n.translate('xpack.fleet.agentEnrollment.stepViewDataTitle', {
- defaultMessage: 'View your data',
- }),
- children: (
- <>
-
-
- {i18n.translate(
- 'xpack.fleet.epm.agentEnrollment.viewDataDescription.pleaseNoteLabel',
- { defaultMessage: 'Please note' }
- )}
-
- ),
- }}
- />
-
-
-
- {i18n.translate('xpack.fleet.epm.agentEnrollment.viewDataAssetsLabel', {
- defaultMessage: 'View assets',
- })}
-
- >
- ),
- };
- }, [name, version, getHref, agentEnrollmentFlyoutExtension]);
-
const columns: Array> = useMemo(
() => [
{
@@ -323,7 +272,6 @@ export const PackagePoliciesPage = ({ name, version }: PackagePoliciesPanelProps
{
@@ -362,6 +310,11 @@ export const PackagePoliciesPage = ({ name, version }: PackagePoliciesPanelProps
);
}
+ const selectedPolicies = packageAndAgentPolicies.find(
+ ({ agentPolicy: policy }) => policy.id === flyoutOpenForPolicyId
+ );
+ const agentPolicy = selectedPolicies?.agentPolicy;
+ const packagePolicy = selectedPolicies?.packagePolicy;
return (
@@ -379,19 +332,19 @@ export const PackagePoliciesPage = ({ name, version }: PackagePoliciesPanelProps
/>
- {flyoutOpenForPolicyId && !isLoading && (
+ {flyoutOpenForPolicyId && agentPolicy && !isLoading && (
{
setFlyoutOpenForPolicyId(null);
const { addAgentToPolicyId, ...rest } = parse(search);
history.replace({ search: stringify(rest) });
}}
- agentPolicy={
- packageAndAgentPolicies.find(
- ({ agentPolicy }) => agentPolicy.id === flyoutOpenForPolicyId
- )?.agentPolicy
- }
- viewDataStep={viewDataStep}
+ agentPolicy={agentPolicy}
+ isIntegrationFlow={true}
+ installedPackagePolicy={{
+ name: packagePolicy?.package?.name || '',
+ version: packagePolicy?.package?.version || '',
+ }}
/>
)}
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_enrollment_flyout.test.mocks.ts b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_enrollment_flyout.test.mocks.ts
index 15f6437485925..408f884116e26 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_enrollment_flyout.test.mocks.ts
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_enrollment_flyout.test.mocks.ts
@@ -8,6 +8,7 @@
jest.mock('../../hooks', () => {
return {
...jest.requireActual('../../hooks'),
+ useFleetStatus: jest.fn(),
useAgentEnrollmentFlyoutData: jest.fn(),
};
});
@@ -24,6 +25,16 @@ jest.mock('../../hooks/use_request', () => {
};
});
+jest.mock('../../applications/fleet/sections/agents/hooks/use_fleet_server_unhealthy', () => {
+ const module = jest.requireActual(
+ '../../applications/fleet/sections/agents/hooks/use_fleet_server_unhealthy'
+ );
+ return {
+ ...module,
+ useFleetServerUnhealthy: jest.fn(),
+ };
+});
+
jest.mock(
'../../applications/fleet/sections/agents/agent_requirements_page/components/fleet_server_on_prem_instructions',
() => {
@@ -57,18 +68,17 @@ jest.mock('./steps', () => {
const module = jest.requireActual('./steps');
return {
...module,
- AgentPolicySelectionStep: jest.fn(),
- AgentEnrollmentKeySelectionStep: jest.fn(),
- ViewDataStep: jest.fn(),
- DownloadStep: jest.fn(),
- };
-});
-
-jest.mock('@elastic/eui', () => {
- const module = jest.requireActual('@elastic/eui');
- return {
- ...module,
- EuiSteps: 'eui-steps',
+ AgentPolicySelectionStep: jest.fn().mockReturnValue({
+ 'data-test-subj': 'agent-policy-selection-step',
+ title: 'agent-policy-selection-step',
+ }),
+ AgentEnrollmentKeySelectionStep: jest.fn().mockReturnValue({
+ 'data-test-subj': 'agent-enrollment-key-selection-step',
+ title: 'agent-enrollment-key-selection-step',
+ }),
+ DownloadStep: jest
+ .fn()
+ .mockReturnValue({ 'data-test-subj': 'download-step', title: 'download-step' }),
};
});
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_enrollment_flyout.test.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_enrollment_flyout.test.tsx
index 3629fe43969e4..7a4d1ed44c406 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_enrollment_flyout.test.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_enrollment_flyout.test.tsx
@@ -16,27 +16,23 @@ import { coreMock } from 'src/core/public/mocks';
import { KibanaContextProvider } from '../../../../../../src/plugins/kibana_react/public';
import type { AgentPolicy } from '../../../common';
-import {
- useGetSettings,
- sendGetFleetStatus,
- sendGetOneAgentPolicy,
- useGetAgents,
-} from '../../hooks/use_request';
+import { useGetSettings, sendGetOneAgentPolicy, useGetAgents } from '../../hooks/use_request';
import {
FleetStatusProvider,
ConfigContext,
useAgentEnrollmentFlyoutData,
KibanaVersionContext,
+ useFleetStatus,
} from '../../hooks';
import { useFleetServerInstructions } from '../../applications/fleet/sections/agents/agent_requirements_page/components';
-import { AgentEnrollmentKeySelectionStep, AgentPolicySelectionStep } from './steps';
+import { useFleetServerUnhealthy } from '../../applications/fleet/sections/agents/hooks/use_fleet_server_unhealthy';
-import type { Props } from '.';
+import type { FlyOutProps } from './types';
import { AgentEnrollmentFlyout } from '.';
-const TestComponent = (props: Props) => (
+const TestComponent = (props: FlyOutProps) => (
@@ -48,7 +44,7 @@ const TestComponent = (props: Props) => (
);
-const setup = async (props?: Props) => {
+const setup = async (props?: FlyOutProps) => {
const testBed = await registerTestBed(TestComponent)(props);
const { find, component } = testBed;
@@ -87,8 +83,10 @@ describe(' ', () => {
data: { item: { fleet_server_hosts: ['test'] } },
});
- (sendGetFleetStatus as jest.Mock).mockResolvedValue({
- data: { isReady: true },
+ (useFleetStatus as jest.Mock).mockReturnValue({ isReady: true });
+ (useFleetServerUnhealthy as jest.Mock).mockReturnValue({
+ isLoading: false,
+ isUnhealthy: false,
});
(sendGetOneAgentPolicy as jest.Mock).mockResolvedValue({
@@ -147,9 +145,10 @@ describe(' ', () => {
describe('managed instructions', () => {
it('uses the agent policy selection step', async () => {
const { exists } = testBed;
+
expect(exists('agentEnrollmentFlyout')).toBe(true);
- expect(AgentPolicySelectionStep).toHaveBeenCalled();
- expect(AgentEnrollmentKeySelectionStep).not.toHaveBeenCalled();
+ expect(exists('agent-policy-selection-step')).toBe(true);
+ expect(exists('agent-enrollment-key-selection-step')).toBe(false);
});
describe('with a specific policy', () => {
@@ -167,8 +166,8 @@ describe(' ', () => {
it('uses the configure enrollment step, not the agent policy selection step', () => {
const { exists } = testBed;
expect(exists('agentEnrollmentFlyout')).toBe(true);
- expect(AgentPolicySelectionStep).not.toHaveBeenCalled();
- expect(AgentEnrollmentKeySelectionStep).toHaveBeenCalled();
+ expect(exists('agent-policy-selection-step')).toBe(false);
+ expect(exists('agent-enrollment-key-selection-step')).toBe(true);
});
});
@@ -187,58 +186,21 @@ describe(' ', () => {
it('should not show fleet server instructions', () => {
const { exists } = testBed;
expect(exists('agentEnrollmentFlyout')).toBe(true);
- expect(AgentEnrollmentKeySelectionStep).toHaveBeenCalled();
- });
- });
-
- // Skipped due to implementation details in the step components. See https://github.com/elastic/kibana/issues/103894
- describe.skip('"View data" extension point', () => {
- it('shows the "View data" step when UI extension is provided', async () => {
- jest.clearAllMocks();
- await act(async () => {
- testBed = await setup({
- onClose: jest.fn(),
- viewDataStep: { title: 'View Data', children:
},
- });
- testBed.component.update();
- });
- const { exists, actions } = testBed;
- expect(exists('agentEnrollmentFlyout')).toBe(true);
- expect(exists('view-data-step')).toBe(true);
-
- jest.clearAllMocks();
- actions.goToStandaloneTab();
- expect(exists('agentEnrollmentFlyout')).toBe(true);
- expect(exists('view-data-step')).toBe(false);
- });
-
- it('does not call the "View data" step when UI extension is not provided', async () => {
- jest.clearAllMocks();
- await act(async () => {
- testBed = await setup({
- onClose: jest.fn(),
- viewDataStep: undefined,
- });
- testBed.component.update();
- });
- const { exists, actions } = testBed;
- expect(exists('agentEnrollmentFlyout')).toBe(true);
- expect(exists('view-data-step')).toBe(false);
-
- jest.clearAllMocks();
- actions.goToStandaloneTab();
- expect(exists('view-data-step')).toBe(false);
+ expect(exists('agent-enrollment-key-selection-step')).toBe(true);
});
});
});
- describe('standalone instructions', () => {
+ // Skipped due to UI changing in https://github.com/elastic/kibana/issues/125534. These tests should be rethought overall
+ // to provide value around the new flyout structure
+ describe.skip('standalone instructions', () => {
it('uses the agent policy selection step', async () => {
const { exists, actions } = testBed;
actions.goToStandaloneTab();
+
expect(exists('agentEnrollmentFlyout')).toBe(true);
- expect(AgentPolicySelectionStep).toHaveBeenCalled();
- expect(AgentEnrollmentKeySelectionStep).not.toHaveBeenCalled();
+ expect(exists('agent-policy-selection-step')).toBe(true);
+ expect(exists('agent-enrollment-key-selection-step')).toBe(false);
});
describe('with a specific policy', () => {
@@ -256,10 +218,12 @@ describe(' ', () => {
it('does not use either of the agent policy selection or enrollment key steps', () => {
const { exists, actions } = testBed;
jest.clearAllMocks();
- expect(exists('agentEnrollmentFlyout')).toBe(true);
+
actions.goToStandaloneTab();
- expect(AgentPolicySelectionStep).not.toHaveBeenCalled();
- expect(AgentEnrollmentKeySelectionStep).not.toHaveBeenCalled();
+
+ expect(exists('agentEnrollmentFlyout')).toBe(true);
+ expect(exists('agent-policy-selection-step')).toBe(false);
+ expect(exists('agent-enrollment-key-selection-step')).toBe(false);
});
});
});
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_select_create.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_select_create.tsx
index 53e8140086c2c..81ec1236920b8 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_select_create.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_select_create.tsx
@@ -5,7 +5,7 @@
* 2.0.
*/
-import React, { useState, useCallback, useEffect } from 'react';
+import React, { useState, useCallback, useEffect, useMemo } from 'react';
import type { AgentPolicyCreateState } from '../../applications/fleet/sections/agents/components';
import {
@@ -16,43 +16,60 @@ import { AgentPolicyCreateInlineForm } from '../../applications/fleet/sections/a
import type { AgentPolicy } from '../../types';
import { incrementPolicyName } from '../../services';
-import { EnrollmentStepAgentPolicy } from '.';
+import { AgentPolicySelection } from '.';
interface Props {
agentPolicies: AgentPolicy[];
+ selectedPolicy?: AgentPolicy;
+ setSelectedPolicyId: (agentPolicyId?: string) => void;
excludeFleetServer?: boolean;
- onAgentPolicyChange: (key?: string, policy?: AgentPolicy) => void;
withKeySelection: boolean;
selectedApiKeyId?: string;
onKeyChange?: (key?: string) => void;
isFleetServerPolicy?: boolean;
- policyId?: string;
+ refreshAgentPolicies: () => void;
}
export const SelectCreateAgentPolicy: React.FC = ({
agentPolicies,
excludeFleetServer,
- onAgentPolicyChange,
+ setSelectedPolicyId,
+ selectedPolicy,
withKeySelection,
selectedApiKeyId,
onKeyChange,
isFleetServerPolicy,
- policyId,
+ refreshAgentPolicies,
}) => {
- const [showCreatePolicy, setShowCreatePolicy] = useState(agentPolicies.length === 0);
+ const regularAgentPolicies = useMemo(() => {
+ return agentPolicies.filter(
+ (policy) =>
+ policy && !policy.is_managed && (!excludeFleetServer || !policy.is_default_fleet_server)
+ );
+ }, [agentPolicies, excludeFleetServer]);
+
+ const onAgentPolicyChange = useCallback(
+ async (key?: string, policy?: AgentPolicy) => {
+ if (policy) {
+ refreshAgentPolicies();
+ }
+ },
+ [refreshAgentPolicies]
+ );
+ const [showCreatePolicy, setShowCreatePolicy] = useState(regularAgentPolicies.length === 0);
const [createState, setCreateState] = useState({
status: CREATE_STATUS.INITIAL,
});
- const [newName, setNewName] = useState(incrementPolicyName(agentPolicies, isFleetServerPolicy));
-
- const [selectedAgentPolicy, setSelectedAgentPolicy] = useState(policyId);
+ const [newName, setNewName] = useState(
+ incrementPolicyName(regularAgentPolicies, isFleetServerPolicy)
+ );
useEffect(() => {
- setShowCreatePolicy(agentPolicies.length === 0);
- setNewName(incrementPolicyName(agentPolicies, isFleetServerPolicy));
- }, [agentPolicies, isFleetServerPolicy]);
+ setShowCreatePolicy(regularAgentPolicies.length === 0);
+ setNewName(incrementPolicyName(regularAgentPolicies, isFleetServerPolicy));
+ }, [regularAgentPolicies, isFleetServerPolicy]);
const onAgentPolicyCreated = useCallback(
async (policy: AgentPolicy | null, errorMessage?: JSX.Element) => {
@@ -65,9 +82,9 @@ export const SelectCreateAgentPolicy: React.FC = ({
if (onAgentPolicyChange) {
onAgentPolicyChange(policy.id, policy!);
}
- setSelectedAgentPolicy(policy.id);
+ setSelectedPolicyId(policy.id);
},
- [onAgentPolicyChange]
+ [setSelectedPolicyId, onAgentPolicyChange]
);
const onClickCreatePolicy = () => {
@@ -87,15 +104,15 @@ export const SelectCreateAgentPolicy: React.FC = ({
agentPolicyName={newName}
/>
) : (
-
)}
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_selection.test.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_selection.test.tsx
index b84d101fdef5f..c5a6076308525 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_selection.test.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_selection.test.tsx
@@ -13,7 +13,7 @@ import { createFleetTestRendererMock } from '../../mock';
import type { AgentPolicy } from '../../types';
-import { EnrollmentStepAgentPolicy } from '.';
+import { AgentPolicySelection } from '.';
describe('step select agent policy', () => {
let testRenderer: TestRenderer;
@@ -21,10 +21,11 @@ describe('step select agent policy', () => {
let agentPolicies: AgentPolicy[] = [];
const render = () =>
(renderResult = testRenderer.render(
- {
testRenderer = createFleetTestRendererMock();
});
- test('should not select agent policy by default if multiple exists', async () => {
+ test('should select first agent policy by default if multiple exists', async () => {
agentPolicies = [
{ id: 'policy-1', name: 'Policy 1' } as AgentPolicy,
{ id: 'policy-2', name: 'Policy 2' } as AgentPolicy,
@@ -45,7 +46,7 @@ describe('step select agent policy', () => {
await act(async () => {
const select = renderResult.container.querySelector('[data-test-subj="agentPolicyDropdown"]');
- expect((select as any)?.value).toEqual('');
+ expect((select as any)?.value).toEqual('policy-1');
expect(renderResult.getAllByRole('option').length).toBe(2);
});
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_selection.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_selection.tsx
index 3227308d93b9c..63737adb5caea 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_selection.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_selection.tsx
@@ -5,7 +5,7 @@
* 2.0.
*/
-import React, { useState, useEffect } from 'react';
+import React, { useEffect } from 'react';
import styled from 'styled-components';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
@@ -34,10 +34,10 @@ const AgentPolicyFormRow = styled(EuiFormRow)`
type Props = {
agentPolicies: AgentPolicy[];
- onAgentPolicyChange: (key?: string, policy?: AgentPolicy) => void;
+ selectedPolicy?: AgentPolicy;
+ setSelectedPolicyId: (agentPolicyId?: string) => void;
excludeFleetServer?: boolean;
onClickCreatePolicy: () => void;
- selectedAgentPolicy?: string;
isFleetServerPolicy?: boolean;
} & (
| {
@@ -63,44 +63,33 @@ const resolveAgentId = (
return selectedAgentPolicyId;
};
-export const EnrollmentStepAgentPolicy: React.FC = (props) => {
+export const AgentPolicySelection: React.FC = (props) => {
const {
agentPolicies,
- onAgentPolicyChange,
+ selectedPolicy,
+ setSelectedPolicyId,
excludeFleetServer,
onClickCreatePolicy,
- selectedAgentPolicy,
isFleetServerPolicy,
} = props;
- const [selectedAgentPolicyId, setSelectedAgentPolicyId] = useState(
- () => resolveAgentId(agentPolicies, undefined) // no agent id selected yet
- );
-
const hasFleetAllPrivileges = useAuthz().fleet.all;
- useEffect(
- function triggerOnAgentPolicyChangeEffect() {
- if (onAgentPolicyChange) {
- onAgentPolicyChange(selectedAgentPolicyId);
- }
- },
- [selectedAgentPolicyId, onAgentPolicyChange]
- );
-
useEffect(
function useDefaultAgentPolicyEffect() {
- const resolvedId = resolveAgentId(agentPolicies, selectedAgentPolicyId);
- if (resolvedId !== selectedAgentPolicyId) {
- setSelectedAgentPolicyId(resolvedId);
+ const resolvedId = resolveAgentId(agentPolicies, selectedPolicy?.id);
+ // find AgentPolicy
+ if (resolvedId !== selectedPolicy?.id) {
+ setSelectedPolicyId(resolvedId);
}
},
- [agentPolicies, selectedAgentPolicyId]
+ [agentPolicies, setSelectedPolicyId, selectedPolicy]
);
- useEffect(() => {
- if (selectedAgentPolicy) setSelectedAgentPolicyId(selectedAgentPolicy);
- }, [selectedAgentPolicy]);
+ const onChangeCallback = (event: React.ChangeEvent) => {
+ const { value } = event.target;
+ setSelectedPolicyId(value);
+ };
return (
<>
@@ -154,24 +143,24 @@ export const EnrollmentStepAgentPolicy: React.FC = (props) => {
value: agentPolicy.id,
text: agentPolicy.name,
}))}
- value={selectedAgentPolicyId}
- onChange={(e) => setSelectedAgentPolicyId(e.target.value)}
+ value={selectedPolicy?.id}
+ onChange={onChangeCallback}
aria-label={i18n.translate(
'xpack.fleet.enrollmentStepAgentPolicy.policySelectAriaLabel',
{
defaultMessage: 'Agent policy',
}
)}
- hasNoInitialSelection={!selectedAgentPolicyId}
+ hasNoInitialSelection={!selectedPolicy?.id}
data-test-subj="agentPolicyDropdown"
- isInvalid={!selectedAgentPolicyId}
+ isInvalid={!selectedPolicy?.id}
/>
- {selectedAgentPolicyId && !isFleetServerPolicy && (
+ {selectedPolicy?.id && !isFleetServerPolicy && (
<>
>
@@ -183,7 +172,7 @@ export const EnrollmentStepAgentPolicy: React.FC = (props) => {
selectedApiKeyId={props.selectedApiKeyId}
onKeyChange={props.onKeyChange}
initialAuthenticationSettingsOpen={!props.selectedApiKeyId}
- agentPolicyId={selectedAgentPolicyId}
+ agentPolicyId={selectedPolicy?.id}
/>
>
)}
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/confirm_agent_enrollment.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/confirm_agent_enrollment.tsx
index dd39f8700e4fb..63292713daa93 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/confirm_agent_enrollment.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/confirm_agent_enrollment.tsx
@@ -5,29 +5,99 @@
* 2.0.
*/
-import React from 'react';
-import { EuiCallOut, EuiButton } from '@elastic/eui';
+import React, { useEffect, useRef, useState } from 'react';
+import { EuiCallOut, EuiButton, EuiText, EuiLink } from '@elastic/eui';
+import { FormattedMessage } from '@kbn/i18n-react';
import { i18n } from '@kbn/i18n';
-import { useGetAgentStatus } from '../../hooks';
+import { sendGetAgents, useLink, useStartServices } from '../../hooks';
import { AGENTS_PREFIX } from '../../constants';
interface Props {
- policyId: string;
- onClickViewAgents: () => void;
+ policyId?: string;
+ troubleshootLink: string;
+ onClickViewAgents?: () => void;
+ agentCount: number;
}
+const POLLING_INTERVAL_MS = 5 * 1000; // 5 sec
+
+/**
+ * Hook for finding agents enrolled since component was rendered. Should be
+ * used by parent component to power rendering
+ * @param policyId
+ * @returns agentIds
+ */
+export const usePollingAgentCount = (policyId: string) => {
+ const [agentIds, setAgentIds] = useState([]);
+
+ const timeout = useRef(undefined);
+
+ useEffect(() => {
+ let isAborted = false;
+
+ const poll = () => {
+ timeout.current = window.setTimeout(async () => {
+ const request = await sendGetAgents({
+ kuery: `${AGENTS_PREFIX}.policy_id:"${policyId}" and ${AGENTS_PREFIX}.enrolled_at >= now-10m`,
+ showInactive: false,
+ });
+
+ const newAgentIds = request.data?.items.map((i) => i.id) ?? agentIds;
+ if (newAgentIds.some((id) => !agentIds.includes(id))) {
+ setAgentIds(newAgentIds);
+ }
+ if (!isAborted) {
+ poll();
+ }
+ }, POLLING_INTERVAL_MS);
+ };
+
+ poll();
+
+ if (isAborted || agentIds.length > 0) clearTimeout(timeout.current);
+
+ return () => {
+ isAborted = true;
+ };
+ }, [agentIds, policyId]);
+ return agentIds;
+};
+
export const ConfirmAgentEnrollment: React.FunctionComponent = ({
policyId,
+ troubleshootLink,
onClickViewAgents,
+ agentCount,
}) => {
- // Check the agents enrolled in the last 10 minutes
- const enrolledAt = 'now-10m';
- const kuery = `${AGENTS_PREFIX}.enrolled_at >= "${enrolledAt}"`;
- const agentStatusRequest = useGetAgentStatus({ kuery, policyId });
- const agentsCount = agentStatusRequest.data?.results?.total;
-
- if (!agentsCount) {
- return null;
+ const { getHref } = useLink();
+ const { application } = useStartServices();
+
+ const onButtonClick = () => {
+ if (onClickViewAgents) onClickViewAgents();
+ const href = getHref('agent_list');
+ application.navigateToUrl(href);
+ };
+
+ if (!policyId || agentCount === 0) {
+ return (
+
+
+
+
+ ),
+ }}
+ />
+
+ );
}
return (
@@ -35,16 +105,16 @@ export const ConfirmAgentEnrollment: React.FunctionComponent = ({
data-test-subj="ConfirmAgentEnrollmentCallOut"
title={i18n.translate('xpack.fleet.agentEnrollment.confirmation.title', {
defaultMessage:
- '{agentsCount} {agentsCount, plural, one {agent has} other {agents have}} been enrolled.',
+ '{agentCount} {agentCount, plural, one {agent has} other {agents have}} been enrolled.',
values: {
- agentsCount,
+ agentCount,
},
})}
color="success"
iconType="check"
>
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/confirm_incoming_data.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/confirm_incoming_data.tsx
index 85817fa9850a0..b74129e443e45 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/confirm_incoming_data.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/confirm_incoming_data.tsx
@@ -9,67 +9,74 @@ import React from 'react';
import { EuiCallOut, EuiText, EuiSpacer, EuiButton } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
-import type { InstalledIntegrationPolicy } from '../../hooks';
-import { useGetAgentIncomingData } from '../../hooks';
+import type { InstalledIntegrationPolicy } from './use_get_agent_incoming_data';
+import { useGetAgentIncomingData, usePollingIncomingData } from './use_get_agent_incoming_data';
+
interface Props {
- agentsIds: string[];
+ agentIds: string[];
installedPolicy?: InstalledIntegrationPolicy;
+ agentDataConfirmed: boolean;
+ setAgentDataConfirmed: (v: boolean) => void;
}
export const ConfirmIncomingData: React.FunctionComponent = ({
- agentsIds,
+ agentIds,
installedPolicy,
+ agentDataConfirmed,
+ setAgentDataConfirmed,
}) => {
- const { enrolledAgents, numAgentsWithData, isLoading, linkButton } = useGetAgentIncomingData(
- agentsIds,
+ const { incomingData, isLoading } = usePollingIncomingData(agentIds);
+
+ const { enrolledAgents, numAgentsWithData, linkButton, message } = useGetAgentIncomingData(
+ incomingData,
installedPolicy
);
+ if (!isLoading && enrolledAgents > 0 && numAgentsWithData > 0) {
+ setAgentDataConfirmed(true);
+ }
+ if (!agentDataConfirmed) {
+ return (
+
+ {i18n.translate('xpack.fleet.confirmIncomingData.loading', {
+ defaultMessage:
+ 'It may take a few minutes for data to arrive in Elasticsearch. If the system is not generating data, it may help to generate some to ensure data is being collected correctly. If you’re having trouble, see our troubleshooting guide. You may close this dialog and check later by viewing our integration assets.',
+ })}
+
+ );
+ }
+
return (
<>
- {isLoading ? (
-
- {i18n.translate('xpack.fleet.confirmIncomingData.loading', {
- defaultMessage:
- 'It may take a few minutes for data to arrive in Elasticsearch. If the system is not generating data, it may help to generate some to ensure data is being collected correctly. If you’re having trouble, see our troubleshooting guide. You may close this dialog and check later by viewing our integration assets.',
- })}
-
- ) : (
+
+ {installedPolicy && (
<>
-
-
- {i18n.translate('xpack.fleet.confirmIncomingData.subtitle', {
- defaultMessage: 'Your agent is enrolled successfully and your data is received.',
- })}
-
+ {message}
+
+
+ {linkButton.text}
+
>
)}
-
-
- {installedPolicy && (
-
- {linkButton.text}
-
- )}
>
);
};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/default_missing_requirements.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/default_missing_requirements.tsx
new file mode 100644
index 0000000000000..d7ae0a441d66f
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/default_missing_requirements.tsx
@@ -0,0 +1,35 @@
+/*
+ * 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 { EuiLink } from '@elastic/eui';
+import { FormattedMessage } from '@kbn/i18n-react';
+
+import { useLink } from '../../hooks';
+
+export const DefaultMissingRequirements = () => {
+ const { getHref } = useLink();
+
+ return (
+ <>
+
+
+
+ ),
+ }}
+ />
+ >
+ );
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/hooks.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/hooks.tsx
index d7b48b5a961c2..159de12ff578c 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/hooks.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/hooks.tsx
@@ -9,8 +9,11 @@ import { i18n } from '@kbn/i18n';
import type { PackagePolicy, AgentPolicy } from '../../types';
import { sendGetOneAgentPolicy, useStartServices } from '../../hooks';
+
import { FLEET_KUBERNETES_PACKAGE } from '../../../common';
+import type { K8sMode } from './types';
+
export function useAgentPolicyWithPackagePolicies(policyId?: string) {
const [agentPolicyWithPackagePolicies, setAgentPolicy] = useState(null);
const core = useStartServices();
@@ -41,9 +44,7 @@ export function useAgentPolicyWithPackagePolicies(policyId?: string) {
}
export function useIsK8sPolicy(agentPolicy?: AgentPolicy) {
- const [isK8s, setIsK8s] = useState<'IS_LOADING' | 'IS_KUBERNETES' | 'IS_NOT_KUBERNETES'>(
- 'IS_LOADING'
- );
+ const [isK8s, setIsK8s] = useState('IS_LOADING');
useEffect(() => {
async function checkifK8s() {
if (!agentPolicy) {
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/index.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/index.tsx
index ed4cc15aec196..0adcfb26aa9c2 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/index.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/index.tsx
@@ -24,43 +24,42 @@ import { FormattedMessage } from '@kbn/i18n-react';
import { useGetSettings, useFleetStatus, useAgentEnrollmentFlyoutData } from '../../hooks';
import { FLEET_SERVER_PACKAGE } from '../../constants';
-import type { PackagePolicy } from '../../types';
+import type { PackagePolicy, AgentPolicy } from '../../types';
import { Loading } from '..';
-import { ManagedInstructions } from './managed_instructions';
-import { StandaloneInstructions } from './standalone_instructions';
+import { Instructions } from './instructions';
import { MissingFleetServerHostCallout } from './missing_fleet_server_host_callout';
-import type { BaseProps } from './types';
-import { useIsK8sPolicy, useAgentPolicyWithPackagePolicies } from './hooks';
-
-type FlyoutMode = 'managed' | 'standalone';
+import type { FlyOutProps, SelectionType, FlyoutMode } from './types';
-export interface Props extends BaseProps {
- onClose: () => void;
- defaultMode?: FlyoutMode;
-}
+import { useIsK8sPolicy, useAgentPolicyWithPackagePolicies } from './hooks';
export * from './agent_policy_selection';
export * from './agent_policy_select_create';
-export * from './managed_instructions';
-export * from './standalone_instructions';
+export * from './instructions';
export * from './steps';
-export const AgentEnrollmentFlyout: React.FunctionComponent = ({
+export const AgentEnrollmentFlyout: React.FunctionComponent = ({
onClose,
agentPolicy,
- viewDataStep,
defaultMode = 'managed',
+ isIntegrationFlow,
+ installedPackagePolicy,
}) => {
- const [mode, setMode] = useState(defaultMode);
+ const findPolicyById = (policies: AgentPolicy[], id: string | undefined) => {
+ if (!id) return undefined;
+ return policies.find((p) => p.id === id);
+ };
const settings = useGetSettings();
+ const fleetStatus = useFleetStatus();
const fleetServerHosts = settings.data?.item?.fleet_server_hosts || [];
- const fleetStatus = useFleetStatus();
- const [policyId, setSelectedPolicyId] = useState(agentPolicy?.id);
+ const [selectedPolicyId, setSelectedPolicyId] = useState(agentPolicy?.id);
const [isFleetServerPolicySelected, setIsFleetServerPolicySelected] = useState(false);
+ const [selectedApiKeyId, setSelectedAPIKeyId] = useState();
+ const [mode, setMode] = useState(defaultMode);
+ const [selectionType, setSelectionType] = useState('tabs');
const {
agentPolicies,
@@ -68,11 +67,19 @@ export const AgentEnrollmentFlyout: React.FunctionComponent = ({
isLoadingAgentPolicies,
refreshAgentPolicies,
} = useAgentEnrollmentFlyoutData();
- const { agentPolicyWithPackagePolicies } = useAgentPolicyWithPackagePolicies(policyId);
+
+ const { agentPolicyWithPackagePolicies } = useAgentPolicyWithPackagePolicies(selectedPolicyId);
+
+ const selectedPolicy = agentPolicyWithPackagePolicies
+ ? agentPolicyWithPackagePolicies
+ : findPolicyById(agentPolicies, selectedPolicyId);
+
+ const hasNoFleetServerHost = fleetStatus.isReady && fleetServerHosts.length === 0;
+
useEffect(() => {
- if (agentPolicyWithPackagePolicies && setIsFleetServerPolicySelected) {
+ if (selectedPolicy) {
if (
- (agentPolicyWithPackagePolicies.package_policies as PackagePolicy[]).some(
+ (selectedPolicy.package_policies as PackagePolicy[]).some(
(packagePolicy) => packagePolicy.package?.name === FLEET_SERVER_PACKAGE
)
) {
@@ -81,11 +88,9 @@ export const AgentEnrollmentFlyout: React.FunctionComponent = ({
setIsFleetServerPolicySelected(false);
}
}
- }, [agentPolicyWithPackagePolicies]);
+ }, [selectedPolicy, isFleetServerPolicySelected]);
- const { isK8s } = useIsK8sPolicy(
- agentPolicyWithPackagePolicies ? agentPolicyWithPackagePolicies : undefined
- );
+ const { isK8s } = useIsK8sPolicy(selectedPolicy ? selectedPolicy : undefined);
const isLoadingInitialRequest = settings.isLoading && settings.isInitialRequest;
@@ -107,61 +112,63 @@ export const AgentEnrollmentFlyout: React.FunctionComponent = ({
defaultMessage="Add Elastic Agents to your hosts to collect data and send it to the Elastic Stack."
/>
-
-
- setMode('managed')}
- >
-
-
- setMode('standalone')}
- >
-
-
-
+ {selectionType === 'tabs' ? (
+ <>
+
+
+ setMode('managed')}
+ >
+
+
+ setMode('standalone')}
+ >
+
+
+
+ >
+ ) : null}
-
) : undefined
}
>
{isLoadingInitialAgentPolicies ? (
-
- ) : mode === 'managed' ? (
-
+ ) : (
+
- ) : (
-
)}
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/installation_message.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/installation_message.tsx
new file mode 100644
index 0000000000000..6bb178921c2a9
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/installation_message.tsx
@@ -0,0 +1,59 @@
+/*
+ * 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, { useMemo } from 'react';
+import { EuiText, EuiLink } from '@elastic/eui';
+import { FormattedMessage } from '@kbn/i18n-react';
+
+import semverMajor from 'semver/functions/major';
+import semverMinor from 'semver/functions/minor';
+import semverPatch from 'semver/functions/patch';
+
+import { useKibanaVersion } from '../../hooks';
+
+export const InstallationMessage: React.FunctionComponent = () => {
+ const kibanaVersion = useKibanaVersion();
+ const kibanaVersionURLString = useMemo(
+ () =>
+ `${semverMajor(kibanaVersion)}-${semverMinor(kibanaVersion)}-${semverPatch(kibanaVersion)}`,
+ [kibanaVersion]
+ );
+
+ return (
+
+
+
+
+ ),
+ installationLink: (
+
+
+
+ ),
+ }}
+ />
+
+ );
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/instructions.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/instructions.tsx
new file mode 100644
index 0000000000000..32ac217c353e8
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/instructions.tsx
@@ -0,0 +1,126 @@
+/*
+ * 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, { useMemo } from 'react';
+import { EuiText, EuiSpacer } from '@elastic/eui';
+import { FormattedMessage } from '@kbn/i18n-react';
+
+import { useFleetStatus, useGetAgents } from '../../hooks';
+
+import { FleetServerRequirementPage } from '../../applications/fleet/sections/agents/agent_requirements_page';
+
+import { policyHasFleetServer } from '../../applications/fleet/sections/agents/services/has_fleet_server';
+
+import { FLEET_SERVER_PACKAGE } from '../../constants';
+
+import { useFleetServerUnhealthy } from '../../applications/fleet/sections/agents/hooks/use_fleet_server_unhealthy';
+
+import { Loading } from '..';
+
+import type { InstructionProps } from './types';
+
+import { ManagedSteps, StandaloneSteps, FleetServerSteps } from './steps';
+import { DefaultMissingRequirements } from './default_missing_requirements';
+
+export const Instructions = (props: InstructionProps) => {
+ const {
+ agentPolicies,
+ isFleetServerPolicySelected,
+ settings,
+ isLoadingAgentPolicies,
+ setSelectionType,
+ mode,
+ isIntegrationFlow,
+ } = props;
+ const fleetStatus = useFleetStatus();
+ const { isUnhealthy: isFleetServerUnhealthy } = useFleetServerUnhealthy();
+
+ const { data: agents, isLoading: isLoadingAgents } = useGetAgents({
+ page: 1,
+ perPage: 1000,
+ showInactive: false,
+ });
+
+ const fleetServers = useMemo(() => {
+ const fleetServerAgentPolicies: string[] = agentPolicies
+ .filter((pol) => policyHasFleetServer(pol))
+ .map((pol) => pol.id);
+ return (agents?.items ?? []).filter((agent) =>
+ fleetServerAgentPolicies.includes(agent.policy_id ?? '')
+ );
+ }, [agents, agentPolicies]);
+
+ const fleetServerHosts = useMemo(() => {
+ return settings?.fleet_server_hosts || [];
+ }, [settings]);
+
+ const hasNoFleetServerHost = fleetStatus.isReady && fleetServerHosts.length === 0;
+
+ const showAgentEnrollment =
+ fleetStatus.isReady &&
+ !isFleetServerUnhealthy &&
+ fleetServers.length > 0 &&
+ fleetServerHosts.length > 0;
+
+ const showFleetServerEnrollment =
+ fleetServers.length === 0 ||
+ isFleetServerUnhealthy ||
+ (fleetStatus.missingRequirements ?? []).some((r) => r === FLEET_SERVER_PACKAGE);
+
+ if (!isIntegrationFlow && showAgentEnrollment) {
+ setSelectionType('radio');
+ } else {
+ setSelectionType('tabs');
+ }
+
+ if (isLoadingAgents || isLoadingAgentPolicies) return ;
+
+ if (hasNoFleetServerHost) {
+ return null;
+ }
+
+ if (mode === 'managed') {
+ if (showFleetServerEnrollment) {
+ return ;
+ } else if (showAgentEnrollment) {
+ return (
+ <>
+
+
+
+
+ {isFleetServerPolicySelected ? (
+
+ ) : (
+
+ )}
+ >
+ );
+ }
+ return ;
+ } else {
+ return ;
+ }
+};
+
+const StandaloneInstructions = (props: InstructionProps) => {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/managed_instructions.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/managed_instructions.tsx
deleted file mode 100644
index 1e2141ea3827f..0000000000000
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/managed_instructions.tsx
+++ /dev/null
@@ -1,206 +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; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import React, { useState, useMemo } from 'react';
-import { EuiSteps, EuiLink, EuiText, EuiSpacer } from '@elastic/eui';
-import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
-import { i18n } from '@kbn/i18n';
-import { FormattedMessage } from '@kbn/i18n-react';
-
-import { useGetOneEnrollmentAPIKey, useLink, useFleetStatus, useGetAgents } from '../../hooks';
-
-import { ManualInstructions } from '../../components/enrollment_instructions';
-import {
- deploymentModeStep,
- ServiceTokenStep,
- FleetServerCommandStep,
- useFleetServerInstructions,
- addFleetServerHostStep,
-} from '../../applications/fleet/sections/agents/agent_requirements_page/components';
-import { FleetServerRequirementPage } from '../../applications/fleet/sections/agents/agent_requirements_page';
-
-import { policyHasFleetServer } from '../../applications/fleet/sections/agents/services/has_fleet_server';
-
-import { FLEET_SERVER_PACKAGE } from '../../constants';
-
-import { DownloadStep, AgentPolicySelectionStep, AgentEnrollmentKeySelectionStep } from './steps';
-import type { InstructionProps } from './types';
-
-const DefaultMissingRequirements = () => {
- const { getHref } = useLink();
-
- return (
- <>
-
-
-
- ),
- }}
- />
- >
- );
-};
-
-const FleetServerMissingRequirements = () => {
- return ;
-};
-
-export const ManagedInstructions = React.memo(
- ({
- agentPolicy,
- agentPolicies,
- viewDataStep,
- setSelectedPolicyId,
- policyId,
- isFleetServerPolicySelected,
- isK8s,
- settings,
- refreshAgentPolicies,
- isLoadingAgentPolicies,
- }) => {
- const fleetStatus = useFleetStatus();
- const [selectedApiKeyId, setSelectedAPIKeyId] = useState();
- const apiKey = useGetOneEnrollmentAPIKey(selectedApiKeyId);
- const fleetServerInstructions = useFleetServerInstructions(apiKey?.data?.item?.policy_id);
-
- const { data: agents, isLoading: isLoadingAgents } = useGetAgents({
- page: 1,
- perPage: 1000,
- showInactive: false,
- });
-
- const fleetServers = useMemo(() => {
- const fleetServerAgentPolicies: string[] = agentPolicies
- .filter((pol) => policyHasFleetServer(pol))
- .map((pol) => pol.id);
- return (agents?.items ?? []).filter((agent) =>
- fleetServerAgentPolicies.includes(agent.policy_id ?? '')
- );
- }, [agents, agentPolicies]);
-
- const fleetServerSteps = useMemo(() => {
- const {
- serviceToken,
- getServiceToken,
- isLoadingServiceToken,
- installCommand,
- platform,
- setPlatform,
- deploymentMode,
- setDeploymentMode,
- addFleetServerHost,
- } = fleetServerInstructions;
-
- return [
- deploymentModeStep({ deploymentMode, setDeploymentMode }),
- addFleetServerHostStep({ addFleetServerHost }),
- ServiceTokenStep({ serviceToken, getServiceToken, isLoadingServiceToken }),
- FleetServerCommandStep({ serviceToken, installCommand, platform, setPlatform }),
- ];
- }, [fleetServerInstructions]);
-
- const enrolToken = apiKey.data ? apiKey.data.item.api_key : '';
-
- const steps = useMemo(() => {
- const fleetServerHosts = settings?.fleet_server_hosts || [];
- const baseSteps: EuiContainedStepProps[] = [
- !agentPolicy
- ? AgentPolicySelectionStep({
- agentPolicies,
- selectedApiKeyId,
- setSelectedAPIKeyId,
- setSelectedPolicyId,
- refreshAgentPolicies,
- })
- : AgentEnrollmentKeySelectionStep({ agentPolicy, selectedApiKeyId, setSelectedAPIKeyId }),
- DownloadStep(isFleetServerPolicySelected || false, isK8s || '', enrolToken || ''),
- ];
- if (isFleetServerPolicySelected) {
- baseSteps.push(...fleetServerSteps);
- } else {
- baseSteps.push({
- title: i18n.translate('xpack.fleet.agentEnrollment.stepEnrollAndRunAgentTitle', {
- defaultMessage: 'Enroll and start the Elastic Agent',
- }),
- children: selectedApiKeyId && apiKey.data && (
-
- ),
- });
- }
-
- if (viewDataStep) {
- baseSteps.push({ 'data-test-subj': 'view-data-step', ...viewDataStep });
- }
-
- return baseSteps;
- }, [
- agentPolicy,
- selectedApiKeyId,
- setSelectedPolicyId,
- setSelectedAPIKeyId,
- agentPolicies,
- refreshAgentPolicies,
- apiKey.data,
- fleetServerSteps,
- isFleetServerPolicySelected,
- settings?.fleet_server_hosts,
- viewDataStep,
- enrolToken,
- isK8s,
- policyId,
- ]);
-
- if (fleetStatus.isReady && settings?.fleet_server_hosts.length === 0) {
- return null;
- }
-
- if (
- fleetStatus.isReady &&
- (isLoadingAgents || isLoadingAgentPolicies || fleetServers.length > 0)
- ) {
- return (
- <>
-
-
-
-
-
- >
- );
- }
-
- const showFleetMissingRequirements =
- fleetServers.length === 0 ||
- (fleetStatus.missingRequirements ?? []).some((r) => r === FLEET_SERVER_PACKAGE);
-
- return (
- <>
- {showFleetMissingRequirements ? (
-
- ) : (
-
- )}
- >
- );
- }
-);
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/standalone_instructions.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/standalone_instructions.tsx
deleted file mode 100644
index 4df0431252135..0000000000000
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/standalone_instructions.tsx
+++ /dev/null
@@ -1,281 +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; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import React, { useState, useEffect } from 'react';
-import {
- EuiSteps,
- EuiText,
- EuiSpacer,
- EuiButton,
- EuiCode,
- EuiFlexItem,
- EuiFlexGroup,
- EuiCodeBlock,
- EuiCopy,
- EuiLink,
-} from '@elastic/eui';
-import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
-import { i18n } from '@kbn/i18n';
-import { FormattedMessage } from '@kbn/i18n-react';
-import { safeDump } from 'js-yaml';
-
-import {
- useStartServices,
- useLink,
- sendGetOneAgentPolicyFull,
- useKibanaVersion,
-} from '../../hooks';
-import { fullAgentPolicyToYaml, agentPolicyRouteService } from '../../services';
-
-import { PlatformSelector } from '../enrollment_instructions/manual/platform_selector';
-
-import { DownloadStep, AgentPolicySelectionStep } from './steps';
-import type { InstructionProps } from './types';
-import { useIsK8sPolicy, useAgentPolicyWithPackagePolicies } from './hooks';
-
-export const StandaloneInstructions = React.memo(
- ({ agentPolicy, agentPolicies, refreshAgentPolicies }) => {
- const { getHref } = useLink();
- const core = useStartServices();
- const { notifications } = core;
-
- const [selectedPolicyId, setSelectedPolicyId] = useState(agentPolicy?.id);
- const [fullAgentPolicy, setFullAgentPolicy] = useState();
- const [yaml, setYaml] = useState('');
- const kibanaVersion = useKibanaVersion();
-
- const { agentPolicyWithPackagePolicies } = useAgentPolicyWithPackagePolicies(selectedPolicyId);
- const { isK8s } = useIsK8sPolicy(
- agentPolicyWithPackagePolicies ? agentPolicyWithPackagePolicies : undefined
- );
-
- const KUBERNETES_RUN_INSTRUCTIONS = 'kubectl apply -f elastic-agent-standalone-kubernetes.yaml';
-
- const STANDALONE_RUN_INSTRUCTIONS_LINUX = `curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-${kibanaVersion}-linux-x86_64.tar.gz
-tar xzvf elastic-agent-${kibanaVersion}-linux-x86_64.tar.gz
-sudo ./elastic-agent install`;
-
- const STANDALONE_RUN_INSTRUCTIONS_MAC = `curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-${kibanaVersion}-darwin-x86_64.tar.gz
-tar xzvf elastic-agent-${kibanaVersion}-darwin-x86_64.tar.gz
-sudo ./elastic-agent install`;
-
- const STANDALONE_RUN_INSTRUCTIONS_WINDOWS = `wget https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-${kibanaVersion}-windows-x86_64.zip -OutFile elastic-agent-${kibanaVersion}-windows-x86_64.zip
-Expand-Archive .\\elastic-agent-${kibanaVersion}-windows-x86_64.zip
-.\\elastic-agent.exe install`;
-
- const linuxDebCommand = `curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-${kibanaVersion}-amd64.deb
-sudo dpkg -i elastic-agent-${kibanaVersion}-amd64.deb \nsudo systemctl enable elastic-agent \nsudo systemctl start elastic-agent`;
-
- const linuxRpmCommand = `curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-${kibanaVersion}-x86_64.rpm
-sudo rpm -vi elastic-agent-${kibanaVersion}-x86_64.rpm \nsudo systemctl enable elastic-agent \nsudo systemctl start elastic-agent`;
-
- const linuxCommand =
- isK8s === 'IS_KUBERNETES' ? KUBERNETES_RUN_INSTRUCTIONS : STANDALONE_RUN_INSTRUCTIONS_LINUX;
- const macCommand =
- isK8s === 'IS_KUBERNETES' ? KUBERNETES_RUN_INSTRUCTIONS : STANDALONE_RUN_INSTRUCTIONS_MAC;
- const windowsCommand =
- isK8s === 'IS_KUBERNETES' ? KUBERNETES_RUN_INSTRUCTIONS : STANDALONE_RUN_INSTRUCTIONS_WINDOWS;
-
- const { docLinks } = useStartServices();
-
- useEffect(() => {
- async function fetchFullPolicy() {
- try {
- if (!selectedPolicyId) {
- return;
- }
- let query = { standalone: true, kubernetes: false };
- if (isK8s === 'IS_KUBERNETES') {
- query = { standalone: true, kubernetes: true };
- }
- const res = await sendGetOneAgentPolicyFull(selectedPolicyId, query);
- if (res.error) {
- throw res.error;
- }
-
- if (!res.data) {
- throw new Error('No data while fetching full agent policy');
- }
- setFullAgentPolicy(res.data.item);
- } catch (error) {
- notifications.toasts.addError(error, {
- title: 'Error',
- });
- }
- }
- if (isK8s !== 'IS_LOADING') {
- fetchFullPolicy();
- }
- }, [selectedPolicyId, notifications.toasts, isK8s, core.http.basePath]);
-
- useEffect(() => {
- if (isK8s === 'IS_KUBERNETES') {
- if (typeof fullAgentPolicy === 'object') {
- return;
- }
- setYaml(fullAgentPolicy);
- } else {
- if (typeof fullAgentPolicy === 'string') {
- return;
- }
- setYaml(fullAgentPolicyToYaml(fullAgentPolicy, safeDump));
- }
- }, [fullAgentPolicy, isK8s]);
-
- const policyMsg =
- isK8s === 'IS_KUBERNETES' ? (
- ES_USERNAME,
- ESPasswordVariable: ES_PASSWORD ,
- }}
- />
- ) : (
- elastic-agent.yml,
- ESUsernameVariable: ES_USERNAME ,
- ESPasswordVariable: ES_PASSWORD ,
- outputSection: outputs ,
- }}
- />
- );
-
- let downloadLink = '';
- if (selectedPolicyId) {
- downloadLink =
- isK8s === 'IS_KUBERNETES'
- ? core.http.basePath.prepend(
- `${agentPolicyRouteService.getInfoFullDownloadPath(
- selectedPolicyId
- )}?kubernetes=true&standalone=true`
- )
- : core.http.basePath.prepend(
- `${agentPolicyRouteService.getInfoFullDownloadPath(selectedPolicyId)}?standalone=true`
- );
- }
-
- const downloadMsg =
- isK8s === 'IS_KUBERNETES' ? (
-
- ) : (
-
- );
-
- const steps = [
- !agentPolicy
- ? AgentPolicySelectionStep({
- agentPolicies,
- setSelectedPolicyId,
- excludeFleetServer: true,
- refreshAgentPolicies,
- })
- : undefined,
- DownloadStep(false),
- {
- title: i18n.translate('xpack.fleet.agentEnrollment.stepConfigureAgentTitle', {
- defaultMessage: 'Configure the agent',
- }),
- children: (
- <>
-
- <>{policyMsg}>
-
-
-
-
- {(copy) => (
-
-
-
- )}
-
-
-
-
- <>{downloadMsg}>
-
-
-
-
-
- {yaml}
-
-
- >
- ),
- },
- {
- title: i18n.translate('xpack.fleet.agentEnrollment.stepRunAgentTitle', {
- defaultMessage: 'Start the agent',
- }),
- children: (
-
- ),
- },
- {
- title: i18n.translate('xpack.fleet.agentEnrollment.stepCheckForDataTitle', {
- defaultMessage: 'Check for data',
- }),
- children: (
- <>
-
-
-
-
- ),
- }}
- />
-
- >
- ),
- },
- ].filter(Boolean) as EuiContainedStepProps[];
-
- return (
- <>
-
-
-
-
-
- >
- );
- }
-);
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/agent_enrollment_confirmation_step.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/agent_enrollment_confirmation_step.tsx
new file mode 100644
index 0000000000000..743bf1a7fa578
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/agent_enrollment_confirmation_step.tsx
@@ -0,0 +1,41 @@
+/*
+ * 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 { i18n } from '@kbn/i18n';
+
+import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
+
+import { ConfirmAgentEnrollment } from '../confirm_agent_enrollment';
+
+export const AgentEnrollmentConfirmationStep = ({
+ selectedPolicyId,
+ troubleshootLink,
+ onClickViewAgents,
+ agentCount,
+}: {
+ selectedPolicyId?: string;
+ troubleshootLink: string;
+ onClickViewAgents: () => void;
+ agentCount: number;
+}): EuiContainedStepProps => {
+ return {
+ title: i18n.translate('xpack.fleet.agentEnrollment.stepAgentEnrollmentConfirmation', {
+ defaultMessage: 'Confirm agent Enrollment',
+ }),
+ children: (
+
+ ),
+ status: !agentCount ? 'incomplete' : 'complete',
+ };
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/agent_enrollment_key_selection_step.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/agent_enrollment_key_selection_step.tsx
new file mode 100644
index 0000000000000..bc67e834f1d22
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/agent_enrollment_key_selection_step.tsx
@@ -0,0 +1,53 @@
+/*
+ * 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 { EuiText, EuiSpacer } from '@elastic/eui';
+import { FormattedMessage } from '@kbn/i18n-react';
+import { i18n } from '@kbn/i18n';
+
+import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
+
+import type { AgentPolicy } from '../../../types';
+
+import { AdvancedAgentAuthenticationSettings } from '../advanced_agent_authentication_settings';
+
+export const AgentEnrollmentKeySelectionStep = ({
+ selectedPolicy,
+ selectedApiKeyId,
+ setSelectedAPIKeyId,
+}: {
+ selectedPolicy?: AgentPolicy;
+ selectedApiKeyId?: string;
+ setSelectedAPIKeyId: (key?: string) => void;
+}): EuiContainedStepProps => {
+ return {
+ title: i18n.translate('xpack.fleet.agentEnrollment.stepConfigurePolicyAuthenticationTitle', {
+ defaultMessage: 'Select enrollment token',
+ }),
+ children: (
+ <>
+
+ {selectedPolicy?.name},
+ }}
+ />
+
+
+
+ >
+ ),
+ };
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/agent_policy_selection_step.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/agent_policy_selection_step.tsx
new file mode 100644
index 0000000000000..c26bfd3f0e2b8
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/agent_policy_selection_step.tsx
@@ -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 React from 'react';
+
+import { i18n } from '@kbn/i18n';
+
+import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
+
+import type { AgentPolicy } from '../../../types';
+
+import { SelectCreateAgentPolicy } from '../agent_policy_select_create';
+
+export const AgentPolicySelectionStep = ({
+ agentPolicies,
+ selectedPolicy,
+ setSelectedPolicyId,
+ selectedApiKeyId,
+ setSelectedAPIKeyId,
+ excludeFleetServer,
+ refreshAgentPolicies,
+}: {
+ agentPolicies: AgentPolicy[];
+ selectedPolicy?: AgentPolicy;
+ setSelectedPolicyId: (agentPolicyId?: string) => void;
+ selectedApiKeyId?: string;
+ setSelectedAPIKeyId?: (key?: string) => void;
+ excludeFleetServer?: boolean;
+ refreshAgentPolicies: () => void;
+}): EuiContainedStepProps => {
+ return {
+ title: i18n.translate('xpack.fleet.agentEnrollment.stepChooseAgentPolicyTitle', {
+ defaultMessage: 'What type of host are you adding?',
+ }),
+ children: (
+ <>
+
+ >
+ ),
+ };
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/compute_steps.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/compute_steps.tsx
new file mode 100644
index 0000000000000..cae508299f259
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/compute_steps.tsx
@@ -0,0 +1,369 @@
+/*
+ * 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, { useState, useMemo, useEffect } from 'react';
+
+import { EuiSteps } from '@elastic/eui';
+import { safeDump } from 'js-yaml';
+
+import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
+
+import type { FullAgentPolicy } from '../../../../common/types/models/agent_policy';
+
+import { fullAgentPolicyToYaml, agentPolicyRouteService } from '../../../services';
+
+import { StandaloneInstructions } from '../../enrollment_instructions/standalone';
+
+import {
+ useGetOneEnrollmentAPIKey,
+ useStartServices,
+ useKibanaVersion,
+ sendGetOneAgentPolicyFull,
+} from '../../../hooks';
+
+import {
+ deploymentModeStep,
+ ServiceTokenStep,
+ FleetServerCommandStep,
+ useFleetServerInstructions,
+ addFleetServerHostStep,
+} from '../../../applications/fleet/sections/agents/agent_requirements_page/components';
+
+import type { InstructionProps } from '../types';
+import { usePollingAgentCount } from '../confirm_agent_enrollment';
+
+import {
+ InstallationModeSelectionStep,
+ AgentEnrollmentKeySelectionStep,
+ AgentPolicySelectionStep,
+ InstallStandaloneAgentStep,
+ ConfigureStandaloneAgentStep,
+ AgentEnrollmentConfirmationStep,
+ InstallManagedAgentStep,
+ IncomingDataConfirmationStep,
+} from '.';
+
+export const StandaloneSteps: React.FunctionComponent = ({
+ agentPolicy,
+ agentPolicies,
+ selectedPolicy,
+ setSelectedPolicyId,
+ refreshAgentPolicies,
+ mode,
+ setMode,
+ selectionType,
+ selectedApiKeyId,
+ setSelectedAPIKeyId,
+ isK8s,
+}) => {
+ const core = useStartServices();
+ const { notifications } = core;
+ const [fullAgentPolicy, setFullAgentPolicy] = useState();
+ const [yaml, setYaml] = useState('');
+ const kibanaVersion = useKibanaVersion();
+
+ let downloadLink = '';
+
+ if (selectedPolicy?.id) {
+ downloadLink =
+ isK8s === 'IS_KUBERNETES'
+ ? core.http.basePath.prepend(
+ `${agentPolicyRouteService.getInfoFullDownloadPath(
+ selectedPolicy?.id
+ )}?kubernetes=true&standalone=true`
+ )
+ : core.http.basePath.prepend(
+ `${agentPolicyRouteService.getInfoFullDownloadPath(selectedPolicy?.id)}?standalone=true`
+ );
+ }
+
+ useEffect(() => {
+ async function fetchFullPolicy() {
+ try {
+ if (!selectedPolicy?.id) {
+ return;
+ }
+ let query = { standalone: true, kubernetes: false };
+ if (isK8s === 'IS_KUBERNETES') {
+ query = { standalone: true, kubernetes: true };
+ }
+ const res = await sendGetOneAgentPolicyFull(selectedPolicy?.id, query);
+ if (res.error) {
+ throw res.error;
+ }
+
+ if (!res.data) {
+ throw new Error('No data while fetching full agent policy');
+ }
+ setFullAgentPolicy(res.data.item);
+ } catch (error) {
+ notifications.toasts.addError(error, {
+ title: 'Error',
+ });
+ }
+ }
+ if (isK8s !== 'IS_LOADING') {
+ fetchFullPolicy();
+ }
+ }, [selectedPolicy, notifications.toasts, isK8s, core.http.basePath]);
+
+ useEffect(() => {
+ if (!fullAgentPolicy) {
+ return;
+ }
+ if (isK8s === 'IS_KUBERNETES') {
+ if (typeof fullAgentPolicy === 'object') {
+ return;
+ }
+ setYaml(fullAgentPolicy);
+ } else {
+ if (typeof fullAgentPolicy === 'string') {
+ return;
+ }
+ setYaml(fullAgentPolicyToYaml(fullAgentPolicy, safeDump));
+ }
+ }, [fullAgentPolicy, isK8s]);
+
+ const instructionsSteps = useMemo(() => {
+ const standaloneInstallCommands = StandaloneInstructions(kibanaVersion, isK8s);
+
+ const steps: EuiContainedStepProps[] = !agentPolicy
+ ? [
+ AgentPolicySelectionStep({
+ selectedPolicy,
+ agentPolicies,
+ selectedApiKeyId,
+ setSelectedAPIKeyId,
+ setSelectedPolicyId,
+ refreshAgentPolicies,
+ }),
+ ]
+ : [];
+
+ if (selectionType === 'radio') {
+ steps.push(InstallationModeSelectionStep({ mode, setMode }));
+ }
+
+ steps.push(
+ ConfigureStandaloneAgentStep({
+ isK8s,
+ selectedPolicyId: selectedPolicy?.id,
+ yaml,
+ downloadLink,
+ })
+ );
+
+ steps.push(
+ InstallStandaloneAgentStep({
+ installCommand: standaloneInstallCommands,
+ isK8s,
+ selectedPolicyId: selectedPolicy?.id,
+ })
+ );
+
+ return steps;
+ }, [
+ kibanaVersion,
+ isK8s,
+ agentPolicy,
+ selectedPolicy,
+ agentPolicies,
+ selectedApiKeyId,
+ setSelectedAPIKeyId,
+ setSelectedPolicyId,
+ refreshAgentPolicies,
+ selectionType,
+ yaml,
+ downloadLink,
+ mode,
+ setMode,
+ ]);
+
+ return ;
+};
+
+export const ManagedSteps: React.FunctionComponent = ({
+ agentPolicy,
+ agentPolicies,
+ selectedPolicy,
+ setSelectedPolicyId,
+ selectedApiKeyId,
+ setSelectedAPIKeyId,
+ settings,
+ refreshAgentPolicies,
+ mode,
+ setMode,
+ selectionType,
+ onClickViewAgents,
+ isK8s,
+ installedPackagePolicy,
+}) => {
+ const core = useStartServices();
+ const { docLinks } = core;
+ const link = docLinks.links.fleet.troubleshooting;
+ const [agentDataConfirmed, setAgentDataConfirmed] = useState(false);
+
+ const apiKey = useGetOneEnrollmentAPIKey(selectedApiKeyId);
+ const apiKeyData = apiKey?.data;
+ const enrolledAgentIds = usePollingAgentCount(selectedPolicy?.id || '');
+
+ const fleetServerHosts = useMemo(() => {
+ return settings?.fleet_server_hosts || [];
+ }, [settings]);
+
+ const instructionsSteps = useMemo(() => {
+ const steps: EuiContainedStepProps[] = !agentPolicy
+ ? [
+ AgentPolicySelectionStep({
+ selectedPolicy,
+ agentPolicies,
+ selectedApiKeyId,
+ setSelectedAPIKeyId,
+ setSelectedPolicyId,
+ refreshAgentPolicies,
+ }),
+ ]
+ : [
+ AgentEnrollmentKeySelectionStep({
+ selectedPolicy,
+ selectedApiKeyId,
+ setSelectedAPIKeyId,
+ }),
+ ];
+
+ if (selectionType === 'radio') {
+ steps.push(InstallationModeSelectionStep({ mode, setMode }));
+ }
+
+ steps.push(
+ InstallManagedAgentStep({
+ apiKeyData,
+ selectedApiKeyId,
+ fleetServerHosts,
+ isK8s,
+ })
+ );
+ if (selectedApiKeyId && apiKeyData) {
+ steps.push(
+ AgentEnrollmentConfirmationStep({
+ selectedPolicyId: selectedPolicy?.id,
+ onClickViewAgents,
+ troubleshootLink: link,
+ agentCount: enrolledAgentIds.length,
+ })
+ );
+ }
+ if (selectedPolicy && enrolledAgentIds.length) {
+ steps.push(
+ IncomingDataConfirmationStep({
+ agentIds: enrolledAgentIds,
+ agentDataConfirmed,
+ setAgentDataConfirmed,
+ installedPolicy: installedPackagePolicy,
+ })
+ );
+ }
+
+ return steps;
+ }, [
+ agentPolicy,
+ selectedPolicy,
+ agentPolicies,
+ selectedApiKeyId,
+ setSelectedAPIKeyId,
+ setSelectedPolicyId,
+ refreshAgentPolicies,
+ selectionType,
+ apiKeyData,
+ fleetServerHosts,
+ isK8s,
+ mode,
+ setMode,
+ onClickViewAgents,
+ link,
+ enrolledAgentIds,
+ agentDataConfirmed,
+ installedPackagePolicy,
+ ]);
+
+ return ;
+};
+
+export const FleetServerSteps: React.FunctionComponent = ({
+ agentPolicy,
+ agentPolicies,
+ selectedPolicy,
+ setSelectedPolicyId,
+ refreshAgentPolicies,
+}) => {
+ const [selectedApiKeyId, setSelectedAPIKeyId] = useState();
+
+ const apiKey = useGetOneEnrollmentAPIKey(selectedApiKeyId);
+ const apiKeyData = apiKey?.data;
+ const fleetServerInstructions = useFleetServerInstructions(apiKeyData?.item?.policy_id);
+
+ const fleetServerSteps = useMemo(() => {
+ const {
+ serviceToken,
+ getServiceToken,
+ isLoadingServiceToken,
+ installCommand: managedInstallCommands,
+ platform,
+ setPlatform,
+ deploymentMode,
+ setDeploymentMode,
+ addFleetServerHost,
+ } = fleetServerInstructions;
+
+ return [
+ deploymentModeStep({ deploymentMode, setDeploymentMode }),
+ addFleetServerHostStep({ addFleetServerHost }),
+ ServiceTokenStep({ serviceToken, getServiceToken, isLoadingServiceToken }),
+ FleetServerCommandStep({
+ serviceToken,
+ installCommand: managedInstallCommands,
+ platform,
+ setPlatform,
+ }),
+ ];
+ }, [fleetServerInstructions]);
+
+ const instructionsSteps = useMemo(() => {
+ const steps: EuiContainedStepProps[] = !agentPolicy
+ ? [
+ AgentPolicySelectionStep({
+ selectedPolicy,
+ agentPolicies,
+ selectedApiKeyId,
+ setSelectedAPIKeyId,
+ setSelectedPolicyId,
+ refreshAgentPolicies,
+ }),
+ ]
+ : [
+ AgentEnrollmentKeySelectionStep({
+ selectedPolicy,
+ selectedApiKeyId,
+ setSelectedAPIKeyId,
+ }),
+ ];
+
+ steps.push(...fleetServerSteps);
+
+ return steps;
+ }, [
+ agentPolicy,
+ selectedPolicy,
+ agentPolicies,
+ selectedApiKeyId,
+ setSelectedPolicyId,
+ refreshAgentPolicies,
+ fleetServerSteps,
+ ]);
+
+ return ;
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/configure_standalone_agent_step.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/configure_standalone_agent_step.tsx
new file mode 100644
index 0000000000000..c0b64a88e19cc
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/configure_standalone_agent_step.tsx
@@ -0,0 +1,116 @@
+/*
+ * 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 {
+ EuiText,
+ EuiButton,
+ EuiSpacer,
+ EuiCode,
+ EuiFlexGroup,
+ EuiFlexItem,
+ EuiCopy,
+ EuiCodeBlock,
+} from '@elastic/eui';
+import { FormattedMessage } from '@kbn/i18n-react';
+import { i18n } from '@kbn/i18n';
+
+import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
+
+import type { K8sMode } from '../types';
+
+export const ConfigureStandaloneAgentStep = ({
+ isK8s,
+ selectedPolicyId,
+ yaml,
+ downloadLink,
+}: {
+ isK8s?: K8sMode;
+ selectedPolicyId?: string;
+ yaml: string;
+ downloadLink: string;
+}): EuiContainedStepProps => {
+ const policyMsg =
+ isK8s === 'IS_KUBERNETES' ? (
+ ES_USERNAME,
+ ESPasswordVariable: ES_PASSWORD ,
+ }}
+ />
+ ) : (
+ elastic-agent.yml,
+ ESUsernameVariable: ES_USERNAME ,
+ ESPasswordVariable: ES_PASSWORD ,
+ outputSection: outputs ,
+ }}
+ />
+ );
+
+ const downloadMsg =
+ isK8s === 'IS_KUBERNETES' ? (
+
+ ) : (
+
+ );
+ return {
+ title: i18n.translate('xpack.fleet.agentEnrollment.stepConfigureAgentTitle', {
+ defaultMessage: 'Configure the agent',
+ }),
+ children: (
+ <>
+ {!yaml ? null : (
+
+ <>{policyMsg}>
+
+
+
+
+ {(copy) => (
+
+
+
+ )}
+
+
+
+
+ <>{downloadMsg}>
+
+
+
+
+
+ {yaml}
+
+
+ )}
+ >
+ ),
+ status: !yaml ? 'loading' : 'incomplete',
+ };
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/download_step.tsx
similarity index 67%
rename from x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps.tsx
rename to x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/download_step.tsx
index 54c449f74cc60..5004fc0a6444e 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/download_step.tsx
@@ -5,7 +5,7 @@
* 2.0.
*/
-import React, { useCallback, useEffect, useMemo, useState } from 'react';
+import React, { useEffect, useMemo, useState } from 'react';
import {
EuiText,
EuiButton,
@@ -22,21 +22,19 @@ import semverMajor from 'semver/functions/major';
import semverMinor from 'semver/functions/minor';
import semverPatch from 'semver/functions/patch';
-import type { AgentPolicy } from '../../types';
-import { useGetSettings, useKibanaVersion, useStartServices } from '../../hooks';
+import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
-import { agentPolicyRouteService } from '../../../common';
+import { useGetSettings, useKibanaVersion, useStartServices } from '../../../hooks';
-import { sendGetK8sManifest } from '../../hooks/use_request/k8s';
+import { agentPolicyRouteService } from '../../../../common';
-import { AdvancedAgentAuthenticationSettings } from './advanced_agent_authentication_settings';
-import { SelectCreateAgentPolicy } from './agent_policy_select_create';
+import { sendGetK8sManifest } from '../../../hooks/use_request/k8s';
export const DownloadStep = (
hasFleetServer: boolean,
isK8s?: string,
enrollmentAPIKey?: string
-) => {
+): EuiContainedStepProps => {
const kibanaVersion = useKibanaVersion();
const core = useStartServices();
const settings = useGetSettings();
@@ -49,6 +47,7 @@ export const DownloadStep = (
const [yaml, setYaml] = useState();
const [fleetServer, setFleetServer] = useState();
+
useEffect(() => {
async function fetchK8sManifest() {
try {
@@ -132,6 +131,7 @@ export const DownloadStep = (
) : (
''
);
+
const k8sCopyYaml =
isK8s === 'IS_KUBERNETES' ? (
@@ -147,6 +147,7 @@ export const DownloadStep = (
) : (
''
);
+
const k8sYaml =
isK8s === 'IS_KUBERNETES' ? (
@@ -202,96 +203,3 @@ export const DownloadStep = (
),
};
};
-
-export const AgentPolicySelectionStep = ({
- agentPolicies,
- setSelectedPolicyId,
- selectedApiKeyId,
- setSelectedAPIKeyId,
- excludeFleetServer,
- refreshAgentPolicies,
-}: {
- agentPolicies: AgentPolicy[];
- setSelectedPolicyId?: (policyId?: string) => void;
- selectedApiKeyId?: string;
- setSelectedAPIKeyId?: (key?: string) => void;
- excludeFleetServer?: boolean;
- refreshAgentPolicies: () => void;
-}) => {
- // storing the created agent policy id as the child component is being recreated
- const [policyId, setPolicyId] = useState(undefined);
- const regularAgentPolicies = useMemo(() => {
- return agentPolicies.filter(
- (policy) =>
- policy && !policy.is_managed && (!excludeFleetServer || !policy.is_default_fleet_server)
- );
- }, [agentPolicies, excludeFleetServer]);
-
- const onAgentPolicyChange = useCallback(
- async (key?: string, policy?: AgentPolicy) => {
- if (policy) {
- refreshAgentPolicies();
- }
- if (setSelectedPolicyId) {
- setSelectedPolicyId(key);
- setPolicyId(key);
- }
- },
- [setSelectedPolicyId, refreshAgentPolicies]
- );
-
- return {
- title: i18n.translate('xpack.fleet.agentEnrollment.stepChooseAgentPolicyTitle', {
- defaultMessage: 'What type of host are you adding?',
- }),
- children: (
- <>
-
- >
- ),
- };
-};
-
-export const AgentEnrollmentKeySelectionStep = ({
- agentPolicy,
- selectedApiKeyId,
- setSelectedAPIKeyId,
-}: {
- agentPolicy: AgentPolicy;
- selectedApiKeyId?: string;
- setSelectedAPIKeyId: (key?: string) => void;
-}) => {
- return {
- title: i18n.translate('xpack.fleet.agentEnrollment.stepConfigurePolicyAuthenticationTitle', {
- defaultMessage: 'Select enrollment token',
- }),
- children: (
- <>
-
- {agentPolicy.name},
- }}
- />
-
-
-
- >
- ),
- };
-};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/incoming_data_confirmation_step.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/incoming_data_confirmation_step.tsx
new file mode 100644
index 0000000000000..76cd1c07f4630
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/incoming_data_confirmation_step.tsx
@@ -0,0 +1,47 @@
+/*
+ * 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 { i18n } from '@kbn/i18n';
+
+import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
+
+import type { InstalledIntegrationPolicy } from '../use_get_agent_incoming_data';
+
+import { ConfirmIncomingData } from '../confirm_incoming_data';
+
+export const IncomingDataConfirmationStep = ({
+ agentIds,
+ installedPolicy,
+ agentDataConfirmed,
+ setAgentDataConfirmed,
+}: {
+ agentIds: string[];
+ installedPolicy?: InstalledIntegrationPolicy;
+ agentDataConfirmed: boolean;
+ setAgentDataConfirmed: (v: boolean) => void;
+}): EuiContainedStepProps => {
+ return {
+ title: !agentDataConfirmed
+ ? i18n.translate('xpack.fleet.agentEnrollment.stepConfirmIncomingData', {
+ defaultMessage: 'Confirm incoming data',
+ })
+ : i18n.translate('xpack.fleet.agentEnrollment.stepConfirmIncomingData.completed', {
+ defaultMessage: 'Incoming data confirmed',
+ }),
+ children: (
+
+ ),
+ status: !agentDataConfirmed ? 'loading' : 'complete',
+ };
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/index.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/index.tsx
new file mode 100644
index 0000000000000..53af0e66f7811
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/index.tsx
@@ -0,0 +1,17 @@
+/*
+ * 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.
+ */
+
+export * from './agent_enrollment_confirmation_step';
+export * from './agent_enrollment_key_selection_step';
+export * from './agent_policy_selection_step';
+export * from './configure_standalone_agent_step';
+export * from './download_step';
+export * from './incoming_data_confirmation_step';
+export * from './install_managed_agent_step';
+export * from './install_standalone_agent_step';
+export * from './installation_mode_selection_step';
+export * from './compute_steps';
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/install_managed_agent_step.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/install_managed_agent_step.tsx
new file mode 100644
index 0000000000000..03e8c305a6fcb
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/install_managed_agent_step.tsx
@@ -0,0 +1,41 @@
+/*
+ * 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 { i18n } from '@kbn/i18n';
+
+import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
+
+import type { GetOneEnrollmentAPIKeyResponse } from '../../../../common/types/rest_spec/enrollment_api_key';
+
+import { ManualInstructions } from '../../enrollment_instructions';
+
+export const InstallManagedAgentStep = ({
+ selectedApiKeyId,
+ apiKeyData,
+ fleetServerHosts,
+ isK8s,
+}: {
+ fleetServerHosts: string[];
+ selectedApiKeyId?: string;
+ apiKeyData?: GetOneEnrollmentAPIKeyResponse | null;
+ isK8s?: string;
+}): EuiContainedStepProps => {
+ return {
+ title: i18n.translate('xpack.fleet.agentEnrollment.stepEnrollAndRunAgentTitle', {
+ defaultMessage: 'Install Elastic Agent on your host',
+ }),
+ children: selectedApiKeyId && apiKeyData && (
+
+ ),
+ };
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/install_standalone_agent_step.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/install_standalone_agent_step.tsx
new file mode 100644
index 0000000000000..f1c6ce88233db
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/install_standalone_agent_step.tsx
@@ -0,0 +1,47 @@
+/*
+ * 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 { i18n } from '@kbn/i18n';
+
+import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
+
+import type { CommandsByPlatform } from '../../../applications/fleet/sections/agents/agent_requirements_page/components/install_command_utils';
+import { PlatformSelector } from '../../enrollment_instructions/manual/platform_selector';
+
+import { InstallationMessage } from '../installation_message';
+
+import type { K8sMode } from '../types';
+
+export const InstallStandaloneAgentStep = ({
+ installCommand,
+ isK8s,
+ selectedPolicyId,
+}: {
+ installCommand: CommandsByPlatform;
+ isK8s?: K8sMode;
+ selectedPolicyId?: string;
+}): EuiContainedStepProps => {
+ return {
+ title: i18n.translate('xpack.fleet.agentEnrollment.stepEnrollAndRunAgentTitle', {
+ defaultMessage: 'Install Elastic Agent on your host',
+ }),
+ children: (
+ <>
+
+
+ >
+ ),
+ };
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/installation_mode_selection_step.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/installation_mode_selection_step.tsx
new file mode 100644
index 0000000000000..3864599fb6a94
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/installation_mode_selection_step.tsx
@@ -0,0 +1,88 @@
+/*
+ * 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 { EuiRadioGroup } from '@elastic/eui';
+import { FormattedMessage } from '@kbn/i18n-react';
+import { i18n } from '@kbn/i18n';
+
+import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
+
+import type { FlyoutMode } from '../types';
+
+export const InstallationModeSelectionStep = ({
+ mode,
+ setMode,
+}: {
+ mode: FlyoutMode;
+ setMode: (v: FlyoutMode) => void;
+}): EuiContainedStepProps => {
+ // radio id has to be unique so that the component works even if appears twice in DOM
+ const radioSuffix = 'installation_mode_agent_selection';
+
+ const onChangeCallback = (v: string) => {
+ const value = v.split('_')[0];
+ if (value === 'managed' || value === 'standalone') {
+ setMode(value);
+ }
+ };
+
+ return {
+ title: i18n.translate('xpack.fleet.agentEnrollment.stepInstallType', {
+ defaultMessage: 'Enroll in Fleet?',
+ }),
+ children: (
+
+
+
+ ),
+ }}
+ />
+ ),
+ },
+ {
+ id: `standalone_${radioSuffix}`,
+ label: (
+
+
+
+ ),
+ }}
+ />
+ ),
+ },
+ ]}
+ idSelected={`${mode}_${radioSuffix}`}
+ onChange={onChangeCallback}
+ name={`radio group ${radioSuffix}`}
+ />
+ ),
+ };
+};
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/types.ts b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/types.ts
index edb34e876e7c8..0c2d9361aa3d6 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/types.ts
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/types.ts
@@ -5,35 +5,50 @@
* 2.0.
*/
-import type { EuiStepProps } from '@elastic/eui';
-
import type { AgentPolicy, Settings } from '../../types';
+import type { InstalledIntegrationPolicy } from './use_get_agent_incoming_data';
+
+export type K8sMode = 'IS_LOADING' | 'IS_KUBERNETES' | 'IS_NOT_KUBERNETES';
+export type FlyoutMode = 'managed' | 'standalone';
+export type SelectionType = 'tabs' | 'radio';
+
export interface BaseProps {
/**
* The user selected policy to be used. If this value is `undefined` a value must be provided for `agentPolicies`.
*/
agentPolicy?: AgentPolicy;
- /**
- * There is a step in the agent enrollment process that allows users to see the data from an integration represented in the UI
- * in some way. This is an area for consumers to render a button and text explaining how data can be viewed.
- */
- viewDataStep?: EuiStepProps;
-
settings?: Settings;
- setSelectedPolicyId?: (policyId?: string) => void;
+ isFleetServerPolicySelected?: boolean;
- policyId?: string;
+ isK8s?: K8sMode;
- isFleetServerPolicySelected?: boolean;
+ /**
+ * There is a step in the agent enrollment process that allows users to see the data from an integration represented in the UI
+ * in some way. This is an area for consumers to render a button and text explaining how data can be viewed.
+ */
+ isIntegrationFlow?: boolean;
+ installedPackagePolicy?: InstalledIntegrationPolicy;
+}
- isK8s?: string;
+export interface FlyOutProps extends BaseProps {
+ onClose: () => void;
+ defaultMode?: FlyoutMode;
}
export interface InstructionProps extends BaseProps {
agentPolicies: AgentPolicy[];
+ selectedPolicy: AgentPolicy | undefined;
+ setSelectedPolicyId: (policyId?: string) => void;
refreshAgentPolicies: () => void;
isLoadingAgentPolicies?: boolean;
+ onClickViewAgents: () => void;
+ mode: FlyoutMode;
+ setMode: (v: FlyoutMode) => void;
+ selectionType: SelectionType;
+ setSelectionType: (type: SelectionType) => void;
+ selectedApiKeyId?: string;
+ setSelectedAPIKeyId: (key?: string) => void;
}
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/use_get_agent_incoming_data.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/use_get_agent_incoming_data.tsx
new file mode 100644
index 0000000000000..4922a7d10c78c
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/use_get_agent_incoming_data.tsx
@@ -0,0 +1,121 @@
+/*
+ * 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 { useEffect, useState, useMemo, useRef } from 'react';
+import { i18n } from '@kbn/i18n';
+
+import type { IncomingDataList } from '../../../common/types/rest_spec/agent';
+
+import { sendGetAgentIncomingData, useLink } from '../../hooks/index';
+
+export interface InstalledIntegrationPolicy {
+ name: string;
+ version: string;
+}
+
+export const useGetAgentIncomingData = (
+ incomingData: IncomingDataList[],
+ installedPolicy?: InstalledIntegrationPolicy
+) => {
+ const enrolledAgents = useMemo(() => incomingData.length, [incomingData.length]);
+ const numAgentsWithData = useMemo(
+ () =>
+ incomingData.reduce((acc, curr) => {
+ const agentData = Object.values(curr)[0];
+ return !!agentData.data ? acc + 1 : acc;
+ }, 0),
+ [incomingData]
+ );
+ const { getAbsolutePath, getHref } = useLink();
+
+ let href;
+ let text;
+ let message;
+
+ if (!installedPolicy) {
+ href = '';
+ text = '';
+ message = '';
+ }
+
+ if (installedPolicy?.name === 'apm') {
+ href = getAbsolutePath('/app/home#/tutorial/apm');
+ text = i18n.translate('xpack.fleet.confirmIncomingData.installApmAgentButtonText', {
+ defaultMessage: 'Install APM Agent',
+ });
+ message = i18n.translate('xpack.fleet.confirmIncomingData.APMsubtitle', {
+ defaultMessage:
+ 'Next, install APM agents on your hosts to collect data from your applications and services.',
+ });
+ } else {
+ href = getHref('integration_details_assets', {
+ pkgkey: `${installedPolicy?.name}-${installedPolicy?.version}`,
+ });
+ text = i18n.translate('xpack.fleet.confirmIncomingData.viewDataAssetsButtonText', {
+ defaultMessage: 'View assets',
+ });
+ message = i18n.translate('xpack.fleet.confirmIncomingData.subtitle', {
+ defaultMessage:
+ 'Next, analyze your data using our integration assets such as curated views, dashboards and more.',
+ });
+ }
+ const linkButton = { href, text };
+
+ return {
+ enrolledAgents,
+ numAgentsWithData,
+ linkButton,
+ message,
+ };
+};
+
+/**
+ * Hook for polling incoming data for the selected agent policy.
+ * @param agentIds
+ * @returns incomingData, isLoading
+ */
+const POLLING_INTERVAL_MS = 5 * 1000; // 5 sec
+
+export const usePollingIncomingData = (agentsIds: string[]) => {
+ const timeout = useRef(undefined);
+ const [incomingData, setIncomingData] = useState([]);
+ const [isLoading, setIsLoading] = useState(true);
+
+ useEffect(() => {
+ let isAborted = false;
+
+ const poll = () => {
+ timeout.current = window.setTimeout(async () => {
+ const { data } = await sendGetAgentIncomingData({ agentsIds });
+
+ if (data?.items) {
+ // filter out agents that have `data = false` and keep polling
+ const filtered = data?.items.filter((item) => {
+ const key = Object.keys(item)[0];
+ return item[key].data === true;
+ });
+
+ if (filtered.length > 0) {
+ setIncomingData(filtered);
+ setIsLoading(false);
+ }
+ }
+ if (!isAborted) {
+ poll();
+ }
+ }, POLLING_INTERVAL_MS);
+ };
+
+ poll();
+ if (isAborted || incomingData.length > 0) clearTimeout(timeout.current);
+
+ return () => {
+ isAborted = true;
+ };
+ }, [agentsIds, incomingData]);
+
+ return { incomingData, isLoading };
+};
diff --git a/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/index.tsx b/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/index.tsx
index 020ca9dc053a7..077f9db0b05a2 100644
--- a/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/index.tsx
+++ b/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/index.tsx
@@ -7,15 +7,16 @@
import React from 'react';
-import { useStartServices, useKibanaVersion } from '../../../hooks';
+import { useKibanaVersion } from '../../../hooks';
import type { EnrollmentAPIKey } from '../../../types';
+import { InstallationMessage } from '../../agent_enrollment_flyout/installation_message';
+
import { PlatformSelector } from './platform_selector';
interface Props {
fleetServerHosts: string[];
apiKey: EnrollmentAPIKey;
- policyId: string | undefined;
isK8s: string | undefined;
}
@@ -26,10 +27,8 @@ function getfleetServerHostsEnrollArgs(apiKey: EnrollmentAPIKey, fleetServerHost
export const ManualInstructions: React.FunctionComponent = ({
apiKey,
fleetServerHosts,
- policyId,
isK8s,
}) => {
- const { docLinks } = useStartServices();
const enrollArgs = getfleetServerHostsEnrollArgs(apiKey, fleetServerHosts);
const kibanaVersion = useKibanaVersion();
@@ -57,14 +56,16 @@ sudo rpm -vi elastic-agent-${kibanaVersion}-x86_64.rpm
sudo elastic-agent enroll ${enrollArgs} \nsudo systemctl enable elastic-agent \nsudo systemctl start elastic-agent`;
return (
-
+ <>
+
+
+ >
);
};
diff --git a/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/platform_selector.tsx b/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/platform_selector.tsx
index 7fc1c827596e9..9551d9a7eae87 100644
--- a/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/platform_selector.tsx
+++ b/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/platform_selector.tsx
@@ -7,14 +7,7 @@
import React from 'react';
import styled from 'styled-components';
-import {
- EuiText,
- EuiSpacer,
- EuiLink,
- EuiCodeBlock,
- EuiButtonGroup,
- EuiCallOut,
-} from '@elastic/eui';
+import { EuiText, EuiSpacer, EuiCodeBlock, EuiButtonGroup, EuiCallOut } from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n-react';
import { i18n } from '@kbn/i18n';
@@ -27,7 +20,6 @@ interface Props {
windowsCommand: string;
linuxDebCommand: string;
linuxRpmCommand: string;
- troubleshootLink: string;
isK8s: boolean;
}
@@ -44,7 +36,6 @@ export const PlatformSelector: React.FunctionComponent = ({
windowsCommand,
linuxDebCommand,
linuxRpmCommand,
- troubleshootLink,
isK8s,
}) => {
const { platform, setPlatform } = usePlatform();
@@ -127,23 +118,6 @@ export const PlatformSelector: React.FunctionComponent = ({
)}
>
)}
-
-
-
-
-
- ),
- }}
- />
-
>
);
};
diff --git a/x-pack/plugins/fleet/public/components/enrollment_instructions/standalone/index.tsx b/x-pack/plugins/fleet/public/components/enrollment_instructions/standalone/index.tsx
new file mode 100644
index 0000000000000..db36c16934e4b
--- /dev/null
+++ b/x-pack/plugins/fleet/public/components/enrollment_instructions/standalone/index.tsx
@@ -0,0 +1,51 @@
+/*
+ * 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 type { CommandsByPlatform } from '../../../applications/fleet/sections/agents/agent_requirements_page/components/install_command_utils';
+import type { K8sMode } from '../../../components/agent_enrollment_flyout/types';
+
+export const StandaloneInstructions = (
+ kibanaVersion: string,
+ isK8s?: K8sMode
+): CommandsByPlatform => {
+ const KUBERNETES_RUN_INSTRUCTIONS = 'kubectl apply -f elastic-agent-standalone-kubernetes.yaml';
+
+ const STANDALONE_RUN_INSTRUCTIONS_LINUX = `curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-${kibanaVersion}-linux-x86_64.tar.gz
+tar xzvf elastic-agent-${kibanaVersion}-linux-x86_64.tar.gz
+cd elastic-agent-${kibanaVersion}-linux-x86_64
+sudo ./elastic-agent install`;
+
+ const STANDALONE_RUN_INSTRUCTIONS_MAC = `curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-${kibanaVersion}-darwin-x86_64.tar.gz
+tar xzvf elastic-agent-${kibanaVersion}-darwin-x86_64.tar.gz
+cd elastic-agent-${kibanaVersion}-darwin-x86_64
+sudo ./elastic-agent install`;
+
+ const STANDALONE_RUN_INSTRUCTIONS_WINDOWS = `wget https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-${kibanaVersion}-windows-x86_64.zip -OutFile elastic-agent-${kibanaVersion}-windows-x86_64.zip
+Expand-Archive .\elastic-agent-${kibanaVersion}-windows-x86_64.zip
+cd elastic-agent-${kibanaVersion}-windows-x86_64
+.\\elastic-agent.exe install`;
+
+ const linuxDebCommand = `curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-${kibanaVersion}-amd64.deb
+ sudo dpkg -i elastic-agent-${kibanaVersion}-amd64.deb \nsudo systemctl enable elastic-agent \nsudo systemctl start elastic-agent`;
+
+ const linuxRpmCommand = `curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-${kibanaVersion}-x86_64.rpm
+ sudo rpm -vi elastic-agent-${kibanaVersion}-x86_64.rpm \nsudo systemctl enable elastic-agent \nsudo systemctl start elastic-agent`;
+
+ const linuxCommand =
+ isK8s === 'IS_KUBERNETES' ? KUBERNETES_RUN_INSTRUCTIONS : STANDALONE_RUN_INSTRUCTIONS_LINUX;
+ const macCommand =
+ isK8s === 'IS_KUBERNETES' ? KUBERNETES_RUN_INSTRUCTIONS : STANDALONE_RUN_INSTRUCTIONS_MAC;
+ const windowsCommand =
+ isK8s === 'IS_KUBERNETES' ? KUBERNETES_RUN_INSTRUCTIONS : STANDALONE_RUN_INSTRUCTIONS_WINDOWS;
+
+ return {
+ linux: linuxCommand,
+ mac: macCommand,
+ windows: windowsCommand,
+ deb: linuxDebCommand,
+ rpm: linuxRpmCommand,
+ };
+};
diff --git a/x-pack/plugins/fleet/public/components/new_enrollment_key_modal.tsx b/x-pack/plugins/fleet/public/components/new_enrollment_key_modal.tsx
index ffda9bdcb16ad..95e1e2563c231 100644
--- a/x-pack/plugins/fleet/public/components/new_enrollment_key_modal.tsx
+++ b/x-pack/plugins/fleet/public/components/new_enrollment_key_modal.tsx
@@ -76,8 +76,18 @@ export const NewEnrollmentTokenModal: React.FunctionComponent = ({
agentPolicies = [],
}) => {
const { notifications } = useStartServices();
+
+ const selectPolicyOptions = useMemo(() => {
+ return agentPolicies
+ .filter((agentPolicy) => !agentPolicy.is_managed)
+ .map((agentPolicy) => ({
+ value: agentPolicy.id,
+ text: agentPolicy.name,
+ }));
+ }, [agentPolicies]);
+
const form = useCreateApiKeyForm(
- agentPolicies.length > 0 ? agentPolicies[0].id : undefined,
+ selectPolicyOptions.length > 0 ? selectPolicyOptions[0].value : undefined,
(key: EnrollmentAPIKey) => {
onClose(key);
notifications.toasts.addSuccess(
@@ -93,15 +103,6 @@ export const NewEnrollmentTokenModal: React.FunctionComponent = ({
}
);
- const selectPolicyOptions = useMemo(() => {
- return agentPolicies
- .filter((agentPolicy) => !agentPolicy.is_managed)
- .map((agentPolicy) => ({
- value: agentPolicy.id,
- text: agentPolicy.name,
- }));
- }, [agentPolicies]);
-
const body = (