From ce048a507a43d2c8b2ed2834533f715e657f76ec Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 8 Oct 2025 18:36:26 +0000 Subject: [PATCH 001/126] chore(): update package lock files --- core/package-lock.json | 2 +- packages/angular-server/package-lock.json | 30 +++++++-------- packages/angular/package-lock.json | 16 ++++---- packages/docs/package-lock.json | 2 +- packages/react-router/package-lock.json | 46 +++++++++++------------ packages/react/package-lock.json | 16 ++++---- packages/vue-router/package-lock.json | 46 +++++++++++------------ packages/vue/package-lock.json | 16 ++++---- 8 files changed, 87 insertions(+), 87 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 4a15d7b2069..34df19e58de 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -18337,4 +18337,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index fd75dc1df04..2deb627d505 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1031,12 +1031,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.5.tgz", - "integrity": "sha512-Uk1qdGPoLHaVhd2FnYSAvRehd3VwwcPIfXaR51qiC7C2L5VhD27VyLSgDetc15G4U+VAIFjgUSR/pKdLFEuMPA==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", + "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", "license": "MIT", "dependencies": { - "@stencil/core": "4.36.2", + "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -1386,9 +1386,9 @@ ] }, "node_modules/@stencil/core": { - "version": "4.36.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.36.2.tgz", - "integrity": "sha512-PRFSpxNzX9Oi0Wfh02asztN9Sgev/MacfZwmd+VVyE6ZxW+a/kEpAYZhzGAmE+/aKVOGYuug7R9SulanYGxiDQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", + "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -7306,11 +7306,11 @@ "dev": true }, "@ionic/core": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.5.tgz", - "integrity": "sha512-Uk1qdGPoLHaVhd2FnYSAvRehd3VwwcPIfXaR51qiC7C2L5VhD27VyLSgDetc15G4U+VAIFjgUSR/pKdLFEuMPA==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", + "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", "requires": { - "@stencil/core": "4.36.2", + "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -7529,9 +7529,9 @@ "optional": true }, "@stencil/core": { - "version": "4.36.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.36.2.tgz", - "integrity": "sha512-PRFSpxNzX9Oi0Wfh02asztN9Sgev/MacfZwmd+VVyE6ZxW+a/kEpAYZhzGAmE+/aKVOGYuug7R9SulanYGxiDQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", + "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", "requires": { "@rollup/rollup-darwin-arm64": "4.34.9", "@rollup/rollup-darwin-x64": "4.34.9", @@ -11286,4 +11286,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 5257af923e6..81a32618797 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1398,12 +1398,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.5.tgz", - "integrity": "sha512-Uk1qdGPoLHaVhd2FnYSAvRehd3VwwcPIfXaR51qiC7C2L5VhD27VyLSgDetc15G4U+VAIFjgUSR/pKdLFEuMPA==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", + "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", "license": "MIT", "dependencies": { - "@stencil/core": "4.36.2", + "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -2308,9 +2308,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.36.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.36.2.tgz", - "integrity": "sha512-PRFSpxNzX9Oi0Wfh02asztN9Sgev/MacfZwmd+VVyE6ZxW+a/kEpAYZhzGAmE+/aKVOGYuug7R9SulanYGxiDQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", + "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -9079,4 +9079,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index da8cdf4860b..95e60c19021 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -10,4 +10,4 @@ "license": "MIT" } } -} \ No newline at end of file +} diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 0362fe1e2b5..155fec93893 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -238,12 +238,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.5.tgz", - "integrity": "sha512-Uk1qdGPoLHaVhd2FnYSAvRehd3VwwcPIfXaR51qiC7C2L5VhD27VyLSgDetc15G4U+VAIFjgUSR/pKdLFEuMPA==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", + "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", "license": "MIT", "dependencies": { - "@stencil/core": "4.36.2", + "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -415,12 +415,12 @@ } }, "node_modules/@ionic/react": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.5.tgz", - "integrity": "sha512-ID1in1YhmjlpLUF1aMv9zSEVc+ZiXs1fNWKJLK4U02LRQoNxmKagwYLxItAuls0KqduCErcqfC5pOcBJDtMl4Q==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.6.tgz", + "integrity": "sha512-7uoqcd5AOovtN7MJd5v9xeQFKF4og8W++bvDgka6TQcMTE/8mmzpFJUpOSvhFeOITMaqBHtkCNMvQSCa7vsmfw==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.5", + "@ionic/core": "8.7.6", "ionicons": "^8.0.13", "tslib": "*" }, @@ -669,9 +669,9 @@ ] }, "node_modules/@stencil/core": { - "version": "4.36.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.36.2.tgz", - "integrity": "sha512-PRFSpxNzX9Oi0Wfh02asztN9Sgev/MacfZwmd+VVyE6ZxW+a/kEpAYZhzGAmE+/aKVOGYuug7R9SulanYGxiDQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", + "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -4175,11 +4175,11 @@ "dev": true }, "@ionic/core": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.5.tgz", - "integrity": "sha512-Uk1qdGPoLHaVhd2FnYSAvRehd3VwwcPIfXaR51qiC7C2L5VhD27VyLSgDetc15G4U+VAIFjgUSR/pKdLFEuMPA==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", + "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", "requires": { - "@stencil/core": "4.36.2", + "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -4281,11 +4281,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.5.tgz", - "integrity": "sha512-ID1in1YhmjlpLUF1aMv9zSEVc+ZiXs1fNWKJLK4U02LRQoNxmKagwYLxItAuls0KqduCErcqfC5pOcBJDtMl4Q==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.6.tgz", + "integrity": "sha512-7uoqcd5AOovtN7MJd5v9xeQFKF4og8W++bvDgka6TQcMTE/8mmzpFJUpOSvhFeOITMaqBHtkCNMvQSCa7vsmfw==", "requires": { - "@ionic/core": "8.7.5", + "@ionic/core": "8.7.6", "ionicons": "^8.0.13", "tslib": "*" } @@ -4422,9 +4422,9 @@ "optional": true }, "@stencil/core": { - "version": "4.36.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.36.2.tgz", - "integrity": "sha512-PRFSpxNzX9Oi0Wfh02asztN9Sgev/MacfZwmd+VVyE6ZxW+a/kEpAYZhzGAmE+/aKVOGYuug7R9SulanYGxiDQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", + "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", "requires": { "@rollup/rollup-darwin-arm64": "4.34.9", "@rollup/rollup-darwin-x64": "4.34.9", @@ -6844,4 +6844,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index ff8539741cf..a1120714942 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -736,12 +736,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.5.tgz", - "integrity": "sha512-Uk1qdGPoLHaVhd2FnYSAvRehd3VwwcPIfXaR51qiC7C2L5VhD27VyLSgDetc15G4U+VAIFjgUSR/pKdLFEuMPA==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", + "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", "license": "MIT", "dependencies": { - "@stencil/core": "4.36.2", + "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -1726,9 +1726,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.36.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.36.2.tgz", - "integrity": "sha512-PRFSpxNzX9Oi0Wfh02asztN9Sgev/MacfZwmd+VVyE6ZxW+a/kEpAYZhzGAmE+/aKVOGYuug7R9SulanYGxiDQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", + "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -11913,4 +11913,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 83eca4b8f34..8fbc4720b92 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -673,12 +673,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.5.tgz", - "integrity": "sha512-Uk1qdGPoLHaVhd2FnYSAvRehd3VwwcPIfXaR51qiC7C2L5VhD27VyLSgDetc15G4U+VAIFjgUSR/pKdLFEuMPA==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", + "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", "license": "MIT", "dependencies": { - "@stencil/core": "4.36.2", + "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -865,12 +865,12 @@ } }, "node_modules/@ionic/vue": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.5.tgz", - "integrity": "sha512-wx7o+ABDDTWLM47CIjxueoZtKbvMQ9AolqGY4/2JvAJds/JlSs4kOEes/AzQ/1dREEp+4sOapmTtJnyauErY3A==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.6.tgz", + "integrity": "sha512-gK5x5Y0ZpZAW12gjvyBO9oUfwDZxMS7y0xcO0P9qzo++h3ZLcFcSGjHs8D4isUY/mF6mRagt1Y/5b0xDhgUBBw==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.5", + "@ionic/core": "8.7.6", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -1523,9 +1523,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.36.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.36.2.tgz", - "integrity": "sha512-PRFSpxNzX9Oi0Wfh02asztN9Sgev/MacfZwmd+VVyE6ZxW+a/kEpAYZhzGAmE+/aKVOGYuug7R9SulanYGxiDQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", + "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -8041,11 +8041,11 @@ "dev": true }, "@ionic/core": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.5.tgz", - "integrity": "sha512-Uk1qdGPoLHaVhd2FnYSAvRehd3VwwcPIfXaR51qiC7C2L5VhD27VyLSgDetc15G4U+VAIFjgUSR/pKdLFEuMPA==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", + "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", "requires": { - "@stencil/core": "4.36.2", + "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -8156,11 +8156,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.5.tgz", - "integrity": "sha512-wx7o+ABDDTWLM47CIjxueoZtKbvMQ9AolqGY4/2JvAJds/JlSs4kOEes/AzQ/1dREEp+4sOapmTtJnyauErY3A==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.6.tgz", + "integrity": "sha512-gK5x5Y0ZpZAW12gjvyBO9oUfwDZxMS7y0xcO0P9qzo++h3ZLcFcSGjHs8D4isUY/mF6mRagt1Y/5b0xDhgUBBw==", "requires": { - "@ionic/core": "8.7.5", + "@ionic/core": "8.7.6", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -8624,9 +8624,9 @@ } }, "@stencil/core": { - "version": "4.36.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.36.2.tgz", - "integrity": "sha512-PRFSpxNzX9Oi0Wfh02asztN9Sgev/MacfZwmd+VVyE6ZxW+a/kEpAYZhzGAmE+/aKVOGYuug7R9SulanYGxiDQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", + "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", "requires": { "@rollup/rollup-darwin-arm64": "4.34.9", "@rollup/rollup-darwin-x64": "4.34.9", @@ -12991,4 +12991,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 9d2bae498d6..b36067dd455 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -222,12 +222,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.5", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.5.tgz", - "integrity": "sha512-Uk1qdGPoLHaVhd2FnYSAvRehd3VwwcPIfXaR51qiC7C2L5VhD27VyLSgDetc15G4U+VAIFjgUSR/pKdLFEuMPA==", + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", + "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", "license": "MIT", "dependencies": { - "@stencil/core": "4.36.2", + "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -674,9 +674,9 @@ ] }, "node_modules/@stencil/core": { - "version": "4.36.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.36.2.tgz", - "integrity": "sha512-PRFSpxNzX9Oi0Wfh02asztN9Sgev/MacfZwmd+VVyE6ZxW+a/kEpAYZhzGAmE+/aKVOGYuug7R9SulanYGxiDQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", + "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -4019,4 +4019,4 @@ "dev": true } } -} \ No newline at end of file +} From f44585657ce4fca19d1c174d440b5d7413881c1d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 03:59:55 -0700 Subject: [PATCH 002/126] chore(deps): update actions/setup-node action to v6 (#30726) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/setup-node](https://redirect.github.com/actions/setup-node) | action | major | `v5` -> `v6` | --- ### Release Notes
actions/setup-node (actions/setup-node) ### [`v6`](https://redirect.github.com/actions/setup-node/compare/v5...v6) [Compare Source](https://redirect.github.com/actions/setup-node/compare/v5...v6)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/actions/build-angular-server/action.yml | 2 +- .github/workflows/actions/build-angular/action.yml | 2 +- .../workflows/actions/build-core-stencil-prerelease/action.yml | 2 +- .github/workflows/actions/build-core/action.yml | 2 +- .github/workflows/actions/build-react-router/action.yml | 2 +- .github/workflows/actions/build-react/action.yml | 2 +- .github/workflows/actions/build-vue-router/action.yml | 2 +- .github/workflows/actions/build-vue/action.yml | 2 +- .github/workflows/actions/publish-npm/action.yml | 2 +- .github/workflows/actions/test-angular-e2e/action.yml | 2 +- .github/workflows/actions/test-core-clean-build/action.yml | 2 +- .github/workflows/actions/test-core-lint/action.yml | 2 +- .github/workflows/actions/test-core-screenshot/action.yml | 2 +- .github/workflows/actions/test-core-spec/action.yml | 2 +- .github/workflows/actions/test-react-e2e/action.yml | 2 +- .github/workflows/actions/test-react-router-e2e/action.yml | 2 +- .github/workflows/actions/test-vue-e2e/action.yml | 2 +- .../workflows/actions/update-reference-screenshots/action.yml | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/actions/build-angular-server/action.yml b/.github/workflows/actions/build-angular-server/action.yml index c48d1dcb3b6..7da94399b3a 100644 --- a/.github/workflows/actions/build-angular-server/action.yml +++ b/.github/workflows/actions/build-angular-server/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic Angular Server' runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/build-angular/action.yml b/.github/workflows/actions/build-angular/action.yml index 349c6734e43..c19168ffd21 100644 --- a/.github/workflows/actions/build-angular/action.yml +++ b/.github/workflows/actions/build-angular/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic Angular' runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/build-core-stencil-prerelease/action.yml b/.github/workflows/actions/build-core-stencil-prerelease/action.yml index 878265178a9..eee79184348 100644 --- a/.github/workflows/actions/build-core-stencil-prerelease/action.yml +++ b/.github/workflows/actions/build-core-stencil-prerelease/action.yml @@ -9,7 +9,7 @@ runs: using: 'composite' steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x diff --git a/.github/workflows/actions/build-core/action.yml b/.github/workflows/actions/build-core/action.yml index f64f5646203..81f85619734 100644 --- a/.github/workflows/actions/build-core/action.yml +++ b/.github/workflows/actions/build-core/action.yml @@ -9,7 +9,7 @@ runs: using: 'composite' steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - name: Install Dependencies diff --git a/.github/workflows/actions/build-react-router/action.yml b/.github/workflows/actions/build-react-router/action.yml index 61d5f6b2d45..8bdf4cd272c 100644 --- a/.github/workflows/actions/build-react-router/action.yml +++ b/.github/workflows/actions/build-react-router/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic React Router' runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/build-react/action.yml b/.github/workflows/actions/build-react/action.yml index 6b8b9f74178..28f568e321e 100644 --- a/.github/workflows/actions/build-react/action.yml +++ b/.github/workflows/actions/build-react/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic React' runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/build-vue-router/action.yml b/.github/workflows/actions/build-vue-router/action.yml index e1c7716f5ea..3d7fd54c926 100644 --- a/.github/workflows/actions/build-vue-router/action.yml +++ b/.github/workflows/actions/build-vue-router/action.yml @@ -3,7 +3,7 @@ description: 'Builds Ionic Vue Router' runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/build-vue/action.yml b/.github/workflows/actions/build-vue/action.yml index bc8a47facc2..bcd56ae0352 100644 --- a/.github/workflows/actions/build-vue/action.yml +++ b/.github/workflows/actions/build-vue/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic Vue' runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/publish-npm/action.yml b/.github/workflows/actions/publish-npm/action.yml index 5c5b49d56c6..9b6453c61f3 100644 --- a/.github/workflows/actions/publish-npm/action.yml +++ b/.github/workflows/actions/publish-npm/action.yml @@ -19,7 +19,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x # Provenance requires npm 9.5.0+ diff --git a/.github/workflows/actions/test-angular-e2e/action.yml b/.github/workflows/actions/test-angular-e2e/action.yml index cd7ebfe0aec..68bb0190e50 100644 --- a/.github/workflows/actions/test-angular-e2e/action.yml +++ b/.github/workflows/actions/test-angular-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/test-core-clean-build/action.yml b/.github/workflows/actions/test-core-clean-build/action.yml index ea6da763fd9..8b20f4b6cec 100644 --- a/.github/workflows/actions/test-core-clean-build/action.yml +++ b/.github/workflows/actions/test-core-clean-build/action.yml @@ -3,7 +3,7 @@ description: 'Test Core Clean Build' runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x diff --git a/.github/workflows/actions/test-core-lint/action.yml b/.github/workflows/actions/test-core-lint/action.yml index b0e45abdaea..ef74f0db117 100644 --- a/.github/workflows/actions/test-core-lint/action.yml +++ b/.github/workflows/actions/test-core-lint/action.yml @@ -3,7 +3,7 @@ description: 'Test Core Lint' runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - name: Install Dependencies diff --git a/.github/workflows/actions/test-core-screenshot/action.yml b/.github/workflows/actions/test-core-screenshot/action.yml index f3d599f02ca..1b81fc55636 100644 --- a/.github/workflows/actions/test-core-screenshot/action.yml +++ b/.github/workflows/actions/test-core-screenshot/action.yml @@ -13,7 +13,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/test-core-spec/action.yml b/.github/workflows/actions/test-core-spec/action.yml index cdec48fabff..6bc7a52e10f 100644 --- a/.github/workflows/actions/test-core-spec/action.yml +++ b/.github/workflows/actions/test-core-spec/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - name: Install Dependencies diff --git a/.github/workflows/actions/test-react-e2e/action.yml b/.github/workflows/actions/test-react-e2e/action.yml index 3cf40c29b86..fce75f1b7dd 100644 --- a/.github/workflows/actions/test-react-e2e/action.yml +++ b/.github/workflows/actions/test-react-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/test-react-router-e2e/action.yml b/.github/workflows/actions/test-react-router-e2e/action.yml index f1f0150de11..b38fab2ab9f 100644 --- a/.github/workflows/actions/test-react-router-e2e/action.yml +++ b/.github/workflows/actions/test-react-router-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/test-vue-e2e/action.yml b/.github/workflows/actions/test-vue-e2e/action.yml index 905cb319a7f..9f13d25c078 100644 --- a/.github/workflows/actions/test-vue-e2e/action.yml +++ b/.github/workflows/actions/test-vue-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/update-reference-screenshots/action.yml b/.github/workflows/actions/update-reference-screenshots/action.yml index 95d0c7b726b..97b4c891c89 100644 --- a/.github/workflows/actions/update-reference-screenshots/action.yml +++ b/.github/workflows/actions/update-reference-screenshots/action.yml @@ -7,7 +7,7 @@ on: runs: using: 'composite' steps: - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 22.x - uses: actions/download-artifact@v5 From 820fa2854331722d22efd0e38a1936117477967a Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Tue, 14 Oct 2025 10:48:35 -0700 Subject: [PATCH 003/126] fix(header): prevent flickering during iOS page transitions (#30705) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue number: resolves #25326 --------- ## What is the current behavior? The header flickers upon page transition when on iOS mode and using a condensed header: **Entering Page Two (P1 β†’ P2):** When navigating to Page Two, which has a collapsing header (intended to be hidden until scroll), the header briefly flashes into view. This happens because the header is initially rendered with full `opacity: 1` before the component's logic can apply `opacity: 0` to hide it, causing a visible flicker. **Navigating Back (P2 β†’ P1):** When navigating back, Page One's header briefly bleeds through the top of Page Two. Although Page Two is on top (`zβˆ’index: 100`), its collapsing header is set to `opacity: 0`. This transparency allows Page One header (`zβˆ’index: 99`) to become visible underneath, as the transparent area cannot block the content below it. The header flickers upon page transition when on iOS mode and using a fade header: **Entering Page Two (P1 β†’ P2):** When navigating to Page Two, which has a fade header (should not have a background on load), the header background briefly flashes into view. This happens because the header is initially rendered with full `opacity: 1` before the component's logic can apply `opacity: 0` to hide it, causing a visible flicker. ## What is the new behavior? - Added a transition-specific class that is applied to the condensed ion-header element to override its default transparency. This guarantees the header to act as an opaque block during the page transition, eliminating visual flickering caused by early `opacity: 0` or the header underneath bleeding through. - Added a transition-specific class that is applied to the fade ion-header element to override its default opaque background. This guarantees the header to act as a transparent block during the page transition, eliminating visual flickering caused by default `opacity: 1`. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Dev build: `8.7.6-dev.11759524961.1cff6814` --- core/src/components/header/header.ios.scss | 33 ++++++- core/src/utils/transition/index.ts | 105 ++++++++++++++++++--- 2 files changed, 122 insertions(+), 16 deletions(-) diff --git a/core/src/components/header/header.ios.scss b/core/src/components/header/header.ios.scss index cda084da7c4..0c0f2007d42 100644 --- a/core/src/components/header/header.ios.scss +++ b/core/src/components/header/header.ios.scss @@ -39,6 +39,15 @@ --opacity-scale: inherit; } +/** + * Override styles applied during the page transition to prevent + * header flickering. + */ +.header-collapse-fade.header-transitioning ion-toolbar { + --background: transparent; + --border-style: none; +} + // iOS Header - Collapse Condense // -------------------------------------------------- .header-collapse-condense { @@ -65,8 +74,6 @@ * since it needs to blend in with the header above it. */ .header-collapse-condense ion-toolbar { - --background: var(--ion-background-color, #fff); - z-index: 0; } @@ -93,6 +100,28 @@ transition: all 0.2s ease-in-out; } +/** + * Large title toolbar should just use the content background + * since it needs to blend in with the header above it. + */ +.header-collapse-condense ion-toolbar, +/** + * Override styles applied during the page transition to prevent + * header flickering. + */ +.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar { + --background: var(--ion-background-color, #fff); +} + +/** + * Override styles applied during the page transition to prevent + * header flickering. + */ +.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar { + --border-style: none; + --opacity-scale: 1; +} + .header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title, .header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse { opacity: 0; diff --git a/core/src/utils/transition/index.ts b/core/src/utils/transition/index.ts index 69789bf862d..e74e7318c82 100644 --- a/core/src/utils/transition/index.ts +++ b/core/src/utils/transition/index.ts @@ -18,34 +18,51 @@ const focusController = createFocusController(); // TODO(FW-2832): types +/** + * Executes the main page transition. + * It also manages the lifecycle of header visibility (if any) + * to prevent visual flickering in iOS. The flickering only + * occurs for a condensed header that is placed above the content. + * + * @param opts Options for the transition. + * @returns A promise that resolves when the transition is complete. + */ export const transition = (opts: TransitionOptions): Promise => { return new Promise((resolve, reject) => { writeTask(() => { - beforeTransition(opts); - runTransition(opts).then( - (result) => { - if (result.animation) { - result.animation.destroy(); + const transitioningInactiveHeader = getIosIonHeader(opts); + beforeTransition(opts, transitioningInactiveHeader); + runTransition(opts) + .then( + (result) => { + if (result.animation) { + result.animation.destroy(); + } + afterTransition(opts); + resolve(result); + }, + (error) => { + afterTransition(opts); + reject(error); } - afterTransition(opts); - resolve(result); - }, - (error) => { - afterTransition(opts); - reject(error); - } - ); + ) + .finally(() => { + // Ensure that the header is restored to its original state. + setHeaderTransitionClass(transitioningInactiveHeader, false); + }); }); }); }; -const beforeTransition = (opts: TransitionOptions) => { +const beforeTransition = (opts: TransitionOptions, transitioningInactiveHeader: HTMLElement | null) => { const enteringEl = opts.enteringEl; const leavingEl = opts.leavingEl; focusController.saveViewFocus(leavingEl); setZIndex(enteringEl, leavingEl, opts.direction); + // Prevent flickering of the header by adding a class. + setHeaderTransitionClass(transitioningInactiveHeader, true); if (opts.showGoBack) { enteringEl.classList.add('can-go-back'); @@ -278,6 +295,40 @@ const setZIndex = ( } }; +/** + * Add a class to ensure that the header (if any) + * does not flicker during the transition. By adding the + * transitioning class, we ensure that the header has + * the necessary styles to prevent the following flickers: + * 1. When entering a page with a condensed header, the + * header should never be visible. However, + * it briefly renders the background color while + * the transition is occurring. + * 2. When leaving a page with a condensed header, the + * header has an opacity of 0 and the pages + * have a z-index which causes the entering page to + * briefly show it's content underneath the leaving page. + * 3. When entering a page or leaving a page with a fade + * header, the header should not have a background color. + * However, it briefly shows the background color while + * the transition is occurring. + * + * @param header The header element to modify. + * @param isTransitioning Whether the transition is occurring. + */ +const setHeaderTransitionClass = (header: HTMLElement | null, isTransitioning: boolean) => { + if (!header) { + return; + } + + const transitionClass = 'header-transitioning'; + if (isTransitioning) { + header.classList.add(transitionClass); + } else { + header.classList.remove(transitionClass); + } +}; + export const getIonPageElement = (element: HTMLElement) => { if (element.classList.contains('ion-page')) { return element; @@ -291,6 +342,32 @@ export const getIonPageElement = (element: HTMLElement) => { return element; }; +/** + * Retrieves the ion-header element from a page based on the + * direction of the transition. + * + * @param opts Options for the transition. + * @returns The ion-header element or null if not found or not in 'ios' mode. + */ +const getIosIonHeader = (opts: TransitionOptions): HTMLElement | null => { + const enteringEl = opts.enteringEl; + const leavingEl = opts.leavingEl; + const direction = opts.direction; + const mode = opts.mode; + + if (mode !== 'ios') { + return null; + } + + const element = direction === 'back' ? leavingEl : enteringEl; + + if (!element) { + return null; + } + + return element.querySelector('ion-header'); +}; + export interface TransitionOptions extends NavOptions { progressCallback?: (ani: Animation | undefined) => void; baseEl: any; From 18e1d3e1b8480e7c574b1098eeb35acaa3e19280 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 13:36:50 -0400 Subject: [PATCH 004/126] chore(deps): update github/codeql-action action to v4 (#30717) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github/codeql-action](https://redirect.github.com/github/codeql-action) | action | major | `v3` -> `v4` | --- ### Release Notes
github/codeql-action (github/codeql-action) ### [`v4`](https://redirect.github.com/github/codeql-action/compare/v3...v4) [Compare Source](https://redirect.github.com/github/codeql-action/compare/v3...v4)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 6ac78c8dc83..c228c282261 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -15,7 +15,7 @@ jobs: security-events: write steps: - uses: actions/checkout@v5 - - uses: github/codeql-action/init@v3 + - uses: github/codeql-action/init@v4 with: languages: javascript - - uses: github/codeql-action/analyze@v3 + - uses: github/codeql-action/analyze@v4 From 03303d73f0bfe2380ced7931525fc52fd8576367 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Wed, 15 Oct 2025 10:50:07 -0700 Subject: [PATCH 005/126] fix(select): improve screen reader announcement timing for validation errors (#30723) Issue number: internal --------- ## What is the current behavior? Currently, when an error text is shown, it may not announce itself to voice assistants. This is because the way error text currently works is by always existing in the DOM, but being hidden when there is no error. When the error state changes, the error text is shown, but as far as the voice assistant can tell it's always been there and nothing has changed. ## What is the new behavior? - Updated aria attributes - Added observer with an observer We had to do this with a mutation observer and state because it's important in some frameworks, like Angular, that state changes to cause a re-render. This, combined with some minor aria changes, makes it so that when a field is declared invalid, it immediately announces the invalid state instead of waiting for the user to go back to the invalid field. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information [Preview](https://ionic-framework-git-fw-6797-ionic1.vercel.app/src/components/select/test/validation/) --- core/src/components/input/input.tsx | 16 +- core/src/components/select/select.tsx | 77 ++++++- .../select/test/validation/index.html | 200 ++++++++++++++++++ core/src/components/textarea/textarea.tsx | 16 +- core/src/utils/forms/index.ts | 1 + core/src/utils/forms/validity.ts | 15 ++ .../template-form.component.html | 25 +++ .../template-form/template-form.component.ts | 1 + .../standalone/app-standalone/app.routes.ts | 1 + .../home-page/home-page.component.html | 5 + .../select-validation.component.html | 63 ++++++ .../select-validation.component.scss | 36 ++++ .../select-validation.component.ts | 63 ++++++ 13 files changed, 482 insertions(+), 37 deletions(-) create mode 100644 core/src/components/select/test/validation/index.html create mode 100644 core/src/utils/forms/validity.ts create mode 100644 packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.html create mode 100644 packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.scss create mode 100644 packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.ts diff --git a/core/src/components/input/input.tsx b/core/src/components/input/input.tsx index ccb80120ca8..19c5a9d406f 100644 --- a/core/src/components/input/input.tsx +++ b/core/src/components/input/input.tsx @@ -14,7 +14,7 @@ import { h, } from '@stencil/core'; import type { NotchController } from '@utils/forms'; -import { createNotchController } from '@utils/forms'; +import { createNotchController, checkInvalidState } from '@utils/forms'; import type { Attributes } from '@utils/helpers'; import { inheritAriaAttributes, debounceEvent, inheritAttributes, componentOnReady } from '@utils/helpers'; import { createSlotMutationController } from '@utils/slot-mutation-controller'; @@ -403,16 +403,6 @@ export class Input implements ComponentInterface { }; } - /** - * Checks if the input is in an invalid state based on Ionic validation classes - */ - private checkInvalidState(): boolean { - const hasIonTouched = this.el.classList.contains('ion-touched'); - const hasIonInvalid = this.el.classList.contains('ion-invalid'); - - return hasIonTouched && hasIonInvalid; - } - connectedCallback() { const { el } = this; @@ -426,7 +416,7 @@ export class Input implements ComponentInterface { // Watch for class changes to update validation state if (Build.isBrowser && typeof MutationObserver !== 'undefined') { this.validationObserver = new MutationObserver(() => { - const newIsInvalid = this.checkInvalidState(); + const newIsInvalid = checkInvalidState(el); if (this.isInvalid !== newIsInvalid) { this.isInvalid = newIsInvalid; // Force a re-render to update aria-describedby immediately @@ -441,7 +431,7 @@ export class Input implements ComponentInterface { } // Always set initial state - this.isInvalid = this.checkInvalidState(); + this.isInvalid = checkInvalidState(el); this.debounceChanged(); if (Build.isBrowser) { diff --git a/core/src/components/select/select.tsx b/core/src/components/select/select.tsx index 7df8049d13a..ac2fbb6d89f 100644 --- a/core/src/components/select/select.tsx +++ b/core/src/components/select/select.tsx @@ -1,7 +1,7 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; -import { Component, Element, Event, Host, Method, Prop, State, Watch, h, forceUpdate } from '@stencil/core'; +import { Build, Component, Element, Event, Host, Method, Prop, State, Watch, h, forceUpdate } from '@stencil/core'; import type { NotchController } from '@utils/forms'; -import { compareOptions, createNotchController, isOptionSelected } from '@utils/forms'; +import { compareOptions, createNotchController, isOptionSelected, checkInvalidState } from '@utils/forms'; import { focusVisibleElement, renderHiddenInput, inheritAttributes } from '@utils/helpers'; import type { Attributes } from '@utils/helpers'; import { printIonWarning } from '@utils/logging'; @@ -64,6 +64,7 @@ export class Select implements ComponentInterface { private inheritedAttributes: Attributes = {}; private nativeWrapperEl: HTMLElement | undefined; private notchSpacerEl: HTMLElement | undefined; + private validationObserver?: MutationObserver; private notchController?: NotchController; @@ -81,6 +82,13 @@ export class Select implements ComponentInterface { */ @State() hasFocus = false; + /** + * Track validation state for proper aria-live announcements. + */ + @State() isInvalid = false; + + @State() private hintTextID?: string; + /** * The text to display on the cancel button. */ @@ -298,10 +306,51 @@ export class Select implements ComponentInterface { */ forceUpdate(this); }); + + // Watch for class changes to update validation state. + if (Build.isBrowser && typeof MutationObserver !== 'undefined') { + this.validationObserver = new MutationObserver(() => { + const newIsInvalid = checkInvalidState(this.el); + if (this.isInvalid !== newIsInvalid) { + this.isInvalid = newIsInvalid; + /** + * Screen readers tend to announce changes + * to `aria-describedby` when the attribute + * is changed during a blur event for a + * native form control. + * However, the announcement can be spotty + * when using a non-native form control + * and `forceUpdate()`. + * This is due to `forceUpdate()` internally + * rescheduling the DOM update to a lower + * priority queue regardless if it's called + * inside a Promise or not, thus causing + * the screen reader to potentially miss the + * change. + * By using a State variable inside a Promise, + * it guarantees a re-render immediately at + * a higher priority. + */ + Promise.resolve().then(() => { + this.hintTextID = this.getHintTextID(); + }); + } + }); + + this.validationObserver.observe(el, { + attributes: true, + attributeFilter: ['class'], + }); + } + + // Always set initial state + this.isInvalid = checkInvalidState(this.el); } componentWillLoad() { this.inheritedAttributes = inheritAttributes(this.el, ['aria-label']); + + this.hintTextID = this.getHintTextID(); } componentDidLoad() { @@ -328,6 +377,12 @@ export class Select implements ComponentInterface { this.notchController.destroy(); this.notchController = undefined; } + + // Clean up validation observer to prevent memory leaks. + if (this.validationObserver) { + this.validationObserver.disconnect(); + this.validationObserver = undefined; + } } /** @@ -1056,8 +1111,8 @@ export class Select implements ComponentInterface { aria-label={this.ariaLabel} aria-haspopup="dialog" aria-expanded={`${isExpanded}`} - aria-describedby={this.getHintTextID()} - aria-invalid={this.getHintTextID() === this.errorTextId} + aria-describedby={this.hintTextID} + aria-invalid={this.isInvalid ? 'true' : undefined} aria-required={`${required}`} onFocus={this.onFocus} onBlur={this.onBlur} @@ -1067,9 +1122,9 @@ export class Select implements ComponentInterface { } private getHintTextID(): string | undefined { - const { el, helperText, errorText, helperTextId, errorTextId } = this; + const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this; - if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) { + if (isInvalid && errorText) { return errorTextId; } @@ -1084,14 +1139,14 @@ export class Select implements ComponentInterface { * Renders the helper text or error text values */ private renderHintText() { - const { helperText, errorText, helperTextId, errorTextId } = this; + const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this; return [ -
- {helperText} +
+ {!isInvalid ? helperText : null}
, -
- {errorText} + , ]; } diff --git a/core/src/components/select/test/validation/index.html b/core/src/components/select/test/validation/index.html new file mode 100644 index 00000000000..74d0586bd77 --- /dev/null +++ b/core/src/components/select/test/validation/index.html @@ -0,0 +1,200 @@ + + + + + Select - Validation + + + + + + + + + + + + + + Select - Validation Test + + + + +
+

Screen Reader Testing Instructions:

+
    +
  1. Enable your screen reader (VoiceOver, NVDA, JAWS, etc.)
  2. +
  3. Tab through the form fields
  4. +
  5. When you tab away from an empty required field, the error should be announced immediately
  6. +
  7. The error text should be announced BEFORE the next field is announced
  8. +
  9. Test in Chrome, Safari, and Firefox to verify consistent behavior
  10. +
+
+ +
+
+

Required Field

+ + Apples + Oranges + Pears + +
+ +
+

Optional Field (No Validation)

+ + Red + Blue + Green + +
+
+ +
+ Submit Form + Reset Form +
+
+
+ + + + diff --git a/core/src/components/textarea/textarea.tsx b/core/src/components/textarea/textarea.tsx index 83c1b91c2e4..89646f6a247 100644 --- a/core/src/components/textarea/textarea.tsx +++ b/core/src/components/textarea/textarea.tsx @@ -15,7 +15,7 @@ import { writeTask, } from '@stencil/core'; import type { NotchController } from '@utils/forms'; -import { createNotchController } from '@utils/forms'; +import { createNotchController, checkInvalidState } from '@utils/forms'; import type { Attributes } from '@utils/helpers'; import { inheritAriaAttributes, debounceEvent, inheritAttributes, componentOnReady } from '@utils/helpers'; import { createSlotMutationController } from '@utils/slot-mutation-controller'; @@ -335,16 +335,6 @@ export class Textarea implements ComponentInterface { } } - /** - * Checks if the textarea is in an invalid state based on Ionic validation classes - */ - private checkValidationState(): boolean { - const hasIonTouched = this.el.classList.contains('ion-touched'); - const hasIonInvalid = this.el.classList.contains('ion-invalid'); - - return hasIonTouched && hasIonInvalid; - } - connectedCallback() { const { el } = this; this.slotMutationController = createSlotMutationController(el, ['label', 'start', 'end'], () => forceUpdate(this)); @@ -357,7 +347,7 @@ export class Textarea implements ComponentInterface { // Watch for class changes to update validation state if (Build.isBrowser && typeof MutationObserver !== 'undefined') { this.validationObserver = new MutationObserver(() => { - const newIsInvalid = this.checkValidationState(); + const newIsInvalid = checkInvalidState(this.el); if (this.isInvalid !== newIsInvalid) { this.isInvalid = newIsInvalid; // Force a re-render to update aria-describedby immediately @@ -372,7 +362,7 @@ export class Textarea implements ComponentInterface { } // Always set initial state - this.isInvalid = this.checkValidationState(); + this.isInvalid = checkInvalidState(this.el); this.debounceChanged(); if (Build.isBrowser) { diff --git a/core/src/utils/forms/index.ts b/core/src/utils/forms/index.ts index d24bddfaa77..682811ed643 100644 --- a/core/src/utils/forms/index.ts +++ b/core/src/utils/forms/index.ts @@ -1,2 +1,3 @@ export * from './notch-controller'; export * from './compare-with-utils'; +export * from './validity'; diff --git a/core/src/utils/forms/validity.ts b/core/src/utils/forms/validity.ts new file mode 100644 index 00000000000..995dc637b10 --- /dev/null +++ b/core/src/utils/forms/validity.ts @@ -0,0 +1,15 @@ +type FormElement = HTMLIonInputElement | HTMLIonTextareaElement | HTMLIonSelectElement; + +/** + * Checks if the form element is in an invalid state based on + * Ionic validation classes. + * + * @param el The form element to check. + * @returns `true` if the element is invalid, `false` otherwise. + */ +export const checkInvalidState = (el: FormElement): boolean => { + const hasIonTouched = el.classList.contains('ion-touched'); + const hasIonInvalid = el.classList.contains('ion-invalid'); + + return hasIonTouched && hasIonInvalid; +}; diff --git a/packages/angular/test/base/src/app/lazy/template-form/template-form.component.html b/packages/angular/test/base/src/app/lazy/template-form/template-form.component.html index d33aa4ae1e5..ccd902f6b95 100644 --- a/packages/angular/test/base/src/app/lazy/template-form/template-form.component.html +++ b/packages/angular/test/base/src/app/lazy/template-form/template-form.component.html @@ -77,6 +77,31 @@

MinLength Errors: {{minLengthField.errors | json}}

+ + + + + Option 1 + Option 2 + + + + + + +

Select Touched: {{selectField.touched}}

+

Select Invalid: {{selectField.invalid}}

+

Select Errors: {{selectField.errors | json}}

+
+
diff --git a/packages/angular/test/base/src/app/lazy/template-form/template-form.component.ts b/packages/angular/test/base/src/app/lazy/template-form/template-form.component.ts index 1ecdaa5e5d0..705e104e808 100644 --- a/packages/angular/test/base/src/app/lazy/template-form/template-form.component.ts +++ b/packages/angular/test/base/src/app/lazy/template-form/template-form.component.ts @@ -9,6 +9,7 @@ export class TemplateFormComponent { inputValue = ''; textareaValue = ''; minLengthValue = ''; + selectValue = ''; // Track if form has been submitted submitted = false; diff --git a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts index ed9628ae7c9..93f6284957f 100644 --- a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts +++ b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts @@ -47,6 +47,7 @@ export const routes: Routes = [ children: [ { path: 'input-validation', loadComponent: () => import('../validation/input-validation/input-validation.component').then(c => c.InputValidationComponent) }, { path: 'textarea-validation', loadComponent: () => import('../validation/textarea-validation/textarea-validation.component').then(c => c.TextareaValidationComponent) }, + { path: 'select-validation', loadComponent: () => import('../validation/select-validation/select-validation.component').then(c => c.SelectValidationComponent) }, { path: '**', redirectTo: 'input-validation' } ] }, diff --git a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html index fd6ae409a3b..f0eece0ba33 100644 --- a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html +++ b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html @@ -131,6 +131,11 @@ Textarea Validation Test + + + Select Validation Test + + diff --git a/packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.html b/packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.html new file mode 100644 index 00000000000..15993edc803 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.html @@ -0,0 +1,63 @@ + + + Select - Validation Test + + + + +
+

Screen Reader Testing Instructions:

+
    +
  1. Enable your screen reader (VoiceOver, NVDA, JAWS, etc.)
  2. +
  3. Tab through the form fields
  4. +
  5. When you tab away from an empty required field, the error should be announced immediately
  6. +
  7. The error text should be announced BEFORE the next field is announced
  8. +
  9. Test in Chrome, Safari, and Firefox to verify consistent behavior
  10. +
+
+ +
+
+
+

Required Field

+ + Apples + Oranges + Pears + +
+ +
+

Optional Field (No Validation)

+ + Red + Blue + Green + +
+
+
+ +
+ Submit Form + Reset Form +
+
diff --git a/packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.scss b/packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.scss new file mode 100644 index 00000000000..add228ccab1 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.scss @@ -0,0 +1,36 @@ +.grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + grid-row-gap: 20px; + grid-column-gap: 20px; +} + +h2 { + font-size: 12px; + font-weight: normal; + color: var(--ion-color-step-600); + margin-top: 10px; + margin-bottom: 5px; +} + +.validation-info { + margin: 20px; + padding: 10px; + background: var(--ion-color-light); + border-radius: 4px; +} + +.validation-info h2 { + font-size: 14px; + font-weight: 600; + margin-bottom: 10px; +} + +.validation-info ol { + margin: 0; + padding-left: 20px; +} + +.validation-info li { + margin-bottom: 5px; +} diff --git a/packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.ts b/packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.ts new file mode 100644 index 00000000000..1ae4a239ef4 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/select-validation/select-validation.component.ts @@ -0,0 +1,63 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { + FormBuilder, + ReactiveFormsModule, + Validators +} from '@angular/forms'; +import { + IonButton, + IonContent, + IonHeader, + IonSelect, + IonSelectOption, + IonTitle, + IonToolbar +} from '@ionic/angular/standalone'; + +@Component({ + selector: 'app-select-validation', + templateUrl: './select-validation.component.html', + styleUrls: ['./select-validation.component.scss'], + standalone: true, + imports: [ + CommonModule, + ReactiveFormsModule, + IonSelect, + IonSelectOption, + IonButton, + IonHeader, + IonToolbar, + IonTitle, + IonContent + ] +}) +export class SelectValidationComponent { + // Field metadata for labels and error messages + fieldMetadata = { + fruits: { + label: 'Fruits', + helperText: "Select an option", + errorText: 'This field is required' + }, + optional: { + label: 'Colors', + helperText: 'You can skip this field', + errorText: '' + } + }; + + form = this.fb.group({ + fruits: ['', Validators.required], + optional: [''] + }); + + constructor(private fb: FormBuilder) {} + + // Submit form + onSubmit(): void { + if (this.form.valid) { + alert('Form submitted successfully!'); + } + } +} From add33c5995075325b9e92854eb7fc49eb220c02d Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Wed, 15 Oct 2025 13:50:12 -0400 Subject: [PATCH 006/126] refactor(button): only check for undefined fill (#30722) Issue number: internal --------- ## What is the current behavior? Button checks for undefined and null fill as a result of Stencil bug https://github.com/ionic-team/stencil/issues/3586 ## What is the new behavior? - Removes check for `null` with the release of Stencil v4.38.0 - No test needed as one exists already: https://github.com/ionic-team/ionic-framework/pull/26339/files ## Does this introduce a breaking change? - [ ] Yes - [x] No Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/src/components/button/button.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/core/src/components/button/button.tsx b/core/src/components/button/button.tsx index 47326abfea8..9eecd0d2c62 100644 --- a/core/src/components/button/button.tsx +++ b/core/src/components/button/button.tsx @@ -361,11 +361,7 @@ export class Button implements ComponentInterface, AnchorInterface, ButtonInterf target, }; let fill = this.fill; - /** - * We check both undefined and null to - * work around https://github.com/ionic-team/stencil/issues/3586. - */ - if (fill == null) { + if (fill === undefined) { fill = this.inToolbar || this.inListHeader ? 'clear' : 'solid'; } From 12084af163ed811b9c6bda3c7850fc0c53c60c7b Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Wed, 15 Oct 2025 10:50:44 -0700 Subject: [PATCH 007/126] fix(header): ensure one banner role in condensed header (#30718) Issue number: internal --------- ## What is the current behavior? As per accessibility guidelines, there should only be one banner landmark per page. A condensed header creates two banner landmarks since 2 `ion-header` components are required on the page. `ion-header` renders with a `role="banner"` by default (when not in `ion-menu`). The visual effect of the condensed header is achieved by rendering two distinct header components. Because both components exist in the code at the same time and both have `role="banner"`, they create a duplicate landmark announcement for screen readers. This leads to a violation with the accessibility guidelines. ## What is the new behavior? - The role is updated to either `none` or `banner` based off the header's active state. - Added test. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information [Preview](https://ionic-framework-git-fw-6767-ionic1.vercel.app/src/components/header/test/condense/?ionic%3Amode=ios) --- core/src/components/header/header.tsx | 4 +- core/src/components/header/header.utils.ts | 38 ++++++++++++++++++ .../header/test/condense/header.e2e.ts | 40 +++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/core/src/components/header/header.tsx b/core/src/components/header/header.tsx index 6b2102a7db3..ab93fada783 100644 --- a/core/src/components/header/header.tsx +++ b/core/src/components/header/header.tsx @@ -15,6 +15,7 @@ import { handleToolbarIntersection, setHeaderActive, setToolbarBackgroundOpacity, + getRoleType, } from './header.utils'; /** @@ -208,9 +209,10 @@ export class Header implements ComponentInterface { const { translucent, inheritedAttributes } = this; const mode = getIonMode(this); const collapse = this.collapse || 'none'; + const isCondensed = collapse === 'condense'; // banner role must be at top level, so remove role if inside a menu - const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner'; + const roleType = getRoleType(hostContext('ion-menu', this.el), isCondensed, mode); return ( { const ionTitles = toolbars.map((toolbar) => toolbar.ionTitleEl); if (active) { + headerEl.setAttribute('role', ROLE_BANNER); headerEl.classList.remove('header-collapse-condense-inactive'); ionTitles.forEach((ionTitle) => { @@ -179,6 +182,16 @@ export const setHeaderActive = (headerIndex: HeaderIndex, active = true) => { } }); } else { + /** + * There can only be one banner landmark per page. + * By default, all ion-headers have the banner role. + * This causes an accessibility issue when using a + * condensed header since there are two ion-headers + * on the page at once (active and inactive). + * To solve this, the role needs to be toggled + * based on which header is active. + */ + headerEl.setAttribute('role', ROLE_NONE); headerEl.classList.add('header-collapse-condense-inactive'); /** @@ -244,3 +257,28 @@ export const handleHeaderFade = (scrollEl: HTMLElement, baseEl: HTMLElement, con }); }); }; + +/** + * Get the role type for the ion-header. + * + * @param isInsideMenu If ion-header is inside ion-menu. + * @param isCondensed If ion-header has collapse="condense". + * @param mode The current mode. + * @returns 'none' if inside ion-menu or if condensed in md + * mode, otherwise 'banner'. + */ +export const getRoleType = (isInsideMenu: boolean, isCondensed: boolean, mode: 'ios' | 'md') => { + // If the header is inside a menu, it should not have the banner role. + if (isInsideMenu) { + return ROLE_NONE; + } + /** + * Only apply role="none" to `md` mode condensed headers + * since the large header is never shown. + */ + if (isCondensed && mode === 'md') { + return ROLE_NONE; + } + // Default to banner role. + return ROLE_BANNER; +}; diff --git a/core/src/components/header/test/condense/header.e2e.ts b/core/src/components/header/test/condense/header.e2e.ts index b57d1ee58f7..c416532973e 100644 --- a/core/src/components/header/test/condense/header.e2e.ts +++ b/core/src/components/header/test/condense/header.e2e.ts @@ -40,5 +40,45 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, c await expect(smallTitle).toHaveAttribute('aria-hidden', 'true'); }); + + test('should only have the banner role on the active header', async ({ page }) => { + await page.goto('/src/components/header/test/condense', config); + const largeTitleHeader = page.locator('#largeTitleHeader'); + const smallTitleHeader = page.locator('#smallTitleHeader'); + const content = page.locator('ion-content'); + + await expect(largeTitleHeader).toHaveAttribute('role', 'banner'); + await expect(smallTitleHeader).toHaveAttribute('role', 'none'); + + await content.evaluate(async (el: HTMLIonContentElement) => { + await el.scrollToBottom(); + }); + await page.locator('#largeTitleHeader.header-collapse-condense-inactive').waitFor(); + + await expect(largeTitleHeader).toHaveAttribute('role', 'none'); + await expect(smallTitleHeader).toHaveAttribute('role', 'banner'); + }); + }); +}); + +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('header: condense'), () => { + test('should only have the banner role on the small header', async ({ page }) => { + await page.goto('/src/components/header/test/condense', config); + const largeTitleHeader = page.locator('#largeTitleHeader'); + const smallTitleHeader = page.locator('#smallTitleHeader'); + const content = page.locator('ion-content'); + + await expect(smallTitleHeader).toHaveAttribute('role', 'banner'); + await expect(largeTitleHeader).toHaveAttribute('role', 'none'); + + await content.evaluate(async (el: HTMLIonContentElement) => { + await el.scrollToBottom(); + }); + await page.waitForChanges(); + + await expect(smallTitleHeader).toHaveAttribute('role', 'banner'); + await expect(largeTitleHeader).toHaveAttribute('role', 'none'); + }); }); }); From 72c2b3e9165526c4c7b4dd434154b24a86ce2c15 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 14:09:32 -0400 Subject: [PATCH 008/126] chore(deps): update playwright (#30709) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > [!NOTE] > Mend has cancelled [the proposed renaming](https://redirect.github.com/renovatebot/renovate/discussions/37842) of the Renovate GitHub app being renamed to `mend[bot]`. > > This notice will be removed on 2025-10-07.
This PR contains the following updates: | Package | Change | Age | Confidence | Type | Update | |---|---|---|---|---|---| | [@playwright/test](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`^1.55.1` -> `^1.56.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.55.1/1.56.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.55.1/1.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | mcr.microsoft.com/playwright | `v1.55.1` -> `v1.56.0` | [![age](https://developer.mend.io/api/mc/badges/age/docker/mcr.microsoft.com%2fplaywright/v1.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/mcr.microsoft.com%2fplaywright/v1.55.1/v1.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | final | minor | --- ### Release Notes
microsoft/playwright (@​playwright/test) ### [`v1.56.0`](https://redirect.github.com/microsoft/playwright/compare/v1.55.1...v1.56.0) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.55.1...v1.56.0)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- core/Dockerfile | 2 +- core/package-lock.json | 46 +++++++++++++++++++++--------------------- core/package.json | 2 +- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/core/Dockerfile b/core/Dockerfile index 095cde63a4a..2b95845ee4e 100644 --- a/core/Dockerfile +++ b/core/Dockerfile @@ -1,5 +1,5 @@ # Get Playwright -FROM mcr.microsoft.com/playwright:v1.55.1 +FROM mcr.microsoft.com/playwright:v1.56.0 # Set the working directory WORKDIR /ionic diff --git a/core/package-lock.json b/core/package-lock.json index 34df19e58de..6efd1e68caa 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -22,7 +22,7 @@ "@clack/prompts": "^0.11.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", - "@playwright/test": "^1.55.1", + "@playwright/test": "^1.56.0", "@rollup/plugin-node-resolve": "^8.4.0", "@rollup/plugin-virtual": "^2.0.3", "@stencil/angular-output-target": "^0.10.0", @@ -1715,12 +1715,12 @@ } }, "node_modules/@playwright/test": { - "version": "1.55.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.1.tgz", - "integrity": "sha512-IVAh/nOJaw6W9g+RJVlIQJ6gSiER+ae6mKQ5CX1bERzQgbC1VSeBlwdvczT7pxb0GWiyrxH4TGKbMfDb4Sq/ig==", + "version": "1.56.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.0.tgz", + "integrity": "sha512-Tzh95Twig7hUwwNe381/K3PggZBZblKUe2wv25oIpzWLr6Z0m4KgV1ZVIjnR6GM9ANEqjZD7XsZEa6JL/7YEgg==", "dev": true, "dependencies": { - "playwright": "1.55.1" + "playwright": "1.56.0" }, "bin": { "playwright": "cli.js" @@ -8592,12 +8592,12 @@ } }, "node_modules/playwright": { - "version": "1.55.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.1.tgz", - "integrity": "sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==", + "version": "1.56.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.0.tgz", + "integrity": "sha512-X5Q1b8lOdWIE4KAoHpW3SE8HvUB+ZZsUoN64ZhjnN8dOb1UpujxBtENGiZFE+9F/yhzJwYa+ca3u43FeLbboHA==", "dev": true, "dependencies": { - "playwright-core": "1.55.1" + "playwright-core": "1.56.0" }, "bin": { "playwright": "cli.js" @@ -8610,9 +8610,9 @@ } }, "node_modules/playwright-core": { - "version": "1.55.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.1.tgz", - "integrity": "sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==", + "version": "1.56.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.0.tgz", + "integrity": "sha512-1SXl7pMfemAMSDn5rkPeZljxOCYAmQnYLBTExuh6E8USHXGSX3dx6lYZN/xPpTz1vimXmPA9CDnILvmJaB8aSQ==", "dev": true, "bin": { "playwright-core": "cli.js" @@ -11862,12 +11862,12 @@ } }, "@playwright/test": { - "version": "1.55.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.1.tgz", - "integrity": "sha512-IVAh/nOJaw6W9g+RJVlIQJ6gSiER+ae6mKQ5CX1bERzQgbC1VSeBlwdvczT7pxb0GWiyrxH4TGKbMfDb4Sq/ig==", + "version": "1.56.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.0.tgz", + "integrity": "sha512-Tzh95Twig7hUwwNe381/K3PggZBZblKUe2wv25oIpzWLr6Z0m4KgV1ZVIjnR6GM9ANEqjZD7XsZEa6JL/7YEgg==", "dev": true, "requires": { - "playwright": "1.55.1" + "playwright": "1.56.0" } }, "@rollup/plugin-node-resolve": { @@ -16811,19 +16811,19 @@ } }, "playwright": { - "version": "1.55.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.1.tgz", - "integrity": "sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==", + "version": "1.56.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.0.tgz", + "integrity": "sha512-X5Q1b8lOdWIE4KAoHpW3SE8HvUB+ZZsUoN64ZhjnN8dOb1UpujxBtENGiZFE+9F/yhzJwYa+ca3u43FeLbboHA==", "dev": true, "requires": { "fsevents": "2.3.2", - "playwright-core": "1.55.1" + "playwright-core": "1.56.0" } }, "playwright-core": { - "version": "1.55.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.1.tgz", - "integrity": "sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==", + "version": "1.56.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.0.tgz", + "integrity": "sha512-1SXl7pMfemAMSDn5rkPeZljxOCYAmQnYLBTExuh6E8USHXGSX3dx6lYZN/xPpTz1vimXmPA9CDnILvmJaB8aSQ==", "dev": true }, "postcss": { diff --git a/core/package.json b/core/package.json index ca4a7855f45..b149a04f17d 100644 --- a/core/package.json +++ b/core/package.json @@ -44,7 +44,7 @@ "@clack/prompts": "^0.11.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", - "@playwright/test": "^1.55.1", + "@playwright/test": "^1.56.0", "@rollup/plugin-node-resolve": "^8.4.0", "@rollup/plugin-virtual": "^2.0.3", "@stencil/angular-output-target": "^0.10.0", From 7a293d768ce551caf098ffa900c371d147862589 Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 15 Oct 2025 19:00:38 +0000 Subject: [PATCH 009/126] v8.7.7 --- CHANGELOG.md | 13 +++++++++++++ core/CHANGELOG.md | 13 +++++++++++++ core/package-lock.json | 6 +++--- core/package.json | 2 +- lerna.json | 2 +- packages/angular-server/CHANGELOG.md | 8 ++++++++ packages/angular-server/package-lock.json | 8 ++++---- packages/angular-server/package.json | 4 ++-- packages/angular/CHANGELOG.md | 11 +++++++++++ packages/angular/package-lock.json | 8 ++++---- packages/angular/package.json | 4 ++-- packages/docs/CHANGELOG.md | 8 ++++++++ packages/docs/package-lock.json | 6 +++--- packages/docs/package.json | 2 +- packages/react-router/CHANGELOG.md | 8 ++++++++ packages/react-router/package-lock.json | 8 ++++---- packages/react-router/package.json | 4 ++-- packages/react/CHANGELOG.md | 8 ++++++++ packages/react/package-lock.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/CHANGELOG.md | 8 ++++++++ packages/vue-router/package-lock.json | 8 ++++---- packages/vue-router/package.json | 4 ++-- packages/vue/CHANGELOG.md | 8 ++++++++ packages/vue/package-lock.json | 8 ++++---- packages/vue/package.json | 4 ++-- 26 files changed, 130 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7f40c703ed..53f51d43a26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) + + +### Bug Fixes + +* **header:** ensure one banner role in condensed header ([#30718](https://github.com/ionic-team/ionic-framework/issues/30718)) ([12084af](https://github.com/ionic-team/ionic-framework/commit/12084af163ed811b9c6bda3c7850fc0c53c60c7b)) +* **header:** prevent flickering during iOS page transitions ([#30705](https://github.com/ionic-team/ionic-framework/issues/30705)) ([820fa28](https://github.com/ionic-team/ionic-framework/commit/820fa2854331722d22efd0e38a1936117477967a)), closes [#25326](https://github.com/ionic-team/ionic-framework/issues/25326) +* **select:** improve screen reader announcement timing for validation errors ([#30723](https://github.com/ionic-team/ionic-framework/issues/30723)) ([03303d7](https://github.com/ionic-team/ionic-framework/commit/03303d73f0bfe2380ced7931525fc52fd8576367)) + + + + + ## [8.7.6](https://github.com/ionic-team/ionic-framework/compare/v8.7.5...v8.7.6) (2025-10-08) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index ba31e300487..954300e852d 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) + + +### Bug Fixes + +* **header:** ensure one banner role in condensed header ([#30718](https://github.com/ionic-team/ionic-framework/issues/30718)) ([12084af](https://github.com/ionic-team/ionic-framework/commit/12084af163ed811b9c6bda3c7850fc0c53c60c7b)) +* **header:** prevent flickering during iOS page transitions ([#30705](https://github.com/ionic-team/ionic-framework/issues/30705)) ([820fa28](https://github.com/ionic-team/ionic-framework/commit/820fa2854331722d22efd0e38a1936117477967a)), closes [#25326](https://github.com/ionic-team/ionic-framework/issues/25326) +* **select:** improve screen reader announcement timing for validation errors ([#30723](https://github.com/ionic-team/ionic-framework/issues/30723)) ([03303d7](https://github.com/ionic-team/ionic-framework/commit/03303d73f0bfe2380ced7931525fc52fd8576367)) + + + + + ## [8.7.6](https://github.com/ionic-team/ionic-framework/compare/v8.7.5...v8.7.6) (2025-10-08) diff --git a/core/package-lock.json b/core/package-lock.json index 6efd1e68caa..a97530eb88a 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "8.7.6", + "version": "8.7.7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "8.7.6", + "version": "8.7.7", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -18337,4 +18337,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/core/package.json b/core/package.json index b149a04f17d..cd35c38603d 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "8.7.6", + "version": "8.7.7", "description": "Base components for Ionic", "keywords": [ "ionic", diff --git a/lerna.json b/lerna.json index c7be8441fee..c2c40f0bbd1 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "core", "packages/*" ], - "version": "8.7.6" + "version": "8.7.7" } \ No newline at end of file diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index 9fd958ec1d9..205417ccec5 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) + +**Note:** Version bump only for package @ionic/angular-server + + + + + ## [8.7.6](https://github.com/ionic-team/ionic-framework/compare/v8.7.5...v8.7.6) (2025-10-08) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 2deb627d505..67b2c902fb1 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular-server", - "version": "8.7.6", + "version": "8.7.7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "8.7.6", + "version": "8.7.7", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.6" + "@ionic/core": "^8.7.7" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^16.0.0", @@ -11286,4 +11286,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index db797d4dbb7..ff9f2fde34d 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "8.7.6", + "version": "8.7.7", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -62,6 +62,6 @@ }, "prettier": "@ionic/prettier-config", "dependencies": { - "@ionic/core": "^8.7.6" + "@ionic/core": "^8.7.7" } } diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index b87f9d6b107..b376d9a41e6 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) + + +### Bug Fixes + +* **select:** improve screen reader announcement timing for validation errors ([#30723](https://github.com/ionic-team/ionic-framework/issues/30723)) ([03303d7](https://github.com/ionic-team/ionic-framework/commit/03303d73f0bfe2380ced7931525fc52fd8576367)) + + + + + ## [8.7.6](https://github.com/ionic-team/ionic-framework/compare/v8.7.5...v8.7.6) (2025-10-08) **Note:** Version bump only for package @ionic/angular diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 81a32618797..63808fe6fc4 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "8.7.6", + "version": "8.7.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "8.7.6", + "version": "8.7.7", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.6", + "@ionic/core": "^8.7.7", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -9079,4 +9079,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular/package.json b/packages/angular/package.json index fe1bc5e4b39..4a1c72e5c17 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "8.7.6", + "version": "8.7.7", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -48,7 +48,7 @@ } }, "dependencies": { - "@ionic/core": "^8.7.6", + "@ionic/core": "^8.7.7", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md index 1945ffe9fcd..4ed024dce37 100644 --- a/packages/docs/CHANGELOG.md +++ b/packages/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) + +**Note:** Version bump only for package @ionic/docs + + + + + ## [8.7.6](https://github.com/ionic-team/ionic-framework/compare/v8.7.5...v8.7.6) (2025-10-08) **Note:** Version bump only for package @ionic/docs diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 95e60c19021..a29343ebd28 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,13 +1,13 @@ { "name": "@ionic/docs", - "version": "8.7.6", + "version": "8.7.7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "8.7.6", + "version": "8.7.7", "license": "MIT" } } -} +} \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json index f6d2cedb4ce..73a2f404704 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "8.7.6", + "version": "8.7.7", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index f2cb5f56154..1eef525bee0 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) + +**Note:** Version bump only for package @ionic/react-router + + + + + ## [8.7.6](https://github.com/ionic-team/ionic-framework/compare/v8.7.5...v8.7.6) (2025-10-08) **Note:** Version bump only for package @ionic/react-router diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 155fec93893..27a16963917 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "8.7.6", + "version": "8.7.7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "8.7.6", + "version": "8.7.7", "license": "MIT", "dependencies": { - "@ionic/react": "^8.7.6", + "@ionic/react": "^8.7.7", "tslib": "*" }, "devDependencies": { @@ -6844,4 +6844,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 70b28d147fe..07cad69873d 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "8.7.6", + "version": "8.7.7", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^8.7.6", + "@ionic/react": "^8.7.7", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 956c85c4721..d6411574532 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) + +**Note:** Version bump only for package @ionic/react + + + + + ## [8.7.6](https://github.com/ionic-team/ionic-framework/compare/v8.7.5...v8.7.6) (2025-10-08) **Note:** Version bump only for package @ionic/react diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index a1120714942..08392dd21dc 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "8.7.6", + "version": "8.7.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "8.7.6", + "version": "8.7.7", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.6", + "@ionic/core": "^8.7.7", "ionicons": "^8.0.13", "tslib": "*" }, @@ -11913,4 +11913,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/react/package.json b/packages/react/package.json index c06d808a758..e441982a667 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "8.7.6", + "version": "8.7.7", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -40,7 +40,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^8.7.6", + "@ionic/core": "^8.7.7", "ionicons": "^8.0.13", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index 09273dacca3..9ebef9caf76 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) + +**Note:** Version bump only for package @ionic/vue-router + + + + + ## [8.7.6](https://github.com/ionic-team/ionic-framework/compare/v8.7.5...v8.7.6) (2025-10-08) **Note:** Version bump only for package @ionic/vue-router diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 8fbc4720b92..f2e051b7b5f 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "8.7.6", + "version": "8.7.7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "8.7.6", + "version": "8.7.7", "license": "MIT", "dependencies": { - "@ionic/vue": "^8.7.6" + "@ionic/vue": "^8.7.7" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", @@ -12991,4 +12991,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index 256ab9c68d4..164fcc29e72 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "8.7.6", + "version": "8.7.7", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", @@ -44,7 +44,7 @@ }, "homepage": "https://github.com/ionic-team/ionic-framework#readme", "dependencies": { - "@ionic/vue": "^8.7.6" + "@ionic/vue": "^8.7.7" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index c115af294af..fa8e9e7eab6 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) + +**Note:** Version bump only for package @ionic/vue + + + + + ## [8.7.6](https://github.com/ionic-team/ionic-framework/compare/v8.7.5...v8.7.6) (2025-10-08) **Note:** Version bump only for package @ionic/vue diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index b36067dd455..4c7b95db3db 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "8.7.6", + "version": "8.7.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "8.7.6", + "version": "8.7.7", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.6", + "@ionic/core": "^8.7.7", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, @@ -4019,4 +4019,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index 2974fdd3287..bf315a783f0 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "8.7.6", + "version": "8.7.7", "description": "Vue specific wrapper for @ionic/core", "scripts": { "eslint": "eslint src", @@ -68,7 +68,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^8.7.6", + "@ionic/core": "^8.7.7", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, From 4a49e52b6d6e6af625306ad1a28377257c3eb8df Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 15 Oct 2025 19:01:26 +0000 Subject: [PATCH 010/126] chore(): update package lock files --- core/package-lock.json | 2 +- packages/angular-server/package-lock.json | 14 +++++------ packages/angular/package-lock.json | 8 +++--- packages/docs/package-lock.json | 2 +- packages/react-router/package-lock.json | 30 +++++++++++------------ packages/react/package-lock.json | 8 +++--- packages/vue-router/package-lock.json | 30 +++++++++++------------ packages/vue/package-lock.json | 8 +++--- 8 files changed, 51 insertions(+), 51 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index a97530eb88a..0fbec9c9301 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -18337,4 +18337,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 67b2c902fb1..1146cb372ed 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1031,9 +1031,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", - "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", + "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -7306,9 +7306,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", - "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", + "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -11286,4 +11286,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 63808fe6fc4..954fae40e72 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1398,9 +1398,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", - "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", + "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -9079,4 +9079,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index a29343ebd28..7c87c5f4afa 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -10,4 +10,4 @@ "license": "MIT" } } -} \ No newline at end of file +} diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 27a16963917..b5638ec2e04 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -238,9 +238,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", - "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", + "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -415,12 +415,12 @@ } }, "node_modules/@ionic/react": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.6.tgz", - "integrity": "sha512-7uoqcd5AOovtN7MJd5v9xeQFKF4og8W++bvDgka6TQcMTE/8mmzpFJUpOSvhFeOITMaqBHtkCNMvQSCa7vsmfw==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.7.tgz", + "integrity": "sha512-X/olNPQrITyVbKkZRrhauC6cKXO+C6ISCnoDJFxH34TLphSrpOFOpVD/c+a17QMD8RMxe5/zsQ8oY/DOH8pC6w==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.6", + "@ionic/core": "8.7.7", "ionicons": "^8.0.13", "tslib": "*" }, @@ -4175,9 +4175,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", - "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", + "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -4281,11 +4281,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.6.tgz", - "integrity": "sha512-7uoqcd5AOovtN7MJd5v9xeQFKF4og8W++bvDgka6TQcMTE/8mmzpFJUpOSvhFeOITMaqBHtkCNMvQSCa7vsmfw==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.7.tgz", + "integrity": "sha512-X/olNPQrITyVbKkZRrhauC6cKXO+C6ISCnoDJFxH34TLphSrpOFOpVD/c+a17QMD8RMxe5/zsQ8oY/DOH8pC6w==", "requires": { - "@ionic/core": "8.7.6", + "@ionic/core": "8.7.7", "ionicons": "^8.0.13", "tslib": "*" } @@ -6844,4 +6844,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 08392dd21dc..b70c0da4eb3 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -736,9 +736,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", - "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", + "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -11913,4 +11913,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index f2e051b7b5f..fed6bd68c6a 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -673,9 +673,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", - "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", + "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -865,12 +865,12 @@ } }, "node_modules/@ionic/vue": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.6.tgz", - "integrity": "sha512-gK5x5Y0ZpZAW12gjvyBO9oUfwDZxMS7y0xcO0P9qzo++h3ZLcFcSGjHs8D4isUY/mF6mRagt1Y/5b0xDhgUBBw==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.7.tgz", + "integrity": "sha512-ufnxZ2yl4Ep2xgemYOdl/rsAX/Dj01X9qWvk34+mX32Vo3vGRJrI1bySt9tmaBQBZyYll8TVD/xhvdw6sVzLHQ==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.6", + "@ionic/core": "8.7.7", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -8041,9 +8041,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", - "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", + "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -8156,11 +8156,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.6.tgz", - "integrity": "sha512-gK5x5Y0ZpZAW12gjvyBO9oUfwDZxMS7y0xcO0P9qzo++h3ZLcFcSGjHs8D4isUY/mF6mRagt1Y/5b0xDhgUBBw==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.7.tgz", + "integrity": "sha512-ufnxZ2yl4Ep2xgemYOdl/rsAX/Dj01X9qWvk34+mX32Vo3vGRJrI1bySt9tmaBQBZyYll8TVD/xhvdw6sVzLHQ==", "requires": { - "@ionic/core": "8.7.6", + "@ionic/core": "8.7.7", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -12991,4 +12991,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 4c7b95db3db..667001bf45a 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -222,9 +222,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.6", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.6.tgz", - "integrity": "sha512-ufV64Pl0BYSoNla+DaTRXTS3hX6MQZZJPhAR3fJQ4N5Fg/vwMcHADQffstKZeoPqk6mbJoLqoTBjcWvaLRdO0g==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", + "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -4019,4 +4019,4 @@ "dev": true } } -} \ No newline at end of file +} From 9f013b7a5138f992cf310666ff190814e053bcb9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Oct 2025 13:25:46 -0400 Subject: [PATCH 011/126] chore(deps): update playwright (#30732) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Confidence | Type | Update | |---|---|---|---|---|---| | [@playwright/test](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`^1.56.0` -> `^1.56.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.56.0/1.56.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.56.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.56.0/1.56.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | mcr.microsoft.com/playwright | `v1.56.0` -> `v1.56.1` | [![age](https://developer.mend.io/api/mc/badges/age/docker/mcr.microsoft.com%2fplaywright/v1.56.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/mcr.microsoft.com%2fplaywright/v1.56.0/v1.56.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | final | patch | --- ### Release Notes
microsoft/playwright (@​playwright/test) ### [`v1.56.1`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.56.1) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.56.0...v1.56.1) #### Highlights [#​37871](https://redirect.github.com/microsoft/playwright/issues/37871) chore: allow local-network-access permission in chromium [#​37891](https://redirect.github.com/microsoft/playwright/issues/37891) fix(agents): remove workspaceFolder ref from vscode mcp [#​37759](https://redirect.github.com/microsoft/playwright/issues/37759) chore: rename agents to test agents [#​37757](https://redirect.github.com/microsoft/playwright/issues/37757) chore(mcp): fallback to cwd when resolving test config #### Browser Versions - Chromium 141.0.7390.37 - Mozilla Firefox 142.0.1 - WebKit 26.0
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- core/Dockerfile | 2 +- core/package-lock.json | 46 +++++++++++++++++++++--------------------- core/package.json | 2 +- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/core/Dockerfile b/core/Dockerfile index 2b95845ee4e..50a4687701c 100644 --- a/core/Dockerfile +++ b/core/Dockerfile @@ -1,5 +1,5 @@ # Get Playwright -FROM mcr.microsoft.com/playwright:v1.56.0 +FROM mcr.microsoft.com/playwright:v1.56.1 # Set the working directory WORKDIR /ionic diff --git a/core/package-lock.json b/core/package-lock.json index 0fbec9c9301..578fcd95d41 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -22,7 +22,7 @@ "@clack/prompts": "^0.11.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", - "@playwright/test": "^1.56.0", + "@playwright/test": "^1.56.1", "@rollup/plugin-node-resolve": "^8.4.0", "@rollup/plugin-virtual": "^2.0.3", "@stencil/angular-output-target": "^0.10.0", @@ -1715,12 +1715,12 @@ } }, "node_modules/@playwright/test": { - "version": "1.56.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.0.tgz", - "integrity": "sha512-Tzh95Twig7hUwwNe381/K3PggZBZblKUe2wv25oIpzWLr6Z0m4KgV1ZVIjnR6GM9ANEqjZD7XsZEa6JL/7YEgg==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz", + "integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==", "dev": true, "dependencies": { - "playwright": "1.56.0" + "playwright": "1.56.1" }, "bin": { "playwright": "cli.js" @@ -8592,12 +8592,12 @@ } }, "node_modules/playwright": { - "version": "1.56.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.0.tgz", - "integrity": "sha512-X5Q1b8lOdWIE4KAoHpW3SE8HvUB+ZZsUoN64ZhjnN8dOb1UpujxBtENGiZFE+9F/yhzJwYa+ca3u43FeLbboHA==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", + "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", "dev": true, "dependencies": { - "playwright-core": "1.56.0" + "playwright-core": "1.56.1" }, "bin": { "playwright": "cli.js" @@ -8610,9 +8610,9 @@ } }, "node_modules/playwright-core": { - "version": "1.56.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.0.tgz", - "integrity": "sha512-1SXl7pMfemAMSDn5rkPeZljxOCYAmQnYLBTExuh6E8USHXGSX3dx6lYZN/xPpTz1vimXmPA9CDnILvmJaB8aSQ==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", + "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", "dev": true, "bin": { "playwright-core": "cli.js" @@ -11862,12 +11862,12 @@ } }, "@playwright/test": { - "version": "1.56.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.0.tgz", - "integrity": "sha512-Tzh95Twig7hUwwNe381/K3PggZBZblKUe2wv25oIpzWLr6Z0m4KgV1ZVIjnR6GM9ANEqjZD7XsZEa6JL/7YEgg==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz", + "integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==", "dev": true, "requires": { - "playwright": "1.56.0" + "playwright": "1.56.1" } }, "@rollup/plugin-node-resolve": { @@ -16811,19 +16811,19 @@ } }, "playwright": { - "version": "1.56.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.0.tgz", - "integrity": "sha512-X5Q1b8lOdWIE4KAoHpW3SE8HvUB+ZZsUoN64ZhjnN8dOb1UpujxBtENGiZFE+9F/yhzJwYa+ca3u43FeLbboHA==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", + "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", "dev": true, "requires": { "fsevents": "2.3.2", - "playwright-core": "1.56.0" + "playwright-core": "1.56.1" } }, "playwright-core": { - "version": "1.56.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.0.tgz", - "integrity": "sha512-1SXl7pMfemAMSDn5rkPeZljxOCYAmQnYLBTExuh6E8USHXGSX3dx6lYZN/xPpTz1vimXmPA9CDnILvmJaB8aSQ==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", + "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", "dev": true }, "postcss": { diff --git a/core/package.json b/core/package.json index cd35c38603d..bb221593bec 100644 --- a/core/package.json +++ b/core/package.json @@ -44,7 +44,7 @@ "@clack/prompts": "^0.11.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", - "@playwright/test": "^1.56.0", + "@playwright/test": "^1.56.1", "@rollup/plugin-node-resolve": "^8.4.0", "@rollup/plugin-virtual": "^2.0.3", "@stencil/angular-output-target": "^0.10.0", From bdc80d8e825d91653da3a5ce00c2862c63319b8b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Oct 2025 09:58:13 -0400 Subject: [PATCH 012/126] chore(deps): update dependency @capacitor/core to v7.4.4 (#30746) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [@capacitor/core](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`7.4.3` -> `7.4.4`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/7.4.3/7.4.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fcore/7.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fcore/7.4.3/7.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
ionic-team/capacitor (@​capacitor/core) ### [`v7.4.4`](https://redirect.github.com/ionic-team/capacitor/compare/7.4.3...20fa5015b7940a19a61e005e4212af967ae8f108) [Compare Source](https://redirect.github.com/ionic-team/capacitor/compare/7.4.3...7.4.4)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- core/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 578fcd95d41..fc879775595 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -663,9 +663,9 @@ "dev": true }, "node_modules/@capacitor/core": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.3.tgz", - "integrity": "sha512-wCWr8fQ9Wxn0466vPg7nMn0tivbNVjNy1yL4GvDSIZuZx7UpU2HeVGNe9QjN/quEd+YLRFeKEBLBw619VqUiNg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.4.tgz", + "integrity": "sha512-xzjxpr+d2zwTpCaN0k+C6wKSZzWFAb9OVEUtmO72ihjr/NEDoLvsGl4WLfjWPcCO2zOy0b2X52tfRWjECFUjtw==", "dev": true, "dependencies": { "tslib": "^2.1.0" @@ -11101,9 +11101,9 @@ "dev": true }, "@capacitor/core": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.3.tgz", - "integrity": "sha512-wCWr8fQ9Wxn0466vPg7nMn0tivbNVjNy1yL4GvDSIZuZx7UpU2HeVGNe9QjN/quEd+YLRFeKEBLBw619VqUiNg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.4.tgz", + "integrity": "sha512-xzjxpr+d2zwTpCaN0k+C6wKSZzWFAb9OVEUtmO72ihjr/NEDoLvsGl4WLfjWPcCO2zOy0b2X52tfRWjECFUjtw==", "dev": true, "requires": { "tslib": "^2.1.0" From ba739887509482e9fdbb8309426bb2926b778529 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Oct 2025 09:58:36 -0400 Subject: [PATCH 013/126] chore(deps): update dependency @axe-core/playwright to ^4.11.0 (#30747) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [@axe-core/playwright](https://redirect.github.com/dequelabs/axe-core-npm) | [`^4.10.2` -> `^4.11.0`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.10.2/4.11.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@axe-core%2fplaywright/4.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@axe-core%2fplaywright/4.10.2/4.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
dequelabs/axe-core-npm (@​axe-core/playwright) ### [`v4.11.0`](https://redirect.github.com/dequelabs/axe-core-npm/blob/HEAD/CHANGELOG.md#4110-2025-10-14) [Compare Source](https://redirect.github.com/dequelabs/axe-core-npm/compare/v4.10.2...a7af9e96a24105a56def373bf0339cf57cda0403) ##### Bug Fixes - Optimize AxeBuilder memory usage. ([#​1154](https://redirect.github.com/dequelabs/axe-core-npm/issues/1154)) ([e53cd36](https://redirect.github.com/dequelabs/axe-core-npm/commit/e53cd36d0770a8323577946b0438f058b87a0aad)), closes [/github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/axePuppeteer.ts#L59](https://redirect.github.com//github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/axePuppeteer.ts/issues/L59) [/github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/utils.ts#L34](https://redirect.github.com//github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/utils.ts/issues/L34) - Update axe-core to v4.10.3 ([#​1155](https://redirect.github.com/dequelabs/axe-core-npm/issues/1155)) ([f8e3a14](https://redirect.github.com/dequelabs/axe-core-npm/commit/f8e3a14043c7288ca9373a5f1543ffd27cedf256)) - **wdio:** resolve blank navigation issue in WDIO v9 ([#​1169](https://redirect.github.com/dequelabs/axe-core-npm/issues/1169)) ([6505560](https://redirect.github.com/dequelabs/axe-core-npm/commit/6505560d646ddc6db8a9b4cf772af08ff3f08dc3)) ##### Features - Update axe-core to v4.11.0 ([#​1233](https://redirect.github.com/dequelabs/axe-core-npm/issues/1233)) ([2758476](https://redirect.github.com/dequelabs/axe-core-npm/commit/27584764815148bf902f29010cca0f4f2230cf46)) #### [4.10.2](https://redirect.github.com/dequelabs/axe-core-npm/compare/v4.10.1...v4.10.2) (2025-05-12) ##### Bug Fixes - Optimize AxeBuilder memory usage. ([#​1154](https://redirect.github.com/dequelabs/axe-core-npm/issues/1154)) ([e53cd36](https://redirect.github.com/dequelabs/axe-core-npm/commit/e53cd36d0770a8323577946b0438f058b87a0aad)), closes [/github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/axePuppeteer.ts#L59](https://redirect.github.com//github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/axePuppeteer.ts/issues/L59) [/github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/utils.ts#L34](https://redirect.github.com//github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/utils.ts/issues/L34) - Update axe-core to v4.10.3 ([#​1155](https://redirect.github.com/dequelabs/axe-core-npm/issues/1155)) ([f8e3a14](https://redirect.github.com/dequelabs/axe-core-npm/commit/f8e3a14043c7288ca9373a5f1543ffd27cedf256)) - **wdio:** resolve blank navigation issue in WDIO v9 ([#​1169](https://redirect.github.com/dequelabs/axe-core-npm/issues/1169)) ([6505560](https://redirect.github.com/dequelabs/axe-core-npm/commit/6505560d646ddc6db8a9b4cf772af08ff3f08dc3)) #### [4.10.1](https://redirect.github.com/dequelabs/axe-core-npm/compare/v4.10.0...v4.10.1) (2024-10-29) ##### Bug Fixes - Update axe-core to v4.10.1 ([#​1124](https://redirect.github.com/dequelabs/axe-core-npm/issues/1124)) ([099818b](https://redirect.github.com/dequelabs/axe-core-npm/commit/099818bcef1da11df1700027cd6487e338e5cbd2)) - Update axe-core to v4.10.2 ([#​1128](https://redirect.github.com/dequelabs/axe-core-npm/issues/1128)) ([aaaa34e](https://redirect.github.com/dequelabs/axe-core-npm/commit/aaaa34e7c3fdf51b285870203d59a1f55b030c21))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- core/package-lock.json | 30 +++++++++++++++--------------- core/package.json | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index fc879775595..e17c4cdf11a 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -14,7 +14,7 @@ "tslib": "^2.1.0" }, "devDependencies": { - "@axe-core/playwright": "^4.10.2", + "@axe-core/playwright": "^4.11.0", "@capacitor/core": "^7.0.0", "@capacitor/haptics": "^7.0.0", "@capacitor/keyboard": "^7.0.0", @@ -57,12 +57,12 @@ "dev": true }, "node_modules/@axe-core/playwright": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.10.2.tgz", - "integrity": "sha512-6/b5BJjG6hDaRNtgzLIfKr5DfwyiLHO4+ByTLB0cJgWSM8Ll7KqtdblIS6bEkwSF642/Ex91vNqIl3GLXGlceg==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.11.0.tgz", + "integrity": "sha512-70vBT/Ylqpm65RQz2iCG2o0JJCEG/WCNyefTr2xcOcr1CoSee60gNQYUMZZ7YukoKkFLv26I/jjlsvwwp532oQ==", "dev": true, "dependencies": { - "axe-core": "~4.10.3" + "axe-core": "~4.11.0" }, "peerDependencies": { "playwright-core": ">= 1.0.0" @@ -3033,9 +3033,9 @@ } }, "node_modules/axe-core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", - "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz", + "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", "dev": true, "engines": { "node": ">=4" @@ -10652,12 +10652,12 @@ }, "dependencies": { "@axe-core/playwright": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.10.2.tgz", - "integrity": "sha512-6/b5BJjG6hDaRNtgzLIfKr5DfwyiLHO4+ByTLB0cJgWSM8Ll7KqtdblIS6bEkwSF642/Ex91vNqIl3GLXGlceg==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.11.0.tgz", + "integrity": "sha512-70vBT/Ylqpm65RQz2iCG2o0JJCEG/WCNyefTr2xcOcr1CoSee60gNQYUMZZ7YukoKkFLv26I/jjlsvwwp532oQ==", "dev": true, "requires": { - "axe-core": "~4.10.3" + "axe-core": "~4.11.0" } }, "@babel/code-frame": { @@ -12770,9 +12770,9 @@ } }, "axe-core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", - "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz", + "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", "dev": true }, "babel-jest": { diff --git a/core/package.json b/core/package.json index bb221593bec..1e35ab84942 100644 --- a/core/package.json +++ b/core/package.json @@ -36,7 +36,7 @@ "tslib": "^2.1.0" }, "devDependencies": { - "@axe-core/playwright": "^4.10.2", + "@axe-core/playwright": "^4.11.0", "@capacitor/core": "^7.0.0", "@capacitor/haptics": "^7.0.0", "@capacitor/keyboard": "^7.0.0", From 54a1c86d6a5d533b0c8c2d18edc62454a7c17bab Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Thu, 23 Oct 2025 10:09:05 -0700 Subject: [PATCH 014/126] fix(checkbox, toggle): fire ionFocus and ionBlur (#30733) Issue number: internal --------- ## What is the current behavior? `ionFocus` and `ionBlur` are not being emitted for checkbox and toggle. ## What is the new behavior? - Moved the `onFocus` and `onBlur` to `Host` - Added tests for `onFocus`, `onBlur`, and `onChange`. - Added a workaround on Playwright in order to trigger `ionBlur` since Playwright browsers aren't acting like native browsers when it comes to tabbing. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Dev build: `8.7.7-dev.11761071592.1d1b804d` --------- Co-authored-by: ionitron Co-authored-by: Shane --- core/src/components/checkbox/checkbox.tsx | 13 +- .../checkbox/test/basic/checkbox.e2e.ts | 196 +++++++++++++- ...kbox-focus-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2018 bytes ...box-focus-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2442 bytes ...kbox-focus-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2849 bytes ...item-focus-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2090 bytes ...tem-focus-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2779 bytes ...item-focus-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2697 bytes .../components/checkbox/test/basic/index.html | 14 + .../components/checkbox/test/item/index.html | 14 + .../components/toggle/test/basic/index.html | 14 + .../toggle/test/basic/toggle.e2e.ts | 251 +++++++++++++++++- ...ggle-focus-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2390 bytes ...gle-focus-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2967 bytes ...ggle-focus-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3396 bytes ...item-focus-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2507 bytes ...tem-focus-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3253 bytes ...item-focus-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3158 bytes .../components/toggle/test/item/index.html | 14 + core/src/components/toggle/toggle.tsx | 11 +- .../playwright/page/utils/spy-on-event.ts | 34 +++ 21 files changed, 542 insertions(+), 19 deletions(-) create mode 100644 core/src/components/checkbox/test/basic/checkbox.e2e.ts-snapshots/checkbox-focus-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/checkbox/test/basic/checkbox.e2e.ts-snapshots/checkbox-focus-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/checkbox/test/basic/checkbox.e2e.ts-snapshots/checkbox-focus-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/checkbox/test/basic/checkbox.e2e.ts-snapshots/checkbox-in-item-focus-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/checkbox/test/basic/checkbox.e2e.ts-snapshots/checkbox-in-item-focus-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/checkbox/test/basic/checkbox.e2e.ts-snapshots/checkbox-in-item-focus-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-focus-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-focus-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-focus-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-in-item-focus-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-in-item-focus-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-in-item-focus-ios-ltr-Mobile-Safari-linux.png diff --git a/core/src/components/checkbox/checkbox.tsx b/core/src/components/checkbox/checkbox.tsx index 00a9de5c7cf..22f3959fba7 100644 --- a/core/src/components/checkbox/checkbox.tsx +++ b/core/src/components/checkbox/checkbox.tsx @@ -34,7 +34,6 @@ export class Checkbox implements ComponentInterface { private inputLabelId = `${this.inputId}-lbl`; private helperTextId = `${this.inputId}-helper-text`; private errorTextId = `${this.inputId}-error-text`; - private focusEl?: HTMLElement; private inheritedAttributes: Attributes = {}; @Element() el!: HTMLIonCheckboxElement; @@ -147,9 +146,7 @@ export class Checkbox implements ComponentInterface { /** @internal */ @Method() async setFocus() { - if (this.focusEl) { - this.focusEl.focus(); - } + this.el.focus(); } /** @@ -169,7 +166,6 @@ export class Checkbox implements ComponentInterface { private toggleChecked = (ev: Event) => { ev.preventDefault(); - this.setFocus(); this.setChecked(!this.checked); this.indeterminate = false; }; @@ -285,6 +281,9 @@ export class Checkbox implements ComponentInterface { aria-disabled={disabled ? 'true' : null} tabindex={disabled ? undefined : 0} onKeyDown={this.onKeyDown} + onFocus={this.onFocus} + onBlur={this.onBlur} + onClick={this.onClick} class={createColorClasses(color, { [mode]: true, 'in-item': hostContext('ion-item', el), @@ -296,7 +295,6 @@ export class Checkbox implements ComponentInterface { [`checkbox-alignment-${alignment}`]: alignment !== undefined, [`checkbox-label-placement-${labelPlacement}`]: true, })} - onClick={this.onClick} >
+ + diff --git a/core/src/components/toggle/test/basic/index.html b/core/src/components/toggle/test/basic/index.html index e8e286b7a73..a127f5c5af6 100644 --- a/core/src/components/toggle/test/basic/index.html +++ b/core/src/components/toggle/test/basic/index.html @@ -45,6 +45,20 @@ Full-width
Long Label Long Label Long Label Long Label Long Label Long Label
+ + diff --git a/core/src/components/toggle/test/basic/toggle.e2e.ts b/core/src/components/toggle/test/basic/toggle.e2e.ts index 0cdd76792a4..9502df83b55 100644 --- a/core/src/components/toggle/test/basic/toggle.e2e.ts +++ b/core/src/components/toggle/test/basic/toggle.e2e.ts @@ -1,7 +1,65 @@ import { expect } from '@playwright/test'; import { configs, test } from '@utils/test/playwright'; -configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { +/** + * This behavior does not vary across modes/directions + */ +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('toggle: ionChange'), () => { + test('should fire ionChange when interacting with toggle', async ({ page }) => { + await page.setContent( + ` + + `, + config + ); + + const ionChange = await page.spyOnEvent('ionChange'); + const toggle = page.locator('ion-toggle'); + + await toggle.click(); + expect(ionChange).toHaveReceivedEventDetail({ value: 'my-toggle', checked: true }); + + await toggle.click(); + expect(ionChange).toHaveReceivedEventDetail({ value: 'my-toggle', checked: false }); + }); + + test('should fire ionChange when interacting with toggle in item', async ({ page }) => { + await page.setContent( + ` + + + + `, + config + ); + + const ionChange = await page.spyOnEvent('ionChange'); + const item = page.locator('ion-item'); + + await item.click(); + expect(ionChange).toHaveReceivedEventDetail({ value: 'my-toggle', checked: true }); + + await item.click(); + expect(ionChange).toHaveReceivedEventDetail({ value: 'my-toggle', checked: false }); + }); + + test('should not fire when programmatically setting a value', async ({ page }) => { + await page.setContent( + ` + + `, + config + ); + + const ionChange = await page.spyOnEvent('ionChange'); + const toggle = page.locator('ion-toggle'); + + await toggle.evaluate((el: HTMLIonToggleElement) => (el.checked = true)); + expect(ionChange).not.toHaveReceivedEvent(); + }); + }); + test.describe(title('toggle: click'), () => { test('should trigger onclick only once when clicking the label', async ({ page }, testInfo) => { testInfo.annotations.push({ @@ -35,4 +93,195 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => expect(clickCount).toBe(1); }); }); + + test.describe(title('toggle: ionFocus'), () => { + test('should not have visual regressions', async ({ page, pageUtils }) => { + await page.setContent( + ` + + +
+ Unchecked +
+ `, + config + ); + + await pageUtils.pressKeys('Tab'); + + const container = page.locator('#container'); + + await expect(container).toHaveScreenshot(screenshot(`toggle-focus`)); + }); + + test('should not have visual regressions when interacting with toggle in item', async ({ page, pageUtils }) => { + await page.setContent( + ` + + Unchecked + + `, + config + ); + + // Test focus with keyboard navigation + await pageUtils.pressKeys('Tab'); + + const item = page.locator('ion-item'); + + await expect(item).toHaveScreenshot(screenshot(`toggle-in-item-focus`)); + }); + + test('should fire ionFocus when toggle is focused', async ({ page, pageUtils }) => { + await page.setContent( + ` + + `, + config + ); + + const ionFocus = await page.spyOnEvent('ionFocus'); + + // Test focus with keyboard navigation + await pageUtils.pressKeys('Tab'); + + expect(ionFocus).toHaveReceivedEventTimes(1); + + // Reset focus + const toggle = page.locator('ion-toggle'); + const toggleBoundingBox = (await toggle.boundingBox())!; + await page.mouse.click(0, toggleBoundingBox.height + 1); + + // Test focus with click + await toggle.click(); + + expect(ionFocus).toHaveReceivedEventTimes(2); + }); + + test('should fire ionFocus when interacting with toggle in item', async ({ page, pageUtils }) => { + await page.setContent( + ` + + + + `, + config + ); + + const ionFocus = await page.spyOnEvent('ionFocus'); + + // Test focus with keyboard navigation + await pageUtils.pressKeys('Tab'); + + expect(ionFocus).toHaveReceivedEventTimes(1); + + // Verify that the event target is the toggle and not the item + const eventByKeyboard = ionFocus.events[0]; + expect((eventByKeyboard.target as HTMLElement).tagName.toLowerCase()).toBe('ion-toggle'); + + // Reset focus + const toggle = page.locator('ion-toggle'); + const toggleBoundingBox = (await toggle.boundingBox())!; + await page.mouse.click(0, toggleBoundingBox.height + 1); + + // Test focus with click + const item = page.locator('ion-item'); + await item.click(); + + expect(ionFocus).toHaveReceivedEventTimes(2); + + // Verify that the event target is the toggle and not the item + const eventByClick = ionFocus.events[0]; + expect((eventByClick.target as HTMLElement).tagName.toLowerCase()).toBe('ion-toggle'); + }); + + test('should not fire when programmatically setting a value', async ({ page }) => { + await page.setContent( + ` + + `, + config + ); + + const ionFocus = await page.spyOnEvent('ionFocus'); + const toggle = page.locator('ion-toggle'); + + await toggle.evaluate((el: HTMLIonToggleElement) => (el.checked = true)); + expect(ionFocus).not.toHaveReceivedEvent(); + }); + }); + + test.describe(title('toggle: ionBlur'), () => { + test('should fire ionBlur when toggle is blurred', async ({ page, pageUtils }) => { + await page.setContent( + ` + + `, + config + ); + + const ionBlur = await page.spyOnEvent('ionBlur'); + + // Test blur with keyboard navigation + // Focus the toggle + await pageUtils.pressKeys('Tab'); + // Blur the toggle + await pageUtils.pressKeys('Tab'); + + expect(ionBlur).toHaveReceivedEventTimes(1); + + // Test blur with click + const toggle = page.locator('ion-toggle'); + // Focus the toggle + await toggle.click(); + // Blur the toggle by clicking outside of it + const toggleBoundingBox = (await toggle.boundingBox())!; + await page.mouse.click(0, toggleBoundingBox.height + 1); + + expect(ionBlur).toHaveReceivedEventTimes(2); + }); + + test('should fire ionBlur after interacting with toggle in item', async ({ page, pageUtils }) => { + await page.setContent( + ` + + + + `, + config + ); + + const ionBlur = await page.spyOnEvent('ionBlur'); + + // Test blur with keyboard navigation + // Focus the toggle + await pageUtils.pressKeys('Tab'); + // Blur the toggle + await pageUtils.pressKeys('Tab'); + + expect(ionBlur).toHaveReceivedEventTimes(1); + + // Verify that the event target is the toggle and not the item + const event = ionBlur.events[0]; + expect((event.target as HTMLElement).tagName.toLowerCase()).toBe('ion-toggle'); + + // Test blur with click + const item = page.locator('ion-item'); + await item.click(); + // Blur the toggle by clicking outside of it + const itemBoundingBox = (await item.boundingBox())!; + await page.mouse.click(0, itemBoundingBox.height + 1); + + expect(ionBlur).toHaveReceivedEventTimes(2); + + // Verify that the event target is the toggle and not the item + const eventByClick = ionBlur.events[0]; + expect((eventByClick.target as HTMLElement).tagName.toLowerCase()).toBe('ion-toggle'); + }); + }); }); diff --git a/core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-focus-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-focus-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7cbc111959c83693298db620045a82fa509b80 GIT binary patch literal 2390 zcmV-c390spP)NfcL1Kt&|ou+Txtvm?R({WDZ}x3ct$ zQ2YV$#nq2Z$xO`3Nl5>jSu>OM#FFR73r-Fa3h$_>5Z}v0s9cm+2)=lZzlqOh%bMS( zwT$tL*ccHX5PrW|8@Ek2;N-7F`?z(lm5Cakn)pIxF8e?ef|2iq@*NJ z^T6}{+W$VAa;PFcKE7_5YcypDB4$R`gn;nUjWj{Ci$6X}? zHEr$VQ!tn9lE=ORo2(Mkd0;^I&PN8<`oc>k|VUwmrQ@tIJ#`t|D@Qji|3 z{9a(vOVtat2w|YOxR?{%pO~0v$DOofGzWu0`XU0^#W=AE?Z15aB2C%s;unhAfgq1N z8QJ)wUcGwu9Z5^tZcTlvt0ijEyS8h6Q72&c$kV83v; zL!CNxq`aIhCqP++MFVeiaPZ(kJi(mG@%8K1bLPxhzkdC^dGokM=`wuy@bl--cj?lF zKW5UTNrw*~9yI93_7zt;ckV1#&=xFMFnRLiZQHiVTXY;UWXPpUmvD^qH`7phdb*`e zgXPPYZ``=??Af#OTQf2E?%g|lfBW|BtgI|Pd396v;Sa%25sUmTkyV3mL4}nLJewEx z?%lg%$BtXKZoPW-YU0F+bEIV7<&SEHx967SE zuu$e%yLayRWba4l`}ts#O%ixwfWZr!>WpRgu_OcscE`t<27TecMXKFyjnYlKszpJHNSgm+Z8 z7Ofg8em5P2&(Lgg2tDQ#8(1fA*RGv$i)FIjy?YzAP}8POja$^pvKL1*M8|RC#`&t~ z+qbXK%K=N96tu*c?%lih?Ag<3V`A{ln>Ux;e*f@yv+L&dpWYs`6Xuz&ai<@)%4PFJ274NM6P0W1YEU$&w{UjvTQx zNH)L}L$P2OJa_J#1MN!u`cpyjX#=m2G13iwD?eN7VDR9hS!)@AR7PxWa z1|2C7P>G4b88c>l`}PfelYTOnEnT{lnMF8)=z`9$CcFb{E(?%&t1{N?xwO|?wcp)r z>W>Bl1FAI!5K&Yc!e7Ulm~a8P1yv{+ ziJQ$v0}>aevltyF9hu~cXdY6c0{VJb+wn47S)C|!ps)$kIg4rdiA5@x;~4L-)FJfJ zFzf5CeQnWUd2`7ZZk0SofkMoF{^kRQg*;-=C;t-z#10m$Qk{iGVqt@c#JmV=4&Cg%e@` z)dA_DAp%1R!ZtJxe}BOaW;*c2r&fM1C@aiYud+CX!d7_qb?-)|JUH%#>@dv~gmlB)$Q@yO5__S=ZX6pY_RR~otC?rY;3Js+Lg@)3B zLPP05p`mo3&`>&1Xeb>hH2x0&0RR6P1h$F*000I_L_t&o01OZo76{&VAOHXW07*qo IM6N<$f_9;baR2}S literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-focus-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-focus-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..bb21be2862e9873f5272158f9d04bd5f6d88f0ae GIT binary patch literal 2967 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 N002ovPDHLkV1g2HfCm5o literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-focus-ios-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/basic/toggle.e2e.ts-snapshots/toggle-focus-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..07a370b9311e019395fd3128376cb4974e9f911b GIT binary patch literal 3396 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 MfwD0zMY_iP8%5M6)Bpeg literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/item/index.html b/core/src/components/toggle/test/item/index.html index caeda79d077..b872bcf3ea3 100644 --- a/core/src/components/toggle/test/item/index.html +++ b/core/src/components/toggle/test/item/index.html @@ -223,6 +223,20 @@

Multiline Label

+ + diff --git a/core/src/components/toggle/toggle.tsx b/core/src/components/toggle/toggle.tsx index ea63656a2f0..18f4b26115c 100644 --- a/core/src/components/toggle/toggle.tsx +++ b/core/src/components/toggle/toggle.tsx @@ -40,7 +40,6 @@ export class Toggle implements ComponentInterface { private helperTextId = `${this.inputId}-helper-text`; private errorTextId = `${this.inputId}-error-text`; private gesture?: Gesture; - private focusEl?: HTMLElement; private lastDrag = 0; private inheritedAttributes: Attributes = {}; private toggleTrack?: HTMLElement; @@ -162,7 +161,6 @@ export class Toggle implements ComponentInterface { const isNowChecked = !checked; this.checked = isNowChecked; - this.setFocus(); this.ionChange.emit({ checked: isNowChecked, value, @@ -243,9 +241,7 @@ export class Toggle implements ComponentInterface { } private setFocus() { - if (this.focusEl) { - this.focusEl.focus(); - } + this.el.focus(); } private onKeyDown = (ev: KeyboardEvent) => { @@ -417,6 +413,8 @@ export class Toggle implements ComponentInterface { aria-disabled={disabled ? 'true' : null} tabindex={disabled ? undefined : 0} onKeyDown={this.onKeyDown} + onFocus={this.onFocus} + onBlur={this.onBlur} class={createColorClasses(color, { [mode]: true, 'in-item': hostContext('ion-item', el), @@ -441,9 +439,6 @@ export class Toggle implements ComponentInterface { checked={checked} disabled={disabled} id={inputId} - onFocus={() => this.onFocus()} - onBlur={() => this.onBlur()} - ref={(focusEl) => (this.focusEl = focusEl)} required={required} {...inheritedAttributes} /> diff --git a/core/src/utils/test/playwright/page/utils/spy-on-event.ts b/core/src/utils/test/playwright/page/utils/spy-on-event.ts index a34f7194027..bc6891dc1cd 100644 --- a/core/src/utils/test/playwright/page/utils/spy-on-event.ts +++ b/core/src/utils/test/playwright/page/utils/spy-on-event.ts @@ -2,6 +2,40 @@ import type { E2EPage } from '../../playwright-declarations'; import { addE2EListener, EventSpy } from '../event-spy'; export const spyOnEvent = async (page: E2EPage, eventName: string): Promise => { + /** + * Tabbing out of the page boundary can lead to unreliable `ionBlur events, + * particularly in Firefox. + * + * This occurs because Playwright may incorrectly maintain focus state on the + * last element, even after a Tab press attempts to shift focus outside the + * viewport. To reliably trigger the necessary blur event, add a visually + * hidden, focusable element at the end of the page to receive focus instead of + * the browser. + * + * Playwright issue reference: + * https://github.com/microsoft/playwright/issues/32269 + */ + if (eventName === 'ionBlur') { + const hiddenInput = await page.$('#hidden-input-for-ion-blur'); + if (!hiddenInput) { + await page.evaluate(() => { + const input = document.createElement('input'); + input.id = 'hidden-input-for-ion-blur'; + input.style.position = 'absolute'; + input.style.opacity = '0'; + input.style.height = '0'; + input.style.width = '0'; + input.style.pointerEvents = 'none'; + document.body.appendChild(input); + + // Clean up the element when the page is unloaded. + window.addEventListener('unload', () => { + input.remove(); + }); + }); + } + } + const spy = new EventSpy(eventName); const handle = await page.evaluateHandle(() => window); From abd3eacadf6a30153835465135d19fec02a107df Mon Sep 17 00:00:00 2001 From: OS-jacobbell <228905018+OS-jacobbell@users.noreply.github.com> Date: Mon, 27 Oct 2025 10:47:56 -0600 Subject: [PATCH 015/126] chore(ci): send alert message when stencil-nightly workflow finishes (#30743) Send alert to a Discord channel using a webhook. --------- ## What is the current behavior? ## What is the new behavior? - If a step in the workflow fails, an alert message will be sent to a Discord channel using a webhook. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information --------- Co-authored-by: Brandy Smith --- .github/workflows/stencil-nightly.yml | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/.github/workflows/stencil-nightly.yml b/.github/workflows/stencil-nightly.yml index 6b24a9d69bb..354b78ec119 100644 --- a/.github/workflows/stencil-nightly.yml +++ b/.github/workflows/stencil-nightly.yml @@ -225,3 +225,35 @@ jobs: - name: Check build matrix status if: ${{ needs.test-react-e2e.result != 'success' }} run: exit 1 + + send-success-messages: + needs: [test-core-clean-build, test-core-lint, test-core-spec, verify-screenshots, verify-test-vue-e2e, verify-test-angular-e2e, verify-test-react-router-e2e, verify-test-react-e2e] + runs-on: ubuntu-latest + if: ${{ !cancelled() && contains(needs.*.result, 'success') }} + steps: + - name: Notify success on Discord + run: | + curl -H "Content-Type:application/json" \ + -d '{"embeds": [{"title": "βœ… Workflow ${{github.workflow}} #${{github.run_number}} finished successfully", "color": 65280, "url": "${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}}"}]}' \ + ${{secrets.DISCORD_NOTIFY_WEBHOOK}} + - name: Notify success on Slack + run: | + curl -H "Content-Type:application/json" \ + -d '{"title": "βœ… Workflow ${{github.workflow}} #${{github.run_number}} finished successfully", "url": "${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}}"}' \ + ${{secrets.SLACK_NOTIFY_SUCCESS_WEBHOOK}} + + send-failure-messages: + needs: [test-core-clean-build, test-core-lint, test-core-spec, verify-screenshots, verify-test-vue-e2e, verify-test-angular-e2e, verify-test-react-router-e2e, verify-test-react-e2e] + runs-on: ubuntu-latest + if: ${{ !cancelled() && contains(needs.*.result, 'failure') }} + steps: + - name: Notify failure on Discord + run: | + curl -H "Content-Type:application/json" \ + -d '{"content": "Alerting <@&1347593178580254761>!", "embeds": [{"title": "❌ Workflow ${{github.workflow}} #${{github.run_number}} failed", "color": 16711680, "url": "${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}}"}]}' \ + ${{secrets.DISCORD_NOTIFY_WEBHOOK}} + - name: Notify failure on Slack + run: | + curl -H "Content-Type:application/json" \ + -d '{"title": "❌ Workflow ${{github.workflow}} #${{github.run_number}} failed", "url": "${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}}"}' \ + ${{secrets.SLACK_NOTIFY_FAILURE_WEBHOOK}} From 8a8eec4247bb80bb7a1df35498b68bc8ea5bec28 Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 29 Oct 2025 17:40:53 +0000 Subject: [PATCH 016/126] v8.7.8 --- CHANGELOG.md | 11 +++++++++++ core/CHANGELOG.md | 11 +++++++++++ core/package-lock.json | 6 +++--- core/package.json | 2 +- lerna.json | 2 +- packages/angular-server/CHANGELOG.md | 8 ++++++++ packages/angular-server/package-lock.json | 8 ++++---- packages/angular-server/package.json | 4 ++-- packages/angular/CHANGELOG.md | 8 ++++++++ packages/angular/package-lock.json | 8 ++++---- packages/angular/package.json | 4 ++-- packages/docs/CHANGELOG.md | 8 ++++++++ packages/docs/package-lock.json | 6 +++--- packages/docs/package.json | 2 +- packages/react-router/CHANGELOG.md | 8 ++++++++ packages/react-router/package-lock.json | 8 ++++---- packages/react-router/package.json | 4 ++-- packages/react/CHANGELOG.md | 8 ++++++++ packages/react/package-lock.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/CHANGELOG.md | 8 ++++++++ packages/vue-router/package-lock.json | 8 ++++---- packages/vue-router/package.json | 4 ++-- packages/vue/CHANGELOG.md | 8 ++++++++ packages/vue/package-lock.json | 8 ++++---- packages/vue/package.json | 4 ++-- 26 files changed, 123 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53f51d43a26..6de4f7473a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) + + +### Bug Fixes + +* **checkbox, toggle:** fire ionFocus and ionBlur ([#30733](https://github.com/ionic-team/ionic-framework/issues/30733)) ([54a1c86](https://github.com/ionic-team/ionic-framework/commit/54a1c86d6a5d533b0c8c2d18edc62454a7c17bab)) + + + + + ## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 954300e852d..b19ce776075 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) + + +### Bug Fixes + +* **checkbox, toggle:** fire ionFocus and ionBlur ([#30733](https://github.com/ionic-team/ionic-framework/issues/30733)) ([54a1c86](https://github.com/ionic-team/ionic-framework/commit/54a1c86d6a5d533b0c8c2d18edc62454a7c17bab)) + + + + + ## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) diff --git a/core/package-lock.json b/core/package-lock.json index e17c4cdf11a..7488ed6d517 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "8.7.7", + "version": "8.7.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "8.7.7", + "version": "8.7.8", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -18337,4 +18337,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/core/package.json b/core/package.json index 1e35ab84942..2408be873e1 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "8.7.7", + "version": "8.7.8", "description": "Base components for Ionic", "keywords": [ "ionic", diff --git a/lerna.json b/lerna.json index c2c40f0bbd1..e66bf5e6408 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "core", "packages/*" ], - "version": "8.7.7" + "version": "8.7.8" } \ No newline at end of file diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index 205417ccec5..edaab782eab 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) + +**Note:** Version bump only for package @ionic/angular-server + + + + + ## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 1146cb372ed..38cbd14e0f5 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular-server", - "version": "8.7.7", + "version": "8.7.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "8.7.7", + "version": "8.7.8", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.7" + "@ionic/core": "^8.7.8" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^16.0.0", @@ -11286,4 +11286,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index ff9f2fde34d..f1618b7b9cc 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "8.7.7", + "version": "8.7.8", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -62,6 +62,6 @@ }, "prettier": "@ionic/prettier-config", "dependencies": { - "@ionic/core": "^8.7.7" + "@ionic/core": "^8.7.8" } } diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index b376d9a41e6..867e78764a9 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) + +**Note:** Version bump only for package @ionic/angular + + + + + ## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 954fae40e72..65402778c83 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "8.7.7", + "version": "8.7.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "8.7.7", + "version": "8.7.8", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.7", + "@ionic/core": "^8.7.8", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -9079,4 +9079,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular/package.json b/packages/angular/package.json index 4a1c72e5c17..774f7903b7f 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "8.7.7", + "version": "8.7.8", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -48,7 +48,7 @@ } }, "dependencies": { - "@ionic/core": "^8.7.7", + "@ionic/core": "^8.7.8", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md index 4ed024dce37..da9d143bc81 100644 --- a/packages/docs/CHANGELOG.md +++ b/packages/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) + +**Note:** Version bump only for package @ionic/docs + + + + + ## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) **Note:** Version bump only for package @ionic/docs diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 7c87c5f4afa..1bcc4e39bce 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,13 +1,13 @@ { "name": "@ionic/docs", - "version": "8.7.7", + "version": "8.7.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "8.7.7", + "version": "8.7.8", "license": "MIT" } } -} +} \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json index 73a2f404704..c476871df0f 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "8.7.7", + "version": "8.7.8", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index 1eef525bee0..c6ba55308b6 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) + +**Note:** Version bump only for package @ionic/react-router + + + + + ## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) **Note:** Version bump only for package @ionic/react-router diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index b5638ec2e04..c270e443383 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "8.7.7", + "version": "8.7.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "8.7.7", + "version": "8.7.8", "license": "MIT", "dependencies": { - "@ionic/react": "^8.7.7", + "@ionic/react": "^8.7.8", "tslib": "*" }, "devDependencies": { @@ -6844,4 +6844,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 07cad69873d..06ab972e0ac 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "8.7.7", + "version": "8.7.8", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^8.7.7", + "@ionic/react": "^8.7.8", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index d6411574532..5db7354b370 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) + +**Note:** Version bump only for package @ionic/react + + + + + ## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) **Note:** Version bump only for package @ionic/react diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index b70c0da4eb3..c5e1d9ce63a 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "8.7.7", + "version": "8.7.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "8.7.7", + "version": "8.7.8", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.7", + "@ionic/core": "^8.7.8", "ionicons": "^8.0.13", "tslib": "*" }, @@ -11913,4 +11913,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/react/package.json b/packages/react/package.json index e441982a667..bfe057dcfb7 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "8.7.7", + "version": "8.7.8", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -40,7 +40,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^8.7.7", + "@ionic/core": "^8.7.8", "ionicons": "^8.0.13", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index 9ebef9caf76..dcde54de5db 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) + +**Note:** Version bump only for package @ionic/vue-router + + + + + ## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) **Note:** Version bump only for package @ionic/vue-router diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index fed6bd68c6a..057c84368c5 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "8.7.7", + "version": "8.7.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "8.7.7", + "version": "8.7.8", "license": "MIT", "dependencies": { - "@ionic/vue": "^8.7.7" + "@ionic/vue": "^8.7.8" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", @@ -12991,4 +12991,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index 164fcc29e72..0cd615718ff 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "8.7.7", + "version": "8.7.8", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", @@ -44,7 +44,7 @@ }, "homepage": "https://github.com/ionic-team/ionic-framework#readme", "dependencies": { - "@ionic/vue": "^8.7.7" + "@ionic/vue": "^8.7.8" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index fa8e9e7eab6..0869ba88163 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) + +**Note:** Version bump only for package @ionic/vue + + + + + ## [8.7.7](https://github.com/ionic-team/ionic-framework/compare/v8.7.6...v8.7.7) (2025-10-15) **Note:** Version bump only for package @ionic/vue diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 667001bf45a..adbace7a13d 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "8.7.7", + "version": "8.7.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "8.7.7", + "version": "8.7.8", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.7", + "@ionic/core": "^8.7.8", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, @@ -4019,4 +4019,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index bf315a783f0..b3fd59dbf66 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "8.7.7", + "version": "8.7.8", "description": "Vue specific wrapper for @ionic/core", "scripts": { "eslint": "eslint src", @@ -68,7 +68,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^8.7.7", + "@ionic/core": "^8.7.8", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, From 66abc05c46df31af3d8af9ee5577d2f379eeda90 Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 29 Oct 2025 17:41:33 +0000 Subject: [PATCH 017/126] chore(): update package lock files --- core/package-lock.json | 2 +- packages/angular-server/package-lock.json | 14 +++++------ packages/angular/package-lock.json | 8 +++--- packages/docs/package-lock.json | 2 +- packages/react-router/package-lock.json | 30 +++++++++++------------ packages/react/package-lock.json | 8 +++--- packages/vue-router/package-lock.json | 30 +++++++++++------------ packages/vue/package-lock.json | 8 +++--- 8 files changed, 51 insertions(+), 51 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 7488ed6d517..e1ae517d08b 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -18337,4 +18337,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 38cbd14e0f5..feaed84d36b 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1031,9 +1031,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", - "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", + "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -7306,9 +7306,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", - "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", + "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -11286,4 +11286,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 65402778c83..bb7adfaaf66 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1398,9 +1398,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", - "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", + "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -9079,4 +9079,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 1bcc4e39bce..8b762e133ee 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -10,4 +10,4 @@ "license": "MIT" } } -} \ No newline at end of file +} diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index c270e443383..6ee451ed4ea 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -238,9 +238,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", - "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", + "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -415,12 +415,12 @@ } }, "node_modules/@ionic/react": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.7.tgz", - "integrity": "sha512-X/olNPQrITyVbKkZRrhauC6cKXO+C6ISCnoDJFxH34TLphSrpOFOpVD/c+a17QMD8RMxe5/zsQ8oY/DOH8pC6w==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.8.tgz", + "integrity": "sha512-QRxGXcSkfmwVIFxdHI776bqiHpqT1FwwVNASBRPCD8RNCIT9NTZIvgNdJ2FokBZjHRfgk4QuYOcQntrbPmK0Hg==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.7", + "@ionic/core": "8.7.8", "ionicons": "^8.0.13", "tslib": "*" }, @@ -4175,9 +4175,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", - "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", + "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -4281,11 +4281,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.7.tgz", - "integrity": "sha512-X/olNPQrITyVbKkZRrhauC6cKXO+C6ISCnoDJFxH34TLphSrpOFOpVD/c+a17QMD8RMxe5/zsQ8oY/DOH8pC6w==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.8.tgz", + "integrity": "sha512-QRxGXcSkfmwVIFxdHI776bqiHpqT1FwwVNASBRPCD8RNCIT9NTZIvgNdJ2FokBZjHRfgk4QuYOcQntrbPmK0Hg==", "requires": { - "@ionic/core": "8.7.7", + "@ionic/core": "8.7.8", "ionicons": "^8.0.13", "tslib": "*" } @@ -6844,4 +6844,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index c5e1d9ce63a..cd2c498fd34 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -736,9 +736,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", - "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", + "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -11913,4 +11913,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 057c84368c5..bca37af942e 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -673,9 +673,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", - "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", + "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -865,12 +865,12 @@ } }, "node_modules/@ionic/vue": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.7.tgz", - "integrity": "sha512-ufnxZ2yl4Ep2xgemYOdl/rsAX/Dj01X9qWvk34+mX32Vo3vGRJrI1bySt9tmaBQBZyYll8TVD/xhvdw6sVzLHQ==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.8.tgz", + "integrity": "sha512-vB8JBfIduHDD8+MnhGX8w3zXB/abNqjqwOjv+0SOrMx1sp9TvpPi2vYGjtSrFlg1PvOv8EGNzVYTbURmwgvcHA==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.7", + "@ionic/core": "8.7.8", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -8041,9 +8041,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", - "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", + "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -8156,11 +8156,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.7.tgz", - "integrity": "sha512-ufnxZ2yl4Ep2xgemYOdl/rsAX/Dj01X9qWvk34+mX32Vo3vGRJrI1bySt9tmaBQBZyYll8TVD/xhvdw6sVzLHQ==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.8.tgz", + "integrity": "sha512-vB8JBfIduHDD8+MnhGX8w3zXB/abNqjqwOjv+0SOrMx1sp9TvpPi2vYGjtSrFlg1PvOv8EGNzVYTbURmwgvcHA==", "requires": { - "@ionic/core": "8.7.7", + "@ionic/core": "8.7.8", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -12991,4 +12991,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index adbace7a13d..2237b8dc2a4 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -222,9 +222,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.7", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.7.tgz", - "integrity": "sha512-XMvVkiRiB9I1Jc63RqderjHzxxiyr6KM2vBDzYBQS6rk7Fb4wC/ZyUuFgnrYKk71r1mgwYTPMy/2qrCShNXgXQ==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", + "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -4019,4 +4019,4 @@ "dev": true } } -} \ No newline at end of file +} From 0b2e7666090ec035963a32ae65b6529b5e96655c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:13:19 -0400 Subject: [PATCH 018/126] chore(deps): update dependency node to v24 (#30756) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [node](https://redirect.github.com/actions/node-versions) | uses-with | major | `22.x` -> `24.x` | --- ### Release Notes
actions/node-versions (node) ### [`v24.10.0`](https://redirect.github.com/actions/node-versions/releases/tag/24.10.0-18453495281): 24.10.0 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.9.0-18024003193...24.10.0-18453495281) Node.js 24.10.0 ### [`v24.9.0`](https://redirect.github.com/actions/node-versions/releases/tag/24.9.0-18024003193): 24.9.0 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.8.0-17630522236...24.9.0-18024003193) Node.js 24.9.0 ### [`v24.8.0`](https://redirect.github.com/actions/node-versions/releases/tag/24.8.0-17630522236): 24.8.0 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.7.0-17283839804...24.8.0-17630522236) Node.js 24.8.0 ### [`v24.7.0`](https://redirect.github.com/actions/node-versions/releases/tag/24.7.0-17283839804): 24.7.0 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.6.0-16980723897...24.7.0-17283839804) Node.js 24.7.0 ### [`v24.6.0`](https://redirect.github.com/actions/node-versions/releases/tag/24.6.0-16980723897): 24.6.0 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.5.0-16666195981...24.6.0-16980723897) Node.js 24.6.0 ### [`v24.5.0`](https://redirect.github.com/actions/node-versions/releases/tag/24.5.0-16666195981): 24.5.0 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.4.1-16309768053...24.5.0-16666195981) Node.js 24.5.0 ### [`v24.4.1`](https://redirect.github.com/actions/node-versions/releases/tag/24.4.1-16309768053): 24.4.1 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.4.0-16210503505...24.4.1-16309768053) Node.js 24.4.1 ### [`v24.4.0`](https://redirect.github.com/actions/node-versions/releases/tag/24.4.0-16210503505): 24.4.0 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.3.0-15866716565...24.4.0-16210503505) Node.js 24.4.0 ### [`v24.3.0`](https://redirect.github.com/actions/node-versions/releases/tag/24.3.0-15866716565): 24.3.0 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.2.0-15549907769...24.3.0-15866716565) Node.js 24.3.0 ### [`v24.2.0`](https://redirect.github.com/actions/node-versions/releases/tag/24.2.0-15549907769): 24.2.0 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.1.0-15177436545...24.2.0-15549907769) Node.js 24.2.0 ### [`v24.1.0`](https://redirect.github.com/actions/node-versions/releases/tag/24.1.0-15177436545): 24.1.0 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.0.2-15035852679...24.1.0-15177436545) Node.js 24.1.0 ### [`v24.0.2`](https://redirect.github.com/actions/node-versions/releases/tag/24.0.2-15035852679): 24.0.2 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.0.1-14928016774...24.0.2-15035852679) Node.js 24.0.2 ### [`v24.0.1`](https://redirect.github.com/actions/node-versions/releases/tag/24.0.1-14928016774): 24.0.1 [Compare Source](https://redirect.github.com/actions/node-versions/compare/24.0.0-14863421234...24.0.1-14928016774) Node.js 24.0.1 ### [`v24.0.0`](https://redirect.github.com/actions/node-versions/releases/tag/24.0.0-14863421234): 24.0.0 [Compare Source](https://redirect.github.com/actions/node-versions/compare/22.21.0-18671149699...24.0.0-14863421234) Node.js 24.0.0
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/actions/build-angular-server/action.yml | 2 +- .github/workflows/actions/build-angular/action.yml | 2 +- .../workflows/actions/build-core-stencil-prerelease/action.yml | 2 +- .github/workflows/actions/build-core/action.yml | 2 +- .github/workflows/actions/build-react-router/action.yml | 2 +- .github/workflows/actions/build-react/action.yml | 2 +- .github/workflows/actions/build-vue-router/action.yml | 2 +- .github/workflows/actions/build-vue/action.yml | 2 +- .github/workflows/actions/publish-npm/action.yml | 2 +- .github/workflows/actions/test-angular-e2e/action.yml | 2 +- .github/workflows/actions/test-core-clean-build/action.yml | 2 +- .github/workflows/actions/test-core-lint/action.yml | 2 +- .github/workflows/actions/test-core-screenshot/action.yml | 2 +- .github/workflows/actions/test-core-spec/action.yml | 2 +- .github/workflows/actions/test-react-e2e/action.yml | 2 +- .github/workflows/actions/test-react-router-e2e/action.yml | 2 +- .github/workflows/actions/test-vue-e2e/action.yml | 2 +- .../workflows/actions/update-reference-screenshots/action.yml | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/actions/build-angular-server/action.yml b/.github/workflows/actions/build-angular-server/action.yml index 7da94399b3a..293a7d2ce58 100644 --- a/.github/workflows/actions/build-angular-server/action.yml +++ b/.github/workflows/actions/build-angular-server/action.yml @@ -5,7 +5,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: name: ionic-core diff --git a/.github/workflows/actions/build-angular/action.yml b/.github/workflows/actions/build-angular/action.yml index c19168ffd21..1cbb8a48bca 100644 --- a/.github/workflows/actions/build-angular/action.yml +++ b/.github/workflows/actions/build-angular/action.yml @@ -5,7 +5,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: name: ionic-core diff --git a/.github/workflows/actions/build-core-stencil-prerelease/action.yml b/.github/workflows/actions/build-core-stencil-prerelease/action.yml index eee79184348..363202f7459 100644 --- a/.github/workflows/actions/build-core-stencil-prerelease/action.yml +++ b/.github/workflows/actions/build-core-stencil-prerelease/action.yml @@ -11,7 +11,7 @@ runs: - uses: actions/checkout@v5 - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - name: Install Dependencies run: npm ci diff --git a/.github/workflows/actions/build-core/action.yml b/.github/workflows/actions/build-core/action.yml index 81f85619734..77db880952a 100644 --- a/.github/workflows/actions/build-core/action.yml +++ b/.github/workflows/actions/build-core/action.yml @@ -11,7 +11,7 @@ runs: - uses: actions/checkout@v5 - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - name: Install Dependencies run: npm install working-directory: ./core diff --git a/.github/workflows/actions/build-react-router/action.yml b/.github/workflows/actions/build-react-router/action.yml index 8bdf4cd272c..9ca5bffadf9 100644 --- a/.github/workflows/actions/build-react-router/action.yml +++ b/.github/workflows/actions/build-react-router/action.yml @@ -5,7 +5,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: name: ionic-core diff --git a/.github/workflows/actions/build-react/action.yml b/.github/workflows/actions/build-react/action.yml index 28f568e321e..55c9fc476f3 100644 --- a/.github/workflows/actions/build-react/action.yml +++ b/.github/workflows/actions/build-react/action.yml @@ -5,7 +5,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: name: ionic-core diff --git a/.github/workflows/actions/build-vue-router/action.yml b/.github/workflows/actions/build-vue-router/action.yml index 3d7fd54c926..70379e063e6 100644 --- a/.github/workflows/actions/build-vue-router/action.yml +++ b/.github/workflows/actions/build-vue-router/action.yml @@ -5,7 +5,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: name: ionic-core diff --git a/.github/workflows/actions/build-vue/action.yml b/.github/workflows/actions/build-vue/action.yml index bcd56ae0352..193ff5e804d 100644 --- a/.github/workflows/actions/build-vue/action.yml +++ b/.github/workflows/actions/build-vue/action.yml @@ -5,7 +5,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: name: ionic-core diff --git a/.github/workflows/actions/publish-npm/action.yml b/.github/workflows/actions/publish-npm/action.yml index 9b6453c61f3..da57bbaf5c3 100644 --- a/.github/workflows/actions/publish-npm/action.yml +++ b/.github/workflows/actions/publish-npm/action.yml @@ -21,7 +21,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x # Provenance requires npm 9.5.0+ - name: Install latest npm run: npm install -g npm@latest diff --git a/.github/workflows/actions/test-angular-e2e/action.yml b/.github/workflows/actions/test-angular-e2e/action.yml index 68bb0190e50..41b8e755f09 100644 --- a/.github/workflows/actions/test-angular-e2e/action.yml +++ b/.github/workflows/actions/test-angular-e2e/action.yml @@ -8,7 +8,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: name: ionic-core diff --git a/.github/workflows/actions/test-core-clean-build/action.yml b/.github/workflows/actions/test-core-clean-build/action.yml index 8b20f4b6cec..ba850fe44e1 100644 --- a/.github/workflows/actions/test-core-clean-build/action.yml +++ b/.github/workflows/actions/test-core-clean-build/action.yml @@ -5,7 +5,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: diff --git a/.github/workflows/actions/test-core-lint/action.yml b/.github/workflows/actions/test-core-lint/action.yml index ef74f0db117..dfa2a36b570 100644 --- a/.github/workflows/actions/test-core-lint/action.yml +++ b/.github/workflows/actions/test-core-lint/action.yml @@ -5,7 +5,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - name: Install Dependencies run: npm ci working-directory: ./core diff --git a/.github/workflows/actions/test-core-screenshot/action.yml b/.github/workflows/actions/test-core-screenshot/action.yml index 1b81fc55636..3642a580a7d 100644 --- a/.github/workflows/actions/test-core-screenshot/action.yml +++ b/.github/workflows/actions/test-core-screenshot/action.yml @@ -15,7 +15,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: name: ionic-core diff --git a/.github/workflows/actions/test-core-spec/action.yml b/.github/workflows/actions/test-core-spec/action.yml index 6bc7a52e10f..0dfbb6eebab 100644 --- a/.github/workflows/actions/test-core-spec/action.yml +++ b/.github/workflows/actions/test-core-spec/action.yml @@ -8,7 +8,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - name: Install Dependencies run: npm ci working-directory: ./core diff --git a/.github/workflows/actions/test-react-e2e/action.yml b/.github/workflows/actions/test-react-e2e/action.yml index fce75f1b7dd..a994209e8ea 100644 --- a/.github/workflows/actions/test-react-e2e/action.yml +++ b/.github/workflows/actions/test-react-e2e/action.yml @@ -8,7 +8,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: name: ionic-core diff --git a/.github/workflows/actions/test-react-router-e2e/action.yml b/.github/workflows/actions/test-react-router-e2e/action.yml index b38fab2ab9f..3354d44f12a 100644 --- a/.github/workflows/actions/test-react-router-e2e/action.yml +++ b/.github/workflows/actions/test-react-router-e2e/action.yml @@ -8,7 +8,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: name: ionic-core diff --git a/.github/workflows/actions/test-vue-e2e/action.yml b/.github/workflows/actions/test-vue-e2e/action.yml index 9f13d25c078..08dd61c52e0 100644 --- a/.github/workflows/actions/test-vue-e2e/action.yml +++ b/.github/workflows/actions/test-vue-e2e/action.yml @@ -8,7 +8,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: ./.github/workflows/actions/download-archive with: name: ionic-core diff --git a/.github/workflows/actions/update-reference-screenshots/action.yml b/.github/workflows/actions/update-reference-screenshots/action.yml index 97b4c891c89..0cf313589a0 100644 --- a/.github/workflows/actions/update-reference-screenshots/action.yml +++ b/.github/workflows/actions/update-reference-screenshots/action.yml @@ -9,7 +9,7 @@ runs: steps: - uses: actions/setup-node@v6 with: - node-version: 22.x + node-version: 24.x - uses: actions/download-artifact@v5 with: path: ./artifacts From cfd8c42f07045cdf704692f6d114333ed36bfe61 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 30 Oct 2025 11:00:04 -0400 Subject: [PATCH 019/126] chore(deps): update download + upload artifacts (major) (#30754) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/download-artifact](https://redirect.github.com/actions/download-artifact) | action | major | `v5` -> `v6` | | [actions/upload-artifact](https://redirect.github.com/actions/upload-artifact) | action | major | `v4` -> `v5` | --- ### Release Notes
actions/download-artifact (actions/download-artifact) ### [`v6`](https://redirect.github.com/actions/download-artifact/compare/v5...v6) [Compare Source](https://redirect.github.com/actions/download-artifact/compare/v5...v6)
actions/upload-artifact (actions/upload-artifact) ### [`v5`](https://redirect.github.com/actions/upload-artifact/compare/v4...v5) [Compare Source](https://redirect.github.com/actions/upload-artifact/compare/v4...v5)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/actions/download-archive/action.yml | 2 +- .github/workflows/actions/test-core-screenshot/action.yml | 2 +- .../workflows/actions/update-reference-screenshots/action.yml | 2 +- .github/workflows/actions/upload-archive/action.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/actions/download-archive/action.yml b/.github/workflows/actions/download-archive/action.yml index 343e2451bce..bd608661517 100644 --- a/.github/workflows/actions/download-archive/action.yml +++ b/.github/workflows/actions/download-archive/action.yml @@ -10,7 +10,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/download-artifact@v5 + - uses: actions/download-artifact@v6 with: name: ${{ inputs.name }} path: ${{ inputs.path }} diff --git a/.github/workflows/actions/test-core-screenshot/action.yml b/.github/workflows/actions/test-core-screenshot/action.yml index 3642a580a7d..da1061f79cd 100644 --- a/.github/workflows/actions/test-core-screenshot/action.yml +++ b/.github/workflows/actions/test-core-screenshot/action.yml @@ -62,7 +62,7 @@ runs: working-directory: ./core - name: Archive Updated Screenshots if: inputs.update == 'true' && steps.test-and-update.outputs.hasUpdatedScreenshots == 'true' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: updated-screenshots-${{ inputs.shard }}-${{ inputs.totalShards }} path: UpdatedScreenshots-${{ inputs.shard }}-${{ inputs.totalShards }}.zip diff --git a/.github/workflows/actions/update-reference-screenshots/action.yml b/.github/workflows/actions/update-reference-screenshots/action.yml index 0cf313589a0..66af19873a4 100644 --- a/.github/workflows/actions/update-reference-screenshots/action.yml +++ b/.github/workflows/actions/update-reference-screenshots/action.yml @@ -10,7 +10,7 @@ runs: - uses: actions/setup-node@v6 with: node-version: 24.x - - uses: actions/download-artifact@v5 + - uses: actions/download-artifact@v6 with: path: ./artifacts - name: Extract Archives diff --git a/.github/workflows/actions/upload-archive/action.yml b/.github/workflows/actions/upload-archive/action.yml index 966b80e3a00..a441cce5f76 100644 --- a/.github/workflows/actions/upload-archive/action.yml +++ b/.github/workflows/actions/upload-archive/action.yml @@ -13,7 +13,7 @@ runs: - name: Create Archive run: zip -q -r ${{ inputs.output }} ${{ inputs.paths }} shell: bash - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 with: name: ${{ inputs.name }} path: ${{ inputs.output }} From 58d563805fca1db88caeeb40a8f710ac30416d93 Mon Sep 17 00:00:00 2001 From: Shane Date: Mon, 3 Nov 2025 14:03:10 -0800 Subject: [PATCH 020/126] fix(accordion-group): skip initial animation (#30729) Issue number: resolves #30613 --------- ## What is the current behavior? Currently, when you load an accordion group, the initially selected accordion animates open. This is an unexpected change caused by upgrading Stencil to >= 4.21.0, which changed the way component lifecycles got triggered. ## What is the new behavior? With this change, we're waiting for the accordion in the accordion group to render and telling it if the update it's going through is the initial update or not. This allows it to decide to animate properly. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information Current dev build: ``` 8.7.8-dev.11761840817.1bede576 ``` --- core/src/components/accordion/accordion.tsx | 110 ++++++++++++++++-- .../accordion/test/accordion.spec.ts | 81 +++++++++++++ packages/react/test/base/src/App.tsx | 2 + .../test/base/src/pages/AccordionGroup.tsx | 54 +++++++++ packages/react/test/base/src/pages/Main.tsx | 3 + 5 files changed, 239 insertions(+), 11 deletions(-) create mode 100644 packages/react/test/base/src/pages/AccordionGroup.tsx diff --git a/core/src/components/accordion/accordion.tsx b/core/src/components/accordion/accordion.tsx index 92d28848d20..6facef87a46 100644 --- a/core/src/components/accordion/accordion.tsx +++ b/core/src/components/accordion/accordion.tsx @@ -38,7 +38,40 @@ const enum AccordionState { }) export class Accordion implements ComponentInterface { private accordionGroupEl?: HTMLIonAccordionGroupElement | null; - private updateListener = () => this.updateState(false); + private accordionGroupUpdateHandler = () => { + /** + * Determine if this update will cause an actual state change. + * We only want to mark as "interacted" if the state is changing. + */ + const accordionGroup = this.accordionGroupEl; + if (accordionGroup) { + const value = accordionGroup.value; + const accordionValue = this.value; + const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue; + const isExpanded = this.state === AccordionState.Expanded || this.state === AccordionState.Expanding; + const stateWillChange = shouldExpand !== isExpanded; + + /** + * Only mark as interacted if: + * 1. This is not the first update we've received with a defined value + * 2. The state is actually changing (prevents redundant updates from enabling animations) + */ + if (this.hasReceivedFirstUpdate && stateWillChange) { + this.hasInteracted = true; + } + + /** + * Only count this as the first update if the group value is defined. + * This prevents the initial undefined value from the group's componentDidLoad + * from being treated as the first real update. + */ + if (value !== undefined) { + this.hasReceivedFirstUpdate = true; + } + } + + this.updateState(); + }; private contentEl: HTMLDivElement | undefined; private contentElWrapper: HTMLDivElement | undefined; private headerEl: HTMLDivElement | undefined; @@ -50,6 +83,25 @@ export class Accordion implements ComponentInterface { @State() state: AccordionState = AccordionState.Collapsed; @State() isNext = false; @State() isPrevious = false; + /** + * Tracks whether a user-initiated interaction has occurred. + * Animations are disabled until the first interaction happens. + * This prevents the accordion from animating when it's programmatically + * set to an expanded or collapsed state on initial load. + */ + @State() hasInteracted = false; + + /** + * Tracks if this accordion has ever been expanded. + * Used to prevent the first expansion from animating. + */ + private hasEverBeenExpanded = false; + + /** + * Tracks if this accordion has received its first update from the group. + * Used to distinguish initial programmatic sets from user interactions. + */ + private hasReceivedFirstUpdate = false; /** * The value of the accordion. Defaults to an autogenerated @@ -88,15 +140,15 @@ export class Accordion implements ComponentInterface { connectedCallback() { const accordionGroupEl = (this.accordionGroupEl = this.el?.closest('ion-accordion-group')); if (accordionGroupEl) { - this.updateState(true); - addEventListener(accordionGroupEl, 'ionValueChange', this.updateListener); + this.updateState(); + addEventListener(accordionGroupEl, 'ionValueChange', this.accordionGroupUpdateHandler); } } disconnectedCallback() { const accordionGroupEl = this.accordionGroupEl; if (accordionGroupEl) { - removeEventListener(accordionGroupEl, 'ionValueChange', this.updateListener); + removeEventListener(accordionGroupEl, 'ionValueChange', this.accordionGroupUpdateHandler); } } @@ -212,10 +264,16 @@ export class Accordion implements ComponentInterface { ionItem.appendChild(iconEl); }; - private expandAccordion = (initialUpdate = false) => { + private expandAccordion = () => { const { contentEl, contentElWrapper } = this; - if (initialUpdate || contentEl === undefined || contentElWrapper === undefined) { + + /** + * If the content elements aren't available yet, just set the state. + * This happens on initial render before the DOM is ready. + */ + if (contentEl === undefined || contentElWrapper === undefined) { this.state = AccordionState.Expanded; + this.hasEverBeenExpanded = true; return; } @@ -227,6 +285,12 @@ export class Accordion implements ComponentInterface { cancelAnimationFrame(this.currentRaf); } + /** + * Mark that this accordion has been expanded at least once. + * This allows subsequent expansions to animate. + */ + this.hasEverBeenExpanded = true; + if (this.shouldAnimate()) { raf(() => { this.state = AccordionState.Expanding; @@ -247,9 +311,14 @@ export class Accordion implements ComponentInterface { } }; - private collapseAccordion = (initialUpdate = false) => { + private collapseAccordion = () => { const { contentEl } = this; - if (initialUpdate || contentEl === undefined) { + + /** + * If the content element isn't available yet, just set the state. + * This happens on initial render before the DOM is ready. + */ + if (contentEl === undefined) { this.state = AccordionState.Collapsed; return; } @@ -291,6 +360,19 @@ export class Accordion implements ComponentInterface { * of what is set in the config. */ private shouldAnimate = () => { + /** + * Don't animate until after the first user interaction. + * This prevents animations on initial load when accordions + * start in an expanded or collapsed state programmatically. + * + * Additionally, don't animate the very first expansion even if + * hasInteracted is true. This handles edge cases like React StrictMode + * where effects run twice and might incorrectly mark as interacted. + */ + if (!this.hasInteracted || !this.hasEverBeenExpanded) { + return false; + } + if (typeof (window as any) === 'undefined') { return false; } @@ -312,7 +394,7 @@ export class Accordion implements ComponentInterface { return true; }; - private updateState = async (initialUpdate = false) => { + private updateState = async () => { const accordionGroup = this.accordionGroupEl; const accordionValue = this.value; @@ -325,10 +407,10 @@ export class Accordion implements ComponentInterface { const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue; if (shouldExpand) { - this.expandAccordion(initialUpdate); + this.expandAccordion(); this.isNext = this.isPrevious = false; } else { - this.collapseAccordion(initialUpdate); + this.collapseAccordion(); /** * When using popout or inset, @@ -386,6 +468,12 @@ export class Accordion implements ComponentInterface { if (disabled || readonly) return; + /** + * Mark that the user has interacted with the accordion. + * This enables animations for all future state changes. + */ + this.hasInteracted = true; + if (accordionGroupEl) { /** * Because the accordion group may or may diff --git a/core/src/components/accordion/test/accordion.spec.ts b/core/src/components/accordion/test/accordion.spec.ts index 54883002dbf..e10fdc9d279 100644 --- a/core/src/components/accordion/test/accordion.spec.ts +++ b/core/src/components/accordion/test/accordion.spec.ts @@ -200,6 +200,87 @@ it('should set default values if not provided', async () => { expect(accordion.classList.contains('accordion-collapsed')).toEqual(false); }); +it('should not animate when initial value is set before load', async () => { + const page = await newSpecPage({ + components: [Item, Accordion, AccordionGroup], + }); + + const accordionGroup = page.doc.createElement('ion-accordion-group'); + accordionGroup.innerHTML = ` + + Label +
Content
+
+ + Label +
Content
+
+ `; + + accordionGroup.value = 'first'; + page.body.appendChild(accordionGroup); + + await page.waitForChanges(); + + const firstAccordion = accordionGroup.querySelector('ion-accordion[value="first"]')!; + + expect(firstAccordion.classList.contains('accordion-expanded')).toEqual(true); + expect(firstAccordion.classList.contains('accordion-expanding')).toEqual(false); +}); + +it('should not animate when initial value is set after load', async () => { + const page = await newSpecPage({ + components: [Item, Accordion, AccordionGroup], + }); + + const accordionGroup = page.doc.createElement('ion-accordion-group'); + accordionGroup.innerHTML = ` + + Label +
Content
+
+ + Label +
Content
+
+ `; + + page.body.appendChild(accordionGroup); + await page.waitForChanges(); + + accordionGroup.value = 'first'; + await page.waitForChanges(); + + const firstAccordion = accordionGroup.querySelector('ion-accordion[value="first"]')!; + + expect(firstAccordion.classList.contains('accordion-expanded')).toEqual(true); + expect(firstAccordion.classList.contains('accordion-expanding')).toEqual(false); +}); + +it('should not have animated class on first expansion', async () => { + const page = await newSpecPage({ + components: [Item, Accordion, AccordionGroup], + html: ` + + + Label +
Content
+
+
+ `, + }); + + const accordionGroup = page.body.querySelector('ion-accordion-group')!; + const firstAccordion = page.body.querySelector('ion-accordion[value="first"]')!; + + // First expansion should not have the animated class + accordionGroup.value = 'first'; + await page.waitForChanges(); + + expect(firstAccordion.classList.contains('accordion-animated')).toEqual(false); + expect(firstAccordion.classList.contains('accordion-expanded')).toEqual(true); +}); + // Verifies fix for https://github.com/ionic-team/ionic-framework/issues/27047 it('should not have animated class when animated="false"', async () => { const page = await newSpecPage({ diff --git a/packages/react/test/base/src/App.tsx b/packages/react/test/base/src/App.tsx index 2f7f4a63ded..634af89f075 100644 --- a/packages/react/test/base/src/App.tsx +++ b/packages/react/test/base/src/App.tsx @@ -37,6 +37,7 @@ import KeepContentsMounted from './pages/overlay-components/KeepContentsMounted' import OverlayComponents from './pages/overlay-components/OverlayComponents'; import OverlayHooks from './pages/overlay-hooks/OverlayHooks'; import ReorderGroup from './pages/ReorderGroup'; +import AccordionGroup from './pages/AccordionGroup'; setupIonicReact(); @@ -69,6 +70,7 @@ const App: React.FC = () => ( + diff --git a/packages/react/test/base/src/pages/AccordionGroup.tsx b/packages/react/test/base/src/pages/AccordionGroup.tsx new file mode 100644 index 00000000000..ffcfaca8bd2 --- /dev/null +++ b/packages/react/test/base/src/pages/AccordionGroup.tsx @@ -0,0 +1,54 @@ +import { IonHeader, IonTitle, IonToolbar, IonPage, IonContent, IonAccordionGroup, IonAccordion, IonItem, IonLabel } from '@ionic/react'; +import { useEffect, useRef } from 'react'; + +const AccordionGroup: React.FC = () => { + const accordionGroup = useRef(null); + + useEffect(() => { + if (!accordionGroup.current) { + return; + } + + accordionGroup.current.value = ['first', 'third']; + }, []); + + return ( + + + + Accordion Group + + + + + + + First Accordion + +
+ First Content +
+
+ + + Second Accordion + +
+ Second Content +
+
+ + + Third Accordion + +
+ Third Content +
+
+
+
+
+ ); +}; + +export default AccordionGroup; diff --git a/packages/react/test/base/src/pages/Main.tsx b/packages/react/test/base/src/pages/Main.tsx index dd87350d9be..3873cd3d5b5 100644 --- a/packages/react/test/base/src/pages/Main.tsx +++ b/packages/react/test/base/src/pages/Main.tsx @@ -22,6 +22,9 @@ const Main: React.FC = () => { + + Accordion Group + Overlay Hooks From 32df083e8756b3e2bc48b95da1ce6f963fce9abe Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 5 Nov 2025 17:04:11 +0000 Subject: [PATCH 021/126] v8.7.9 --- CHANGELOG.md | 11 +++++++++++ core/CHANGELOG.md | 11 +++++++++++ core/package-lock.json | 6 +++--- core/package.json | 2 +- lerna.json | 2 +- packages/angular-server/CHANGELOG.md | 8 ++++++++ packages/angular-server/package-lock.json | 8 ++++---- packages/angular-server/package.json | 4 ++-- packages/angular/CHANGELOG.md | 8 ++++++++ packages/angular/package-lock.json | 8 ++++---- packages/angular/package.json | 4 ++-- packages/docs/CHANGELOG.md | 8 ++++++++ packages/docs/package-lock.json | 6 +++--- packages/docs/package.json | 2 +- packages/react-router/CHANGELOG.md | 8 ++++++++ packages/react-router/package-lock.json | 8 ++++---- packages/react-router/package.json | 4 ++-- packages/react/CHANGELOG.md | 11 +++++++++++ packages/react/package-lock.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/CHANGELOG.md | 8 ++++++++ packages/vue-router/package-lock.json | 8 ++++---- packages/vue-router/package.json | 4 ++-- packages/vue/CHANGELOG.md | 8 ++++++++ packages/vue/package-lock.json | 8 ++++---- packages/vue/package.json | 4 ++-- 26 files changed, 126 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6de4f7473a1..4d7a3a2e54a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) + + +### Bug Fixes + +* **accordion-group:** skip initial animation ([#30729](https://github.com/ionic-team/ionic-framework/issues/30729)) ([58d5638](https://github.com/ionic-team/ionic-framework/commit/58d563805fca1db88caeeb40a8f710ac30416d93)), closes [#30613](https://github.com/ionic-team/ionic-framework/issues/30613) + + + + + ## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index b19ce776075..4ae8a8abd2b 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) + + +### Bug Fixes + +* **accordion-group:** skip initial animation ([#30729](https://github.com/ionic-team/ionic-framework/issues/30729)) ([58d5638](https://github.com/ionic-team/ionic-framework/commit/58d563805fca1db88caeeb40a8f710ac30416d93)), closes [#30613](https://github.com/ionic-team/ionic-framework/issues/30613) + + + + + ## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) diff --git a/core/package-lock.json b/core/package-lock.json index e1ae517d08b..1c236a682a1 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "8.7.8", + "version": "8.7.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "8.7.8", + "version": "8.7.9", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -18337,4 +18337,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/core/package.json b/core/package.json index 2408be873e1..2e85755679e 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "8.7.8", + "version": "8.7.9", "description": "Base components for Ionic", "keywords": [ "ionic", diff --git a/lerna.json b/lerna.json index e66bf5e6408..148797bd98e 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "core", "packages/*" ], - "version": "8.7.8" + "version": "8.7.9" } \ No newline at end of file diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index edaab782eab..e4e2f7fc3c9 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) + +**Note:** Version bump only for package @ionic/angular-server + + + + + ## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index feaed84d36b..5c94f3306a6 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular-server", - "version": "8.7.8", + "version": "8.7.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "8.7.8", + "version": "8.7.9", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.8" + "@ionic/core": "^8.7.9" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^16.0.0", @@ -11286,4 +11286,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index f1618b7b9cc..00036defb37 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "8.7.8", + "version": "8.7.9", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -62,6 +62,6 @@ }, "prettier": "@ionic/prettier-config", "dependencies": { - "@ionic/core": "^8.7.8" + "@ionic/core": "^8.7.9" } } diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index 867e78764a9..7e1564a55b4 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) + +**Note:** Version bump only for package @ionic/angular + + + + + ## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) **Note:** Version bump only for package @ionic/angular diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index bb7adfaaf66..45c02da20b2 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "8.7.8", + "version": "8.7.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "8.7.8", + "version": "8.7.9", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.8", + "@ionic/core": "^8.7.9", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -9079,4 +9079,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular/package.json b/packages/angular/package.json index 774f7903b7f..5e964a95c1e 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "8.7.8", + "version": "8.7.9", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -48,7 +48,7 @@ } }, "dependencies": { - "@ionic/core": "^8.7.8", + "@ionic/core": "^8.7.9", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md index da9d143bc81..4b5cc475bf6 100644 --- a/packages/docs/CHANGELOG.md +++ b/packages/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) + +**Note:** Version bump only for package @ionic/docs + + + + + ## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) **Note:** Version bump only for package @ionic/docs diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 8b762e133ee..b243a8afeb4 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,13 +1,13 @@ { "name": "@ionic/docs", - "version": "8.7.8", + "version": "8.7.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "8.7.8", + "version": "8.7.9", "license": "MIT" } } -} +} \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json index c476871df0f..a8de5938ef9 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "8.7.8", + "version": "8.7.9", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index c6ba55308b6..d5a9ae7d0d7 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) + +**Note:** Version bump only for package @ionic/react-router + + + + + ## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) **Note:** Version bump only for package @ionic/react-router diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 6ee451ed4ea..13e245ca49c 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "8.7.8", + "version": "8.7.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "8.7.8", + "version": "8.7.9", "license": "MIT", "dependencies": { - "@ionic/react": "^8.7.8", + "@ionic/react": "^8.7.9", "tslib": "*" }, "devDependencies": { @@ -6844,4 +6844,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 06ab972e0ac..2891b176ad1 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "8.7.8", + "version": "8.7.9", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^8.7.8", + "@ionic/react": "^8.7.9", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 5db7354b370..3b84ff6ed32 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) + + +### Bug Fixes + +* **accordion-group:** skip initial animation ([#30729](https://github.com/ionic-team/ionic-framework/issues/30729)) ([58d5638](https://github.com/ionic-team/ionic-framework/commit/58d563805fca1db88caeeb40a8f710ac30416d93)), closes [#30613](https://github.com/ionic-team/ionic-framework/issues/30613) + + + + + ## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) **Note:** Version bump only for package @ionic/react diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index cd2c498fd34..3846359d92c 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "8.7.8", + "version": "8.7.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "8.7.8", + "version": "8.7.9", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.8", + "@ionic/core": "^8.7.9", "ionicons": "^8.0.13", "tslib": "*" }, @@ -11913,4 +11913,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/react/package.json b/packages/react/package.json index bfe057dcfb7..6b4d6a9250c 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "8.7.8", + "version": "8.7.9", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -40,7 +40,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^8.7.8", + "@ionic/core": "^8.7.9", "ionicons": "^8.0.13", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index dcde54de5db..f86b4ac52fc 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) + +**Note:** Version bump only for package @ionic/vue-router + + + + + ## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) **Note:** Version bump only for package @ionic/vue-router diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index bca37af942e..632e9311e0a 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "8.7.8", + "version": "8.7.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "8.7.8", + "version": "8.7.9", "license": "MIT", "dependencies": { - "@ionic/vue": "^8.7.8" + "@ionic/vue": "^8.7.9" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", @@ -12991,4 +12991,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index 0cd615718ff..690688fe723 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "8.7.8", + "version": "8.7.9", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", @@ -44,7 +44,7 @@ }, "homepage": "https://github.com/ionic-team/ionic-framework#readme", "dependencies": { - "@ionic/vue": "^8.7.8" + "@ionic/vue": "^8.7.9" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index 0869ba88163..6bd30ed4663 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) + +**Note:** Version bump only for package @ionic/vue + + + + + ## [8.7.8](https://github.com/ionic-team/ionic-framework/compare/v8.7.7...v8.7.8) (2025-10-29) **Note:** Version bump only for package @ionic/vue diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 2237b8dc2a4..d7a48efd92b 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "8.7.8", + "version": "8.7.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "8.7.8", + "version": "8.7.9", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.8", + "@ionic/core": "^8.7.9", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, @@ -4019,4 +4019,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index b3fd59dbf66..c74a9bf7ce7 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "8.7.8", + "version": "8.7.9", "description": "Vue specific wrapper for @ionic/core", "scripts": { "eslint": "eslint src", @@ -68,7 +68,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^8.7.8", + "@ionic/core": "^8.7.9", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, From e1293ff9f65e86cdb4c00bfb59b7af76a5bccae6 Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 5 Nov 2025 17:05:03 +0000 Subject: [PATCH 022/126] chore(): update package lock files --- core/package-lock.json | 2 +- packages/angular-server/package-lock.json | 14 +++++------ packages/angular/package-lock.json | 8 +++--- packages/docs/package-lock.json | 2 +- packages/react-router/package-lock.json | 30 +++++++++++------------ packages/react/package-lock.json | 8 +++--- packages/vue-router/package-lock.json | 30 +++++++++++------------ packages/vue/package-lock.json | 8 +++--- 8 files changed, 51 insertions(+), 51 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 1c236a682a1..8e272ea0493 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -18337,4 +18337,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 5c94f3306a6..004b2975b4e 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1031,9 +1031,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", - "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", + "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -7306,9 +7306,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", - "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", + "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -11286,4 +11286,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 45c02da20b2..8880b0bb46d 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1398,9 +1398,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", - "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", + "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -9079,4 +9079,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index b243a8afeb4..1ec7ada8853 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -10,4 +10,4 @@ "license": "MIT" } } -} \ No newline at end of file +} diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 13e245ca49c..e39eff2a63a 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -238,9 +238,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", - "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", + "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -415,12 +415,12 @@ } }, "node_modules/@ionic/react": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.8.tgz", - "integrity": "sha512-QRxGXcSkfmwVIFxdHI776bqiHpqT1FwwVNASBRPCD8RNCIT9NTZIvgNdJ2FokBZjHRfgk4QuYOcQntrbPmK0Hg==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.9.tgz", + "integrity": "sha512-mG+0oGUOXt54QIgY6XTLWdf0u3dxHWVcuCXFH1fh4t2F7QPP392LJx6wIZieTc+Cp1r94uuNKWBZmdVPuvRxSA==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.8", + "@ionic/core": "8.7.9", "ionicons": "^8.0.13", "tslib": "*" }, @@ -4175,9 +4175,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", - "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", + "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -4281,11 +4281,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.8.tgz", - "integrity": "sha512-QRxGXcSkfmwVIFxdHI776bqiHpqT1FwwVNASBRPCD8RNCIT9NTZIvgNdJ2FokBZjHRfgk4QuYOcQntrbPmK0Hg==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.9.tgz", + "integrity": "sha512-mG+0oGUOXt54QIgY6XTLWdf0u3dxHWVcuCXFH1fh4t2F7QPP392LJx6wIZieTc+Cp1r94uuNKWBZmdVPuvRxSA==", "requires": { - "@ionic/core": "8.7.8", + "@ionic/core": "8.7.9", "ionicons": "^8.0.13", "tslib": "*" } @@ -6844,4 +6844,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 3846359d92c..4f534646a7b 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -736,9 +736,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", - "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", + "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -11913,4 +11913,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 632e9311e0a..272f199fa04 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -673,9 +673,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", - "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", + "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -865,12 +865,12 @@ } }, "node_modules/@ionic/vue": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.8.tgz", - "integrity": "sha512-vB8JBfIduHDD8+MnhGX8w3zXB/abNqjqwOjv+0SOrMx1sp9TvpPi2vYGjtSrFlg1PvOv8EGNzVYTbURmwgvcHA==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.9.tgz", + "integrity": "sha512-chpnclhnL8dC+Wi2/Fd/muI4FPzTqyVvFgIKfMDaz00tF8xmhHI9AXwaRvtt7AJh8CWGAw1QCp/FMboFSQ7D7A==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.8", + "@ionic/core": "8.7.9", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -8041,9 +8041,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", - "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", + "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -8156,11 +8156,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.8.tgz", - "integrity": "sha512-vB8JBfIduHDD8+MnhGX8w3zXB/abNqjqwOjv+0SOrMx1sp9TvpPi2vYGjtSrFlg1PvOv8EGNzVYTbURmwgvcHA==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.9.tgz", + "integrity": "sha512-chpnclhnL8dC+Wi2/Fd/muI4FPzTqyVvFgIKfMDaz00tF8xmhHI9AXwaRvtt7AJh8CWGAw1QCp/FMboFSQ7D7A==", "requires": { - "@ionic/core": "8.7.8", + "@ionic/core": "8.7.9", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -12991,4 +12991,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index d7a48efd92b..b39c1b3f0ec 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -222,9 +222,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", - "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", + "version": "8.7.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", + "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -4019,4 +4019,4 @@ "dev": true } } -} \ No newline at end of file +} From c37e2a5d9e765cf48d768061c9d453a13b187e13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20M=2E?= Date: Tue, 11 Nov 2025 19:35:11 +0000 Subject: [PATCH 023/126] chore(npm): Update release npm action to stop using tokens (#30778) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue number: internal --------- ## What is the current behavior? - Release workflows still inject a long-lived `NPM_TOKEN` via `.npmrc`, so publishes do not use npm’s trusted OIDC flow. ## What is the new behavior? - The shared `actions/publish-npm` composite action now configures `setup-node` with the npm registry, upgrades npm in place, and publishes with `--provenance` without writing `.npmrc`. - `release-dev.yml`, `release-nightly.yml`, and `release-production.yml` call into that trusted flow by removing the token input and (for production) inlining the same OIDC setup before `npm run release.ci`. - Allows npm to authenticate through trusted publishing requirements [docs.npmjs.com/trusted-publishers](https://docs.npmjs.com/trusted-publishers). - Step names were refreshed with emojis, but there are no other behavioral changes. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information - These changes align the Ionic release automation with npm’s trusted-publisher enforcement while keeping the existing Lerna build/publish process intact. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../actions/build-angular-server/action.yml | 8 ++-- .../actions/build-angular/action.yml | 10 ++--- .../build-core-stencil-prerelease/action.yml | 10 ++--- .../workflows/actions/build-core/action.yml | 10 ++--- .../actions/build-react-router/action.yml | 10 ++--- .../workflows/actions/build-react/action.yml | 14 +++---- .../actions/build-vue-router/action.yml | 12 +++--- .../workflows/actions/build-vue/action.yml | 12 +++--- .../actions/download-archive/action.yml | 2 +- .../workflows/actions/publish-npm/action.yml | 39 ++++++++++--------- .../actions/test-angular-e2e/action.yml | 12 +++--- .../actions/test-core-clean-build/action.yml | 4 +- .../actions/test-core-lint/action.yml | 8 ++-- .../actions/test-core-screenshot/action.yml | 10 ++--- .../actions/test-core-spec/action.yml | 8 ++-- .../actions/test-react-e2e/action.yml | 12 +++--- .../actions/test-react-router-e2e/action.yml | 12 +++--- .../workflows/actions/test-vue-e2e/action.yml | 12 +++--- .../update-reference-screenshots/action.yml | 6 +-- .../actions/upload-archive/action.yml | 2 +- .github/workflows/build.yml | 30 +++++++------- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dev-build.yml | 4 +- .github/workflows/nightly.yml | 4 +- .github/workflows/release-ionic.yml | 31 ++++++--------- .github/workflows/release.yml | 8 ++-- .github/workflows/stencil-nightly.yml | 30 +++++++------- .github/workflows/update-screenshots.yml | 6 +-- 28 files changed, 160 insertions(+), 168 deletions(-) diff --git a/.github/workflows/actions/build-angular-server/action.yml b/.github/workflows/actions/build-angular-server/action.yml index 293a7d2ce58..0bf8392c2b5 100644 --- a/.github/workflows/actions/build-angular-server/action.yml +++ b/.github/workflows/actions/build-angular-server/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic Angular Server' runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive @@ -11,15 +11,15 @@ runs: name: ionic-core path: ./core filename: CoreBuild.zip - - name: Install Angular Server Dependencies + - name: πŸ•ΈοΈ Install Angular Server Dependencies run: npm ci shell: bash working-directory: ./packages/angular-server - - name: Sync + - name: πŸ”„ Sync run: npm run sync shell: bash working-directory: ./packages/angular-server - - name: Build + - name: πŸ—οΈ Build run: npm run build.prod shell: bash working-directory: ./packages/angular-server diff --git a/.github/workflows/actions/build-angular/action.yml b/.github/workflows/actions/build-angular/action.yml index 1cbb8a48bca..fc7496de421 100644 --- a/.github/workflows/actions/build-angular/action.yml +++ b/.github/workflows/actions/build-angular/action.yml @@ -11,23 +11,23 @@ runs: name: ionic-core path: ./core filename: CoreBuild.zip - - name: Install Angular Dependencies + - name: πŸ•ΈοΈ Install Angular Dependencies run: npm ci shell: bash working-directory: ./packages/angular - - name: Sync + - name: πŸ”„ Sync run: npm run sync shell: bash working-directory: ./packages/angular - - name: Lint + - name: πŸ–ŒοΈ Lint run: npm run lint shell: bash working-directory: ./packages/angular - - name: Build + - name: πŸ—οΈ Build run: npm run build shell: bash working-directory: ./packages/angular - - name: Check Diff + - name: πŸ” Check Diff run: git diff --exit-code shell: bash working-directory: ./packages/angular diff --git a/.github/workflows/actions/build-core-stencil-prerelease/action.yml b/.github/workflows/actions/build-core-stencil-prerelease/action.yml index 363202f7459..8e8682ecb64 100644 --- a/.github/workflows/actions/build-core-stencil-prerelease/action.yml +++ b/.github/workflows/actions/build-core-stencil-prerelease/action.yml @@ -8,20 +8,20 @@ inputs: runs: using: 'composite' steps: - - uses: actions/checkout@v5 - - uses: actions/setup-node@v6 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - - name: Install Dependencies + - name: πŸ•ΈοΈ Install Dependencies run: npm ci working-directory: ./core shell: bash - - name: Install Stencil ${{ inputs.stencil-version }} + - name: πŸ“¦ Install Stencil ${{ inputs.stencil-version }} working-directory: ./core run: npm i @stencil/core@${{ inputs.stencil-version }} shell: bash - - name: Build Core + - name: πŸ—οΈ Build Core run: npm run build -- --ci --debug --verbose working-directory: ./core shell: bash diff --git a/.github/workflows/actions/build-core/action.yml b/.github/workflows/actions/build-core/action.yml index 77db880952a..816118ff1a0 100644 --- a/.github/workflows/actions/build-core/action.yml +++ b/.github/workflows/actions/build-core/action.yml @@ -8,22 +8,22 @@ inputs: runs: using: 'composite' steps: - - uses: actions/checkout@v5 - - uses: actions/setup-node@v6 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - - name: Install Dependencies + - name: πŸ•ΈοΈ Install Dependencies run: npm install working-directory: ./core shell: bash # If an Ionicons version was specified install that. # Otherwise just use the version defined in the package.json. - - name: Install Ionicons Version + - name: πŸ“¦ Install Ionicons Version if: inputs.ionicons-version != '' run: npm install ionicons@${{ inputs.ionicons-version }} working-directory: ./core shell: bash - - name: Build Core + - name: πŸ—οΈ Build Core run: npm run build -- --ci working-directory: ./core shell: bash diff --git a/.github/workflows/actions/build-react-router/action.yml b/.github/workflows/actions/build-react-router/action.yml index 9ca5bffadf9..fd997ea2386 100644 --- a/.github/workflows/actions/build-react-router/action.yml +++ b/.github/workflows/actions/build-react-router/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic React Router' runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive @@ -16,19 +16,19 @@ runs: name: ionic-react path: ./packages/react filename: ReactBuild.zip - - name: Install Dependencies + - name: πŸ•ΈοΈ Install Dependencies run: npm ci shell: bash working-directory: ./packages/react-router - - name: Sync + - name: πŸ”„ Sync run: npm run sync shell: bash working-directory: ./packages/react-router - - name: Lint + - name: πŸ–ŒοΈ Lint run: npm run lint shell: bash working-directory: ./packages/react-router - - name: Build + - name: πŸ—οΈ Build run: npm run build shell: bash working-directory: ./packages/react-router diff --git a/.github/workflows/actions/build-react/action.yml b/.github/workflows/actions/build-react/action.yml index 55c9fc476f3..5de023a258f 100644 --- a/.github/workflows/actions/build-react/action.yml +++ b/.github/workflows/actions/build-react/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic React' runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive @@ -11,27 +11,27 @@ runs: name: ionic-core path: ./core filename: CoreBuild.zip - - name: Install React Dependencies + - name: πŸ•ΈοΈ Install React Dependencies run: npm ci shell: bash working-directory: ./packages/react - - name: Sync + - name: πŸ”„ Sync run: npm run sync shell: bash working-directory: ./packages/react - - name: Lint + - name: πŸ–ŒοΈ Lint run: npm run lint shell: bash working-directory: ./packages/react - - name: Build + - name: πŸ—οΈ Build run: npm run build shell: bash working-directory: ./packages/react - - name: Test Spec + - name: πŸ§ͺ Test Spec run: npm run test.spec shell: bash working-directory: ./packages/react - - name: Check Diff + - name: πŸ” Check Diff run: git diff --exit-code shell: bash working-directory: ./packages/react diff --git a/.github/workflows/actions/build-vue-router/action.yml b/.github/workflows/actions/build-vue-router/action.yml index 70379e063e6..b2e375bb7ae 100644 --- a/.github/workflows/actions/build-vue-router/action.yml +++ b/.github/workflows/actions/build-vue-router/action.yml @@ -3,7 +3,7 @@ description: 'Builds Ionic Vue Router' runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive @@ -16,23 +16,23 @@ runs: name: ionic-vue path: ./packages/vue filename: VueBuild.zip - - name: Install Vue Router Dependencies + - name: πŸ•ΈοΈ Install Vue Router Dependencies run: npm ci shell: bash working-directory: ./packages/vue-router - - name: Sync + - name: πŸ”„ Sync run: npm run sync shell: bash working-directory: ./packages/vue-router - - name: Lint + - name: πŸ–ŒοΈ Lint run: npm run lint shell: bash working-directory: ./packages/vue-router - - name: Build + - name: πŸ—οΈ Build run: npm run build shell: bash working-directory: ./packages/vue-router - - name: Test Spec + - name: πŸ§ͺ Test Spec run: npm run test.spec shell: bash working-directory: ./packages/vue-router diff --git a/.github/workflows/actions/build-vue/action.yml b/.github/workflows/actions/build-vue/action.yml index 193ff5e804d..317f6f124ab 100644 --- a/.github/workflows/actions/build-vue/action.yml +++ b/.github/workflows/actions/build-vue/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic Vue' runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive @@ -11,23 +11,23 @@ runs: name: ionic-core path: ./core filename: CoreBuild.zip - - name: Install Vue Dependencies + - name: πŸ•ΈοΈ Install Vue Dependencies run: npm ci shell: bash working-directory: ./packages/vue - - name: Sync + - name: πŸ”„ Sync run: npm run sync shell: bash working-directory: ./packages/vue - - name: Lint + - name: πŸ–ŒοΈ Lint run: npm run lint shell: bash working-directory: ./packages/vue - - name: Build + - name: πŸ—οΈ Build run: npm run build shell: bash working-directory: ./packages/vue - - name: Check Diff + - name: πŸ” Check Diff run: git diff --exit-code shell: bash working-directory: ./packages/vue diff --git a/.github/workflows/actions/download-archive/action.yml b/.github/workflows/actions/download-archive/action.yml index bd608661517..70f201e3d67 100644 --- a/.github/workflows/actions/download-archive/action.yml +++ b/.github/workflows/actions/download-archive/action.yml @@ -14,6 +14,6 @@ runs: with: name: ${{ inputs.name }} path: ${{ inputs.path }} - - name: Extract Archive + - name: πŸ”Ž Extract Archive run: unzip -q -o ${{ inputs.path }}/${{ inputs.filename }} shell: bash diff --git a/.github/workflows/actions/publish-npm/action.yml b/.github/workflows/actions/publish-npm/action.yml index da57bbaf5c3..b4c174ba886 100644 --- a/.github/workflows/actions/publish-npm/action.yml +++ b/.github/workflows/actions/publish-npm/action.yml @@ -8,48 +8,51 @@ inputs: tag: description: 'The tag to publish to on NPM.' preid: - description: 'The prerelease identifier used when doing a prerelease.' + description: "Prerelease identifier such as 'alpha', 'beta', 'rc', or 'next'. Leave blank to skip prerelease tagging." working-directory: description: 'The directory of the package.' folder: default: './' description: 'A folder containing a package.json file.' - token: - description: 'The NPM authentication token required to publish.' + node-version: + description: 'Node.js version to use when publishing.' + required: false + default: '24.x' runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - name: 🟒 Configure Node for Publish + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: - node-version: 24.x + node-version: ${{ inputs.node-version }} + registry-url: 'https://registry.npmjs.org' # Provenance requires npm 9.5.0+ - - name: Install latest npm + - name: πŸ“¦ Install latest npm run: npm install -g npm@latest shell: bash # This ensures the local version of Lerna is installed # and that we do not use the global Lerna version - - name: Install root dependencies + - name: πŸ•ΈοΈ Install root dependencies run: npm ci shell: bash - - name: Install Dependencies + - name: πŸ“¦ Install Dependencies run: npx lerna@5 bootstrap --include-dependencies --scope ${{ inputs.scope }} --ignore-scripts -- --legacy-peer-deps shell: bash working-directory: ${{ inputs.working-directory }} - - name: Update Version - run: npx lerna@5 version ${{ inputs.version }} --yes --exact --no-changelog --no-push --no-git-tag-version --preid=${{ inputs.preid }} + - name: 🏷️ Set Version + run: | + if [ -z "${{ inputs.preid }}" ]; then + npx lerna@5 version ${{ inputs.version }} --yes --exact --no-changelog --no-push --no-git-tag-version + else + npx lerna@5 version ${{ inputs.version }} --yes --exact --no-changelog --no-push --no-git-tag-version --preid=${{ inputs.preid }} + fi shell: bash working-directory: ${{ inputs.working-directory }} - - name: Run Build + - name: πŸ—οΈ Run Build run: npm run build shell: bash working-directory: ${{ inputs.working-directory }} - - name: Prepare NPM Token - run: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > .npmrc - working-directory: ${{ inputs.working-directory }} - shell: bash - env: - NPM_TOKEN: ${{ inputs.token }} - - name: Publish to NPM + - name: πŸš€ Publish to NPM run: npm publish ${{ inputs.folder }} --tag ${{ inputs.tag }} --provenance shell: bash working-directory: ${{ inputs.working-directory }} diff --git a/.github/workflows/actions/test-angular-e2e/action.yml b/.github/workflows/actions/test-angular-e2e/action.yml index 41b8e755f09..0b99e99f1e2 100644 --- a/.github/workflows/actions/test-angular-e2e/action.yml +++ b/.github/workflows/actions/test-angular-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive @@ -24,23 +24,23 @@ runs: name: ionic-angular-server path: ./packages/angular-server filename: AngularServerBuild.zip - - name: Create Test App + - name: πŸ§ͺ Create Test App run: ./build.sh ${{ inputs.app }} shell: bash working-directory: ./packages/angular/test - - name: Install Dependencies + - name: πŸ•ΈοΈ Install Dependencies run: npm install shell: bash working-directory: ./packages/angular/test/build/${{ inputs.app }} - - name: Install Playwright Browsers + - name: πŸ“¦ Install Playwright Browsers run: npx playwright install shell: bash working-directory: ./packages/angular/test/build/${{ inputs.app }} - - name: Sync Built Changes + - name: πŸ”„ Sync Built Changes run: npm run sync shell: bash working-directory: ./packages/angular/test/build/${{ inputs.app }} - - name: Run Tests + - name: πŸ§ͺ Run Tests run: npm run test shell: bash working-directory: ./packages/angular/test/build/${{ inputs.app }} diff --git a/.github/workflows/actions/test-core-clean-build/action.yml b/.github/workflows/actions/test-core-clean-build/action.yml index ba850fe44e1..1f78cfaef74 100644 --- a/.github/workflows/actions/test-core-clean-build/action.yml +++ b/.github/workflows/actions/test-core-clean-build/action.yml @@ -3,7 +3,7 @@ description: 'Test Core Clean Build' runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x @@ -12,7 +12,7 @@ runs: name: ionic-core path: ./core filename: CoreBuild.zip - - name: Check Diff + - name: πŸ” Check Diff run: | git diff --exit-code || { echo -e "\033[1;31m⚠️ Error: Differences Detected ⚠️\033[0m" diff --git a/.github/workflows/actions/test-core-lint/action.yml b/.github/workflows/actions/test-core-lint/action.yml index dfa2a36b570..35fc84da48a 100644 --- a/.github/workflows/actions/test-core-lint/action.yml +++ b/.github/workflows/actions/test-core-lint/action.yml @@ -3,21 +3,21 @@ description: 'Test Core Lint' runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - - name: Install Dependencies + - name: πŸ•ΈοΈ Install Dependencies run: npm ci working-directory: ./core shell: bash - - name: Lint + - name: πŸ–ŒοΈ Lint run: npm run lint shell: bash working-directory: ./core # Lint changes should be pushed # to the branch before the branch # is merge eligible. - - name: Check Lint Results + - name: πŸ”Ž Check Lint Results run: git diff --exit-code shell: bash working-directory: ./core diff --git a/.github/workflows/actions/test-core-screenshot/action.yml b/.github/workflows/actions/test-core-screenshot/action.yml index da1061f79cd..0c3965d632d 100644 --- a/.github/workflows/actions/test-core-screenshot/action.yml +++ b/.github/workflows/actions/test-core-screenshot/action.yml @@ -13,7 +13,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive @@ -21,11 +21,11 @@ runs: name: ionic-core path: ./core filename: CoreBuild.zip - - name: Install Dependencies + - name: πŸ•ΈοΈ Install Dependencies run: npm install shell: bash working-directory: ./core - - name: Test + - name: πŸ§ͺ Test if: inputs.update != 'true' run: npm run test.e2e.docker.ci ${{ inputs.component }} -- --shard=${{ inputs.shard }}/${{ inputs.totalShards }} shell: bash @@ -60,13 +60,13 @@ runs: fi shell: bash working-directory: ./core - - name: Archive Updated Screenshots + - name: πŸ“¦ Archive Updated Screenshots if: inputs.update == 'true' && steps.test-and-update.outputs.hasUpdatedScreenshots == 'true' uses: actions/upload-artifact@v5 with: name: updated-screenshots-${{ inputs.shard }}-${{ inputs.totalShards }} path: UpdatedScreenshots-${{ inputs.shard }}-${{ inputs.totalShards }}.zip - - name: Archive Test Results + - name: πŸ“¦ Archive Test Results # The always() ensures that this step # runs even if the previous step fails. # We want the test results to be archived diff --git a/.github/workflows/actions/test-core-spec/action.yml b/.github/workflows/actions/test-core-spec/action.yml index 0dfbb6eebab..af0684d243e 100644 --- a/.github/workflows/actions/test-core-spec/action.yml +++ b/.github/workflows/actions/test-core-spec/action.yml @@ -6,14 +6,14 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - - name: Install Dependencies + - name: πŸ•ΈοΈ Install Dependencies run: npm ci working-directory: ./core shell: bash - - name: Install Stencil ${{ inputs.stencil-version }} + - name: πŸ“¦ Install Stencil ${{ inputs.stencil-version }} run: npm install @stencil/core@${{ inputs.stencil-version }} shell: bash working-directory: ./core @@ -23,7 +23,7 @@ runs: name: ionic-core path: ./core filename: CoreBuild.zip - - name: Test + - name: πŸ§ͺ Test run: npm run test.spec -- --ci shell: bash working-directory: ./core diff --git a/.github/workflows/actions/test-react-e2e/action.yml b/.github/workflows/actions/test-react-e2e/action.yml index a994209e8ea..ad5148d9151 100644 --- a/.github/workflows/actions/test-react-e2e/action.yml +++ b/.github/workflows/actions/test-react-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive @@ -24,23 +24,23 @@ runs: name: ionic-react-router path: ./packages/react-router filename: ReactRouterBuild.zip - - name: Create Test App + - name: πŸ§ͺ Create Test App run: ./build.sh ${{ inputs.app }} shell: bash working-directory: ./packages/react/test - - name: Install Dependencies + - name: πŸ•ΈοΈ Install Dependencies run: npm install shell: bash working-directory: ./packages/react/test/build/${{ inputs.app }} - - name: Sync Built Changes + - name: πŸ”„ Sync Built Changes run: npm run sync shell: bash working-directory: ./packages/react/test/build/${{ inputs.app }} - - name: Build + - name: πŸ—οΈ Build run: npm run build shell: bash working-directory: ./packages/react/test/build/${{ inputs.app }} - - name: Run Tests + - name: πŸ§ͺ Run Tests run: npm run e2e shell: bash working-directory: ./packages/react/test/build/${{ inputs.app }} diff --git a/.github/workflows/actions/test-react-router-e2e/action.yml b/.github/workflows/actions/test-react-router-e2e/action.yml index 3354d44f12a..784e354465a 100644 --- a/.github/workflows/actions/test-react-router-e2e/action.yml +++ b/.github/workflows/actions/test-react-router-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive @@ -24,23 +24,23 @@ runs: name: ionic-react-router path: ./packages/react-router filename: ReactRouterBuild.zip - - name: Create Test App + - name: πŸ§ͺ Create Test App run: ./build.sh ${{ inputs.app }} shell: bash working-directory: ./packages/react-router/test - - name: Install Dependencies + - name: πŸ•ΈοΈ Install Dependencies run: npm install shell: bash working-directory: ./packages/react-router/test/build/${{ inputs.app }} - - name: Sync Built Changes + - name: πŸ”„ Sync Built Changes run: npm run sync shell: bash working-directory: ./packages/react-router/test/build/${{ inputs.app }} - - name: Build + - name: πŸ—οΈ Build run: npm run build shell: bash working-directory: ./packages/react-router/test/build/${{ inputs.app }} - - name: Run Tests + - name: πŸ§ͺ Run Tests run: npm run e2e shell: bash working-directory: ./packages/react-router/test/build/${{ inputs.app }} diff --git a/.github/workflows/actions/test-vue-e2e/action.yml b/.github/workflows/actions/test-vue-e2e/action.yml index 08dd61c52e0..228732067e9 100644 --- a/.github/workflows/actions/test-vue-e2e/action.yml +++ b/.github/workflows/actions/test-vue-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive @@ -24,23 +24,23 @@ runs: name: ionic-vue-router path: ./packages/vue-router filename: VueRouterBuild.zip - - name: Create Test App + - name: πŸ§ͺ Create Test App run: ./build.sh ${{ inputs.app }} shell: bash working-directory: ./packages/vue/test - - name: Install Dependencies + - name: πŸ“¦ Install Dependencies run: npm install shell: bash working-directory: ./packages/vue/test/build/${{ inputs.app }} - - name: Sync + - name: πŸ”„ Sync run: npm run sync shell: bash working-directory: ./packages/vue/test/build/${{ inputs.app }} - - name: Run Spec Tests + - name: πŸ§ͺ Run Spec Tests run: npm run test:unit shell: bash working-directory: ./packages/vue/test/build/${{ inputs.app }} - - name: Run E2E Tests + - name: πŸ§ͺ Run E2E Tests run: npm run test:e2e shell: bash working-directory: ./packages/vue/test/build/${{ inputs.app }} diff --git a/.github/workflows/actions/update-reference-screenshots/action.yml b/.github/workflows/actions/update-reference-screenshots/action.yml index 66af19873a4..e6f0aa817a3 100644 --- a/.github/workflows/actions/update-reference-screenshots/action.yml +++ b/.github/workflows/actions/update-reference-screenshots/action.yml @@ -7,13 +7,13 @@ on: runs: using: 'composite' steps: - - uses: actions/setup-node@v6 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x - uses: actions/download-artifact@v6 with: path: ./artifacts - - name: Extract Archives + - name: πŸ”Ž Extract Archives # This finds all .zip files in the ./artifacts # directory, including nested directories. # It then unzips every .zip to the root directory @@ -21,7 +21,7 @@ runs: find . -type f -name 'UpdatedScreenshots-*.zip' -exec unzip -q -o -d ../ {} \; shell: bash working-directory: ./artifacts - - name: Push Screenshots + - name: πŸ“Έ Push Screenshots # Configure user as Ionitron # and push only the changed .png snapshots # to the remote branch. diff --git a/.github/workflows/actions/upload-archive/action.yml b/.github/workflows/actions/upload-archive/action.yml index a441cce5f76..e836e84c82d 100644 --- a/.github/workflows/actions/upload-archive/action.yml +++ b/.github/workflows/actions/upload-archive/action.yml @@ -10,7 +10,7 @@ inputs: runs: using: 'composite' steps: - - name: Create Archive + - name: πŸ—„οΈ Create Archive run: zip -q -r ${{ inputs.output }} ${{ inputs.paths }} shell: bash - uses: actions/upload-artifact@v5 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4800023a635..dcabceb0e5b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: build-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-core with: ionicons-version: ${{ inputs.ionicons_npm_release_tag }} @@ -31,21 +31,21 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-core-clean-build test-core-lint: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-core-lint test-core-spec: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-core-spec test-core-screenshot: @@ -62,7 +62,7 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -90,14 +90,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-vue build-vue-router: needs: [build-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-vue-router test-vue-e2e: @@ -108,7 +108,7 @@ jobs: needs: [build-vue, build-vue-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-vue-e2e with: app: ${{ matrix.apps }} @@ -126,14 +126,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-angular build-angular-server: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-angular-server test-angular-e2e: @@ -144,7 +144,7 @@ jobs: needs: [build-angular, build-angular-server] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-angular-e2e with: app: ${{ matrix.apps }} @@ -162,14 +162,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-react build-react-router: needs: [build-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-react-router test-react-router-e2e: @@ -180,7 +180,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-react-router-e2e with: app: ${{ matrix.apps }} @@ -202,7 +202,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-react-e2e with: app: ${{ matrix.apps }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index c228c282261..c06733ea476 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -14,7 +14,7 @@ jobs: permissions: security-events: write steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: github/codeql-action/init@v4 with: languages: javascript diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index 20746438552..0f554f4d273 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -9,7 +9,7 @@ jobs: outputs: dev-hash: ${{ steps.create-dev-hash.outputs.DEV_HASH }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # A 1 is required before the timestamp # as lerna will fail when there is a leading 0 # See https://github.com/lerna/lerna/issues/2840 @@ -30,8 +30,6 @@ jobs: with: tag: dev version: ${{ needs.create-dev-hash.outputs.dev-hash }} - secrets: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} get-build: name: Get your dev build! diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index a0f75e0db6a..504a1b14aa5 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -12,7 +12,7 @@ jobs: outputs: nightly-hash: ${{ steps.create-nightly-hash.outputs.NIGHTLY_HASH }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # A 1 is required before the timestamp # as lerna will fail when there is a leading 0 # See https://github.com/lerna/lerna/issues/2840 @@ -35,5 +35,3 @@ jobs: with: tag: nightly version: ${{ needs.create-nightly-hash.outputs.nightly-hash }} - secrets: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/release-ionic.yml b/.github/workflows/release-ionic.yml index 16baa3384c0..dfac8f6f166 100644 --- a/.github/workflows/release-ionic.yml +++ b/.github/workflows/release-ionic.yml @@ -14,15 +14,16 @@ on: preid: description: 'The prerelease identifier used when doing a prerelease.' type: string - secrets: - NPM_TOKEN: - required: true + +permissions: + contents: read + id-token: write jobs: release-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/publish-npm with: scope: '@ionic/core' @@ -30,7 +31,6 @@ jobs: version: ${{ inputs.version }} preid: ${{ inputs.preid }} working-directory: 'core' - token: ${{ secrets.NPM_TOKEN }} - name: Cache Built @ionic/core uses: ./.github/workflows/actions/upload-archive with: @@ -48,7 +48,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Restore @ionic/docs built cache uses: ./.github/workflows/actions/download-archive with: @@ -62,13 +62,12 @@ jobs: version: ${{ inputs.version }} preid: ${{ inputs.preid }} working-directory: 'packages/docs' - token: ${{ secrets.NPM_TOKEN }} release-angular: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -83,7 +82,6 @@ jobs: preid: ${{ inputs.preid }} working-directory: 'packages/angular' folder: './dist' - token: ${{ secrets.NPM_TOKEN }} - name: Cache Built @ionic/angular uses: ./.github/workflows/actions/upload-archive with: @@ -95,7 +93,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -109,7 +107,6 @@ jobs: version: ${{ inputs.version }} preid: ${{ inputs.preid }} working-directory: 'packages/react' - token: ${{ secrets.NPM_TOKEN }} - name: Cache Built @ionic/react uses: ./.github/workflows/actions/upload-archive with: @@ -121,7 +118,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -135,7 +132,6 @@ jobs: version: ${{ inputs.version }} preid: ${{ inputs.preid }} working-directory: 'packages/vue' - token: ${{ secrets.NPM_TOKEN }} - name: Cache Built @ionic/vue uses: ./.github/workflows/actions/upload-archive with: @@ -147,7 +143,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -162,13 +158,12 @@ jobs: preid: ${{ inputs.preid }} working-directory: 'packages/angular-server' folder: './dist' - token: ${{ secrets.NPM_TOKEN }} release-react-router: needs: [release-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -188,13 +183,12 @@ jobs: version: ${{ inputs.version }} preid: ${{ inputs.preid }} working-directory: 'packages/react-router' - token: ${{ secrets.NPM_TOKEN }} release-vue-router: needs: [release-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -214,4 +208,3 @@ jobs: version: ${{ inputs.version }} preid: ${{ inputs.preid }} working-directory: 'packages/vue-router' - token: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 084c8af3077..93938b8bf9f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,6 +25,7 @@ on: preid: type: choice description: Which prerelease identifier should be used? This is only needed when version is "prepatch", "preminor", "premajor", or "prerelease". + default: '' options: - '' - alpha @@ -35,20 +36,19 @@ on: jobs: release-ionic: permissions: + contents: read id-token: write uses: ./.github/workflows/release-ionic.yml with: tag: ${{ inputs.tag }} version: ${{ inputs.version }} preid: ${{ inputs.preid }} - secrets: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} finalize-release: needs: [release-ionic] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: token: ${{ secrets.IONITRON_TOKEN }} fetch-depth: 0 @@ -76,7 +76,7 @@ jobs: needs: [finalize-release] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Pull the latest version of the reference # branch instead of the revision that triggered # the workflow otherwise we won't get the commit diff --git a/.github/workflows/stencil-nightly.yml b/.github/workflows/stencil-nightly.yml index 354b78ec119..c4d40a2f705 100644 --- a/.github/workflows/stencil-nightly.yml +++ b/.github/workflows/stencil-nightly.yml @@ -26,7 +26,7 @@ jobs: build-core-with-stencil-nightly: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-core-stencil-prerelease with: stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} @@ -35,21 +35,21 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-core-clean-build test-core-lint: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-core-lint test-core-spec: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-core-spec with: stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} @@ -72,7 +72,7 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -100,14 +100,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-vue build-vue-router: needs: [build-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-vue-router test-vue-e2e: @@ -118,7 +118,7 @@ jobs: needs: [build-vue, build-vue-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-vue-e2e with: app: ${{ matrix.apps }} @@ -136,14 +136,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-angular build-angular-server: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-angular-server test-angular-e2e: @@ -154,7 +154,7 @@ jobs: needs: [build-angular, build-angular-server] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-angular-e2e with: app: ${{ matrix.apps }} @@ -172,14 +172,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-react build-react-router: needs: [build-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-react-router test-react-router-e2e: @@ -190,7 +190,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-react-router-e2e with: app: ${{ matrix.apps }} @@ -212,7 +212,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-react-e2e with: app: ${{ matrix.apps }} diff --git a/.github/workflows/update-screenshots.yml b/.github/workflows/update-screenshots.yml index ef5dcf31347..60a1e3b5a76 100644 --- a/.github/workflows/update-screenshots.yml +++ b/.github/workflows/update-screenshots.yml @@ -26,7 +26,7 @@ jobs: build-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/build-core test-core-screenshot: @@ -47,7 +47,7 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -59,7 +59,7 @@ jobs: runs-on: ubuntu-latest needs: [test-core-screenshot] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Normally, we could just push with the # default GITHUB_TOKEN, but that will # not cause the build workflow From 92db36489cca944caf1593dbd518a1f025a171a2 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Thu, 13 Nov 2025 10:11:32 -0800 Subject: [PATCH 024/126] fix(checkbox, toggle, radio-group): improve screen reader announcement timing for validation errors (#30714) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue number: internal --------- ## What is the current behavior? Currently, when an error text is shown, it may not announce itself to voice assistants. This is because the way error text currently works is by always existing in the DOM, but being hidden when there is no error. When the error state changes, the error text is shown, but as far as the voice assistant can tell it's always been there and nothing has changed. ## What is the new behavior? - Updated aria attributes - Added observer with an observer ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information [Checkbox preview](https://ionic-framework-git-fw-6757-ionic1.vercel.app/src/components/checkbox/test/validation/) [Toggle preview](https://ionic-framework-git-fw-6757-ionic1.vercel.app/src/components/toggle/test/validation/) [Radio Group preview](https://ionic-framework-git-fw-6757-ionic1.vercel.app/src/components/radio-group/test/validation/) ⚠️ Flakiness ⚠️ The flakiness on checkbox and toggle is because when a native input is present on the page, the browser will have the screen reader to be really fast when it comes to checking information. This speed ends up being too fast for `ion-checkbox` to be able to add the error text. This leads to the error text not being announce consistently. There's no issue when it comes toΒ ion-inputΒ orΒ ion-textareaΒ because Ionic uses the native inputs so their arias are read. There's also no issue withΒ ion-selectΒ because we don't have a native input. It's only an issue with checkbox and the others is because it has aΒ [native input that is being hidden](https://github.com/ionic-team/ionic-framework/blob/8e884bd2cb73481acbb6eb4a4a507d6f6a8716b1/core/src/components/checkbox/checkbox.tsx#L368-L369). So the browser sees that and speeds up the screen reader. The flakiness on radio group is because when you tab out of the last radio button, the ionBlur event is emitted by the child . This event bubbles up, but the timing is still too early for the group. --- core/src/components/checkbox/checkbox.tsx | 85 +++++++- .../checkbox/test/validation/index.html | 184 +++++++++++++++++ .../components/radio-group/radio-group.tsx | 82 +++++++- .../radio-group/test/validation/index.html | 194 ++++++++++++++++++ core/src/components/select/select.tsx | 10 +- .../toggle/test/validation/index.html | 184 +++++++++++++++++ core/src/components/toggle/toggle.tsx | 84 ++++++-- core/src/utils/forms/validity.ts | 8 +- .../template-form.component.html | 76 ++++++- .../template-form/template-form.component.ts | 3 + .../standalone/app-standalone/app.routes.ts | 3 + .../home-page/home-page.component.html | 19 +- .../checkbox-validation.component.html | 53 +++++ .../checkbox-validation.component.scss | 36 ++++ .../checkbox-validation.component.ts | 61 ++++++ .../radio-group-validation.component.html | 57 +++++ .../radio-group-validation.component.scss | 36 ++++ .../radio-group-validation.component.ts | 66 ++++++ .../toggle-validation.component.html | 54 +++++ .../toggle-validation.component.scss | 36 ++++ .../toggle-validation.component.ts | 61 ++++++ 21 files changed, 1348 insertions(+), 44 deletions(-) create mode 100644 core/src/components/checkbox/test/validation/index.html create mode 100644 core/src/components/radio-group/test/validation/index.html create mode 100644 core/src/components/toggle/test/validation/index.html create mode 100644 packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.html create mode 100644 packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.scss create mode 100644 packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.ts create mode 100644 packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.html create mode 100644 packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.scss create mode 100644 packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.ts create mode 100644 packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.html create mode 100644 packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.scss create mode 100644 packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.ts diff --git a/core/src/components/checkbox/checkbox.tsx b/core/src/components/checkbox/checkbox.tsx index 22f3959fba7..abd289c2635 100644 --- a/core/src/components/checkbox/checkbox.tsx +++ b/core/src/components/checkbox/checkbox.tsx @@ -1,5 +1,6 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; -import { Component, Element, Event, Host, Method, Prop, h } from '@stencil/core'; +import { Build, Component, Element, Event, Host, Method, Prop, State, h } from '@stencil/core'; +import { checkInvalidState } from '@utils/forms'; import type { Attributes } from '@utils/helpers'; import { inheritAriaAttributes, renderHiddenInput } from '@utils/helpers'; import { createColorClasses, hostContext } from '@utils/theme'; @@ -35,6 +36,7 @@ export class Checkbox implements ComponentInterface { private helperTextId = `${this.inputId}-helper-text`; private errorTextId = `${this.inputId}-error-text`; private inheritedAttributes: Attributes = {}; + private validationObserver?: MutationObserver; @Element() el!: HTMLIonCheckboxElement; @@ -120,6 +122,13 @@ export class Checkbox implements ComponentInterface { */ @Prop() required = false; + /** + * Track validation state for proper aria-live announcements. + */ + @State() isInvalid = false; + + @State() private hintTextId?: string; + /** * Emitted when the checked property has changed as a result of a user action such as a click. * @@ -137,10 +146,63 @@ export class Checkbox implements ComponentInterface { */ @Event() ionBlur!: EventEmitter; + connectedCallback() { + const { el } = this; + + // Watch for class changes to update validation state. + if (Build.isBrowser && typeof MutationObserver !== 'undefined') { + this.validationObserver = new MutationObserver(() => { + const newIsInvalid = checkInvalidState(el); + if (this.isInvalid !== newIsInvalid) { + this.isInvalid = newIsInvalid; + /** + * Screen readers tend to announce changes + * to `aria-describedby` when the attribute + * is changed during a blur event for a + * native form control. + * However, the announcement can be spotty + * when using a non-native form control + * and `forceUpdate()`. + * This is due to `forceUpdate()` internally + * rescheduling the DOM update to a lower + * priority queue regardless if it's called + * inside a Promise or not, thus causing + * the screen reader to potentially miss the + * change. + * By using a State variable inside a Promise, + * it guarantees a re-render immediately at + * a higher priority. + */ + Promise.resolve().then(() => { + this.hintTextId = this.getHintTextId(); + }); + } + }); + + this.validationObserver.observe(el, { + attributes: true, + attributeFilter: ['class'], + }); + } + + // Always set initial state + this.isInvalid = checkInvalidState(el); + } + componentWillLoad() { this.inheritedAttributes = { ...inheritAriaAttributes(this.el), }; + + this.hintTextId = this.getHintTextId(); + } + + disconnectedCallback() { + // Clean up validation observer to prevent memory leaks. + if (this.validationObserver) { + this.validationObserver.disconnect(); + this.validationObserver = undefined; + } } /** @internal */ @@ -203,10 +265,10 @@ export class Checkbox implements ComponentInterface { ev.stopPropagation(); }; - private getHintTextID(): string | undefined { - const { el, helperText, errorText, helperTextId, errorTextId } = this; + private getHintTextId(): string | undefined { + const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this; - if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) { + if (isInvalid && errorText) { return errorTextId; } @@ -222,7 +284,7 @@ export class Checkbox implements ComponentInterface { * This element should only be rendered if hint text is set. */ private renderHintText() { - const { helperText, errorText, helperTextId, errorTextId } = this; + const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this; /** * undefined and empty string values should @@ -235,11 +297,11 @@ export class Checkbox implements ComponentInterface { return (
-
- {helperText} +
+ {!isInvalid ? helperText : null}
-
- {errorText} +
); @@ -274,11 +336,12 @@ export class Checkbox implements ComponentInterface { + + + + Checkbox - Validation + + + + + + + + + + + + + + Checkbox - Validation Test + + + + +
+

Screen Reader Testing Instructions:

+
    +
  1. Enable your screen reader (VoiceOver, NVDA, JAWS, etc.)
  2. +
  3. Tab through the form fields
  4. +
  5. When you tab away from an empty required field, the error should be announced immediately
  6. +
  7. The error text should be announced BEFORE the next field is announced
  8. +
  9. Test in Chrome, Safari, and Firefox to verify consistent behavior
  10. +
+
+ +
+
+

Required Field

+ I agree to the terms and conditions +
+ +
+

Optional Field (No Validation)

+ Optional Checkbox +
+
+ +
+ Submit Form + Reset Form +
+
+
+ + + + diff --git a/core/src/components/radio-group/radio-group.tsx b/core/src/components/radio-group/radio-group.tsx index c3e1e4c0b0e..e060c2c7201 100644 --- a/core/src/components/radio-group/radio-group.tsx +++ b/core/src/components/radio-group/radio-group.tsx @@ -1,5 +1,6 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; -import { Component, Element, Event, Host, Listen, Method, Prop, Watch, h } from '@stencil/core'; +import { Build, Component, Element, Event, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core'; +import { checkInvalidState } from '@utils/forms'; import { renderHiddenInput } from '@utils/helpers'; import { getIonMode } from '../../global/ionic-global'; @@ -19,9 +20,17 @@ export class RadioGroup implements ComponentInterface { private errorTextId = `${this.inputId}-error-text`; private labelId = `${this.inputId}-lbl`; private label?: HTMLIonLabelElement | null; + private validationObserver?: MutationObserver; @Element() el!: HTMLElement; + /** + * Track validation state for proper aria-live announcements. + */ + @State() isInvalid = false; + + @State() private hintTextId?: string; + /** * If `true`, the radios can be deselected. */ @@ -121,6 +130,57 @@ export class RadioGroup implements ComponentInterface { this.labelId = label.id = this.name + '-lbl'; } } + + // Watch for class changes to update validation state. + if (Build.isBrowser && typeof MutationObserver !== 'undefined') { + this.validationObserver = new MutationObserver(() => { + const newIsInvalid = checkInvalidState(this.el); + if (this.isInvalid !== newIsInvalid) { + this.isInvalid = newIsInvalid; + /** + * Screen readers tend to announce changes + * to `aria-describedby` when the attribute + * is changed during a blur event for a + * native form control. + * However, the announcement can be spotty + * when using a non-native form control + * and `forceUpdate()`. + * This is due to `forceUpdate()` internally + * rescheduling the DOM update to a lower + * priority queue regardless if it's called + * inside a Promise or not, thus causing + * the screen reader to potentially miss the + * change. + * By using a State variable inside a Promise, + * it guarantees a re-render immediately at + * a higher priority. + */ + Promise.resolve().then(() => { + this.hintTextId = this.getHintTextId(); + }); + } + }); + + this.validationObserver.observe(this.el, { + attributes: true, + attributeFilter: ['class'], + }); + } + + // Always set initial state + this.isInvalid = checkInvalidState(this.el); + } + + componentWillLoad() { + this.hintTextId = this.getHintTextId(); + } + + disconnectedCallback() { + // Clean up validation observer to prevent memory leaks. + if (this.validationObserver) { + this.validationObserver.disconnect(); + this.validationObserver = undefined; + } } private getRadios(): HTMLIonRadioElement[] { @@ -244,7 +304,7 @@ export class RadioGroup implements ComponentInterface { * Renders the helper text or error text values */ private renderHintText() { - const { helperText, errorText, helperTextId, errorTextId } = this; + const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this; const hasHintText = !!helperText || !!errorText; if (!hasHintText) { @@ -253,20 +313,20 @@ export class RadioGroup implements ComponentInterface { return (
-
- {helperText} +
+ {!isInvalid ? helperText : null}
-
- {errorText} +
); } - private getHintTextID(): string | undefined { - const { el, helperText, errorText, helperTextId, errorTextId } = this; + private getHintTextId(): string | undefined { + const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this; - if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) { + if (isInvalid && errorText) { return errorTextId; } @@ -287,8 +347,8 @@ export class RadioGroup implements ComponentInterface { diff --git a/core/src/components/radio-group/test/validation/index.html b/core/src/components/radio-group/test/validation/index.html new file mode 100644 index 00000000000..49fdbf1ebbc --- /dev/null +++ b/core/src/components/radio-group/test/validation/index.html @@ -0,0 +1,194 @@ + + + + + Radio Group - Validation + + + + + + + + + + + + + + Radio Group - Validation Test + + + + +
+

Screen Reader Testing Instructions:

+
    +
  1. Enable your screen reader (VoiceOver, NVDA, JAWS, etc.)
  2. +
  3. Tab through the form fields
  4. +
  5. When you tab away from an empty required field, the error should be announced immediately
  6. +
  7. The error text should be announced BEFORE the next field is announced
  8. +
  9. Test in Chrome, Safari, and Firefox to verify consistent behavior
  10. +
+
+ +
+
+

Required Field

+ + Grapes
+ Strawberries +
+
+ +
+

Optional Field (No Validation)

+ + Cucumbers
+ Tomatoes +
+
+
+ +
+ Submit Form + Reset Form +
+
+
+ + + + diff --git a/core/src/components/select/select.tsx b/core/src/components/select/select.tsx index ac2fbb6d89f..ed967b9f83b 100644 --- a/core/src/components/select/select.tsx +++ b/core/src/components/select/select.tsx @@ -87,7 +87,7 @@ export class Select implements ComponentInterface { */ @State() isInvalid = false; - @State() private hintTextID?: string; + @State() private hintTextId?: string; /** * The text to display on the cancel button. @@ -332,7 +332,7 @@ export class Select implements ComponentInterface { * a higher priority. */ Promise.resolve().then(() => { - this.hintTextID = this.getHintTextID(); + this.hintTextId = this.getHintTextId(); }); } }); @@ -350,7 +350,7 @@ export class Select implements ComponentInterface { componentWillLoad() { this.inheritedAttributes = inheritAttributes(this.el, ['aria-label']); - this.hintTextID = this.getHintTextID(); + this.hintTextId = this.getHintTextId(); } componentDidLoad() { @@ -1111,7 +1111,7 @@ export class Select implements ComponentInterface { aria-label={this.ariaLabel} aria-haspopup="dialog" aria-expanded={`${isExpanded}`} - aria-describedby={this.hintTextID} + aria-describedby={this.hintTextId} aria-invalid={this.isInvalid ? 'true' : undefined} aria-required={`${required}`} onFocus={this.onFocus} @@ -1121,7 +1121,7 @@ export class Select implements ComponentInterface { ); } - private getHintTextID(): string | undefined { + private getHintTextId(): string | undefined { const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this; if (isInvalid && errorText) { diff --git a/core/src/components/toggle/test/validation/index.html b/core/src/components/toggle/test/validation/index.html new file mode 100644 index 00000000000..54932edeb08 --- /dev/null +++ b/core/src/components/toggle/test/validation/index.html @@ -0,0 +1,184 @@ + + + + + Toggle - Validation + + + + + + + + + + + + + + Toggle - Validation Test + + + + +
+

Screen Reader Testing Instructions:

+
    +
  1. Enable your screen reader (VoiceOver, NVDA, JAWS, etc.)
  2. +
  3. Tab through the form fields
  4. +
  5. When you tab away from an empty required field, the error should be announced immediately
  6. +
  7. The error text should be announced BEFORE the next field is announced
  8. +
  9. Test in Chrome, Safari, and Firefox to verify consistent behavior
  10. +
+
+ +
+
+

Required Field

+ Tap to turn on +
+ +
+

Optional Field (No Validation)

+ Optional Toggle +
+
+ +
+ Submit Form + Reset Form +
+
+
+ + + + diff --git a/core/src/components/toggle/toggle.tsx b/core/src/components/toggle/toggle.tsx index 18f4b26115c..b46635c8a78 100644 --- a/core/src/components/toggle/toggle.tsx +++ b/core/src/components/toggle/toggle.tsx @@ -1,5 +1,6 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; -import { Component, Element, Event, Host, Prop, State, Watch, h } from '@stencil/core'; +import { Build, Component, Element, Event, Host, Prop, State, Watch, h } from '@stencil/core'; +import { checkInvalidState } from '@utils/forms'; import { renderHiddenInput, inheritAriaAttributes } from '@utils/helpers'; import type { Attributes } from '@utils/helpers'; import { hapticSelection } from '@utils/native/haptic'; @@ -44,11 +45,19 @@ export class Toggle implements ComponentInterface { private inheritedAttributes: Attributes = {}; private toggleTrack?: HTMLElement; private didLoad = false; + private validationObserver?: MutationObserver; @Element() el!: HTMLIonToggleElement; @State() activated = false; + /** + * Track validation state for proper aria-live announcements. + */ + @State() isInvalid = false; + + @State() private hintTextId?: string; + /** * The color to use from your application's color palette. * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. @@ -168,15 +177,56 @@ export class Toggle implements ComponentInterface { } async connectedCallback() { + const { didLoad, el } = this; + /** * If we have not yet rendered * ion-toggle, then toggleTrack is not defined. * But if we are moving ion-toggle via appendChild, * then toggleTrack will be defined. */ - if (this.didLoad) { + if (didLoad) { this.setupGesture(); } + + // Watch for class changes to update validation state. + if (Build.isBrowser && typeof MutationObserver !== 'undefined') { + this.validationObserver = new MutationObserver(() => { + const newIsInvalid = checkInvalidState(el); + if (this.isInvalid !== newIsInvalid) { + this.isInvalid = newIsInvalid; + /** + * Screen readers tend to announce changes + * to `aria-describedby` when the attribute + * is changed during a blur event for a + * native form control. + * However, the announcement can be spotty + * when using a non-native form control + * and `forceUpdate()`. + * This is due to `forceUpdate()` internally + * rescheduling the DOM update to a lower + * priority queue regardless if it's called + * inside a Promise or not, thus causing + * the screen reader to potentially miss the + * change. + * By using a State variable inside a Promise, + * it guarantees a re-render immediately at + * a higher priority. + */ + Promise.resolve().then(() => { + this.hintTextId = this.getHintTextId(); + }); + } + }); + + this.validationObserver.observe(el, { + attributes: true, + attributeFilter: ['class'], + }); + } + + // Always set initial state + this.isInvalid = checkInvalidState(el); } componentDidLoad() { @@ -207,12 +257,20 @@ export class Toggle implements ComponentInterface { this.gesture.destroy(); this.gesture = undefined; } + + // Clean up validation observer to prevent memory leaks. + if (this.validationObserver) { + this.validationObserver.disconnect(); + this.validationObserver = undefined; + } } componentWillLoad() { this.inheritedAttributes = { ...inheritAriaAttributes(this.el), }; + + this.hintTextId = this.getHintTextId(); } private onStart() { @@ -335,10 +393,10 @@ export class Toggle implements ComponentInterface { return this.el.textContent !== ''; } - private getHintTextID(): string | undefined { - const { el, helperText, errorText, helperTextId, errorTextId } = this; + private getHintTextId(): string | undefined { + const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this; - if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) { + if (isInvalid && errorText) { return errorTextId; } @@ -354,7 +412,7 @@ export class Toggle implements ComponentInterface { * This element should only be rendered if hint text is set. */ private renderHintText() { - const { helperText, errorText, helperTextId, errorTextId } = this; + const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this; /** * undefined and empty string values should @@ -367,11 +425,11 @@ export class Toggle implements ComponentInterface { return (
-
- {helperText} +
+ {!isInvalid ? helperText : null}
-
- {errorText} +
); @@ -385,7 +443,6 @@ export class Toggle implements ComponentInterface { color, disabled, el, - errorTextId, hasLabel, inheritedAttributes, inputId, @@ -405,12 +462,13 @@ export class Toggle implements ComponentInterface { Option 2 - + @@ -102,6 +102,80 @@

Select Errors: {{selectField.errors | json}}

+ + + + + I agree to the terms and conditions + + + + + + +

Checkbox Touched: {{checkboxField.touched}}

+

Checkbox Invalid: {{checkboxField.invalid}}

+

Checkbox Errors: {{checkboxField.errors | json}}

+
+
+ + + + + Tap to turn on + + + + + + +

Toggle Touched: {{toggleField.touched}}

+

Toggle Invalid: {{toggleField.invalid}}

+

Toggle Errors: {{toggleField.errors | json}}

+
+
+ + + + + Grapes
+ Strawberries +
+
+ + + + +

Radio Group Touched: {{radioGroupField.touched}}

+

Radio Group Invalid: {{radioGroupField.invalid}}

+

Radio Group Errors: {{radioGroupField.errors | json}}

+
+
diff --git a/packages/angular/test/base/src/app/lazy/template-form/template-form.component.ts b/packages/angular/test/base/src/app/lazy/template-form/template-form.component.ts index 705e104e808..d26e1a6cc4a 100644 --- a/packages/angular/test/base/src/app/lazy/template-form/template-form.component.ts +++ b/packages/angular/test/base/src/app/lazy/template-form/template-form.component.ts @@ -10,6 +10,9 @@ export class TemplateFormComponent { textareaValue = ''; minLengthValue = ''; selectValue = ''; + checkboxValue = false; + toggleValue = false; + radioGroupValue = ''; // Track if form has been submitted submitted = false; diff --git a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts index 93f6284957f..007743f905f 100644 --- a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts +++ b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts @@ -48,6 +48,9 @@ export const routes: Routes = [ { path: 'input-validation', loadComponent: () => import('../validation/input-validation/input-validation.component').then(c => c.InputValidationComponent) }, { path: 'textarea-validation', loadComponent: () => import('../validation/textarea-validation/textarea-validation.component').then(c => c.TextareaValidationComponent) }, { path: 'select-validation', loadComponent: () => import('../validation/select-validation/select-validation.component').then(c => c.SelectValidationComponent) }, + { path: 'checkbox-validation', loadComponent: () => import('../validation/checkbox-validation/checkbox-validation.component').then(c => c.CheckboxValidationComponent) }, + { path: 'toggle-validation', loadComponent: () => import('../validation/toggle-validation/toggle-validation.component').then(c => c.ToggleValidationComponent) }, + { path: 'radio-group-validation', loadComponent: () => import('../validation/radio-group-validation/radio-group-validation.component').then(c => c.RadioGroupValidationComponent) }, { path: '**', redirectTo: 'input-validation' } ] }, diff --git a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html index f0eece0ba33..7ac9c619180 100644 --- a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html +++ b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html @@ -121,14 +121,19 @@ Validation Tests + + + Checkbox Validation Test + + Input Validation Test - + - Textarea Validation Test + Radio Group Validation Test @@ -136,6 +141,16 @@ Select Validation Test + + + Textarea Validation Test + + + + + Toggle Validation Test + + diff --git a/packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.html b/packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.html new file mode 100644 index 00000000000..86a8425e0cb --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.html @@ -0,0 +1,53 @@ + + + Checkbox - Validation Test + + + + +
+

Screen Reader Testing Instructions:

+
    +
  1. Enable your screen reader (VoiceOver, NVDA, JAWS, etc.)
  2. +
  3. Tab through the form fields
  4. +
  5. When you tab away from an empty required field, the error should be announced immediately
  6. +
  7. The error text should be announced BEFORE the next field is announced
  8. +
  9. Test in Chrome, Safari, and Firefox to verify consistent behavior
  10. +
+
+ +
+
+
+

Required Field

+ + {{ fieldMetadata.terms.label }} + +
+ +
+

Optional Field (No Validation)

+ + {{ fieldMetadata.optional.label }} + +
+
+
+ +
+ Submit Form + Reset Form +
+
diff --git a/packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.scss b/packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.scss new file mode 100644 index 00000000000..d8b2a267e5a --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.scss @@ -0,0 +1,36 @@ +.grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + grid-row-gap: 50px; + grid-column-gap: 50px; +} + +h2 { + font-size: 12px; + font-weight: normal; + color: var(--ion-color-step-600); + margin-top: 10px; + margin-bottom: 5px; +} + +.validation-info { + margin: 20px; + padding: 10px; + background: var(--ion-color-light); + border-radius: 4px; +} + +.validation-info h2 { + font-size: 14px; + font-weight: 600; + margin-bottom: 10px; +} + +.validation-info ol { + margin: 0; + padding-left: 20px; +} + +.validation-info li { + margin-bottom: 5px; +} diff --git a/packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.ts b/packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.ts new file mode 100644 index 00000000000..48bf8a935f1 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/checkbox-validation/checkbox-validation.component.ts @@ -0,0 +1,61 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { + FormBuilder, + ReactiveFormsModule, + Validators +} from '@angular/forms'; +import { + IonButton, + IonContent, + IonHeader, + IonCheckbox, + IonTitle, + IonToolbar +} from '@ionic/angular/standalone'; + +@Component({ + selector: 'app-checkbox-validation', + templateUrl: './checkbox-validation.component.html', + styleUrls: ['./checkbox-validation.component.scss'], + standalone: true, + imports: [ + CommonModule, + ReactiveFormsModule, + IonCheckbox, + IonButton, + IonHeader, + IonToolbar, + IonTitle, + IonContent + ] +}) +export class CheckboxValidationComponent { + // Field metadata for labels and error messages + fieldMetadata = { + terms: { + label: 'I agree to the terms and conditions', + helperText: "You must agree to continue", + errorText: 'This field is required' + }, + optional: { + label: 'Optional Checkbox', + helperText: 'You can skip this field', + errorText: '' + } + }; + + form = this.fb.group({ + terms: [false, Validators.requiredTrue], + optional: [false] + }); + + constructor(private fb: FormBuilder) {} + + // Submit form + onSubmit(): void { + if (this.form.valid) { + alert('Form submitted successfully!'); + } + } +} diff --git a/packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.html b/packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.html new file mode 100644 index 00000000000..b7c90ba1ce6 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.html @@ -0,0 +1,57 @@ + + + Radio Group - Validation Test + + + + +
+

Screen Reader Testing Instructions:

+
    +
  1. Enable your screen reader (VoiceOver, NVDA, JAWS, etc.)
  2. +
  3. Tab through the form fields
  4. +
  5. When you tab away from an empty required field, the error should be announced immediately
  6. +
  7. The error text should be announced BEFORE the next field is announced
  8. +
  9. Test in Chrome, Safari, and Firefox to verify consistent behavior
  10. +
+
+ +
+
+
+

Required Field

+ + {{ fieldMetadata.fruits.firstRadio }}
+ {{ fieldMetadata.fruits.secondRadio }} +
+
+ +
+

Optional Field (No Validation)

+ + {{ fieldMetadata.optional.firstRadio }}
+ {{ fieldMetadata.optional.secondRadio }} +
+
+
+
+ +
+ Submit Form + Reset Form +
+
diff --git a/packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.scss b/packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.scss new file mode 100644 index 00000000000..add228ccab1 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.scss @@ -0,0 +1,36 @@ +.grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + grid-row-gap: 20px; + grid-column-gap: 20px; +} + +h2 { + font-size: 12px; + font-weight: normal; + color: var(--ion-color-step-600); + margin-top: 10px; + margin-bottom: 5px; +} + +.validation-info { + margin: 20px; + padding: 10px; + background: var(--ion-color-light); + border-radius: 4px; +} + +.validation-info h2 { + font-size: 14px; + font-weight: 600; + margin-bottom: 10px; +} + +.validation-info ol { + margin: 0; + padding-left: 20px; +} + +.validation-info li { + margin-bottom: 5px; +} diff --git a/packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.ts b/packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.ts new file mode 100644 index 00000000000..aa4ee109a50 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/radio-group-validation/radio-group-validation.component.ts @@ -0,0 +1,66 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { + FormBuilder, + ReactiveFormsModule, + Validators +} from '@angular/forms'; +import { + IonButton, + IonContent, + IonHeader, + IonRadioGroup, + IonRadio, + IonTitle, + IonToolbar +} from '@ionic/angular/standalone'; + +@Component({ + selector: 'app-radio-group-validation', + templateUrl: './radio-group-validation.component.html', + styleUrls: ['./radio-group-validation.component.scss'], + standalone: true, + imports: [ + CommonModule, + ReactiveFormsModule, + IonRadioGroup, + IonRadio, + IonButton, + IonHeader, + IonToolbar, + IonTitle, + IonContent + ] +}) +export class RadioGroupValidationComponent { + // Field metadata for labels and error messages + fieldMetadata = { + fruits: { + helperText: "You must select one to continue", + errorText: 'This field is required', + firstRadio: "Grapes", + secondRadio: "Strawberries" + }, + optional: { + label: 'Optional Radio', + helperText: 'You can skip this field', + errorText: '', + firstRadio: "Option A", + secondRadio: "Option B" + } + }; + + form = this.fb.group({ + fruits: ['', Validators.required], + optional: [''] + }); + + constructor(private fb: FormBuilder) {} + + // Submit form + onSubmit(): void { + if (this.form.valid) { + alert('Form submitted successfully!'); + } + } +} diff --git a/packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.html b/packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.html new file mode 100644 index 00000000000..1bf6ac67e75 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.html @@ -0,0 +1,54 @@ + + + Toggle - Validation Test + + + + +
+

Screen Reader Testing Instructions:

+
    +
  1. Enable your screen reader (VoiceOver, NVDA, JAWS, etc.)
  2. +
  3. Tab through the form fields
  4. +
  5. When you tab away from an empty required field, the error should be announced immediately
  6. +
  7. The error text should be announced BEFORE the next field is announced
  8. +
  9. Test in Chrome, Safari, and Firefox to verify consistent behavior
  10. +
+
+ +
+
+
+

Required Field

+ + {{ fieldMetadata.on.label }} + +
+ +
+

Optional Field (No Validation)

+ + {{ fieldMetadata.optional.label }} + + +
+
+
+ +
+ Submit Form + Reset Form +
+
diff --git a/packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.scss b/packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.scss new file mode 100644 index 00000000000..add228ccab1 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.scss @@ -0,0 +1,36 @@ +.grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + grid-row-gap: 20px; + grid-column-gap: 20px; +} + +h2 { + font-size: 12px; + font-weight: normal; + color: var(--ion-color-step-600); + margin-top: 10px; + margin-bottom: 5px; +} + +.validation-info { + margin: 20px; + padding: 10px; + background: var(--ion-color-light); + border-radius: 4px; +} + +.validation-info h2 { + font-size: 14px; + font-weight: 600; + margin-bottom: 10px; +} + +.validation-info ol { + margin: 0; + padding-left: 20px; +} + +.validation-info li { + margin-bottom: 5px; +} diff --git a/packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.ts b/packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.ts new file mode 100644 index 00000000000..d756ac150be --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/validation/toggle-validation/toggle-validation.component.ts @@ -0,0 +1,61 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { + FormBuilder, + ReactiveFormsModule, + Validators +} from '@angular/forms'; +import { + IonButton, + IonContent, + IonHeader, + IonToggle, + IonTitle, + IonToolbar +} from '@ionic/angular/standalone'; + +@Component({ + selector: 'app-toggle-validation', + templateUrl: './toggle-validation.component.html', + styleUrls: ['./toggle-validation.component.scss'], + standalone: true, + imports: [ + CommonModule, + ReactiveFormsModule, + IonToggle, + IonButton, + IonHeader, + IonToolbar, + IonTitle, + IonContent + ] +}) +export class ToggleValidationComponent { + // Field metadata for labels and error messages + fieldMetadata = { + on: { + label: 'Tap to turn on', + helperText: "You must turn on to continue", + errorText: 'This field is required' + }, + optional: { + label: 'Optional Toggle', + helperText: 'You can skip this field', + errorText: '' + } + }; + + form = this.fb.group({ + on: [false, Validators.requiredTrue], + optional: [false] + }); + + constructor(private fb: FormBuilder) {} + + // Submit form + onSubmit(): void { + if (this.form.valid) { + alert('Form submitted successfully!'); + } + } +} From ecc291138ee4573f5acb5ec922762d976e414cdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20M=2E?= Date: Mon, 17 Nov 2025 18:09:29 +0000 Subject: [PATCH 025/126] chore(npm): attempt to fix issue with Trusted Publishers when using reusable workflows (#30787) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue number: resolves # --------- ## What is the current behavior? - Publishing to npm is failing due to the changes to move to Trusted Publishers, since it seems that they still don't support reusable workflows, as mentioned [here](https://github.com/orgs/community/discussions/174507) - The action to which we grant permissions on npm needs to follow a strict path location `.github/workflows/` in your repository. ## What is the new behavior? - Fixed permissions mismatch by applying the orchestrator method for npm publish: release-orchestrator.yml (contents: read, id-token: write) β”œβ”€β†’ nightly.yml (contents: read, id-token: write) β”‚ └─→ release-ionic.yml (contents: read, id-token: write) β”‚ └─→ publish-npm.yml (contents: read, id-token: write) βœ… β”œβ”€β†’ dev-build.yml (contents: read, id-token: write) β”‚ └─→ release-ionic.yml (contents: read, id-token: write) β”‚ └─→ publish-npm.yml (contents: read, id-token: write) βœ… └─→ release.yml (contents: read, id-token: write) └─→ release-ionic.yml (contents: read, id-token: write) └─→ publish-npm.yml (contents: read, id-token: write) βœ… - `release-orchestrator.yml` calls three workflows: `nightly.yml`, `dev-build.yml`, and `release.yml`. - All three call `release-ionic.yml`, which handles publishing multiple packages. - `release-ionic.yml` calls `publish-npm.yml` multiple times (once per package). - All workflows have `contents: read` and `id-token: write` permissions. - `publish-npm.yml` is in `.github/workflows/`, which satisfies npm Trusted Publishers requirements. - This shows that `publish-npm.yml` is reachable through all three release paths, and moving it to `.github/workflows/` ensures npm Trusted Publishers can authenticate it correctly. ## Does this introduce a breaking change? - [ ] Yes - [x] No - Run pipelines after merge ## Other information - The workflow `release-orchestrator.yml` needs to be the one set up in the npm package settings for the Trusted Publishers --- .github/workflows/dev-build.yml | 5 ++ .github/workflows/nightly.yml | 5 ++ .../action.yml => publish-npm.yml} | 1 + .github/workflows/release-ionic.yml | 16 ++-- .github/workflows/release-orchestrator.yml | 73 +++++++++++++++++++ .github/workflows/release.yml | 38 ++++++++++ 6 files changed, 130 insertions(+), 8 deletions(-) rename .github/workflows/{actions/publish-npm/action.yml => publish-npm.yml} (98%) create mode 100644 .github/workflows/release-orchestrator.yml diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index 0f554f4d273..0231e43f663 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -2,6 +2,11 @@ name: 'Ionic Dev Build' on: workflow_dispatch: + workflow_call: + +permissions: + contents: read + id-token: write jobs: create-dev-hash: diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 504a1b14aa5..e2f5d57c78c 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -5,6 +5,11 @@ on: # Run every Monday-Friday # at 6:00 UTC (6:00 am UTC) - cron: '00 06 * * 1-5' + workflow_call: + +permissions: + contents: read + id-token: write jobs: create-nightly-hash: diff --git a/.github/workflows/actions/publish-npm/action.yml b/.github/workflows/publish-npm.yml similarity index 98% rename from .github/workflows/actions/publish-npm/action.yml rename to .github/workflows/publish-npm.yml index b4c174ba886..9730f0e43eb 100644 --- a/.github/workflows/actions/publish-npm/action.yml +++ b/.github/workflows/publish-npm.yml @@ -26,6 +26,7 @@ runs: with: node-version: ${{ inputs.node-version }} registry-url: 'https://registry.npmjs.org' + scope: '@ionic' # Provenance requires npm 9.5.0+ - name: πŸ“¦ Install latest npm run: npm install -g npm@latest diff --git a/.github/workflows/release-ionic.yml b/.github/workflows/release-ionic.yml index dfac8f6f166..82d365b0a9c 100644 --- a/.github/workflows/release-ionic.yml +++ b/.github/workflows/release-ionic.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: ./.github/workflows/actions/publish-npm + - uses: ./.github/workflows/publish-npm.yml with: scope: '@ionic/core' tag: ${{ inputs.tag }} @@ -55,7 +55,7 @@ jobs: name: ionic-docs path: ./packages/docs filename: DocsBuild.zip - - uses: ./.github/workflows/actions/publish-npm + - uses: ./.github/workflows/publish-npm.yml with: scope: '@ionic/docs' tag: ${{ inputs.tag }} @@ -74,7 +74,7 @@ jobs: name: ionic-core path: ./core filename: CoreBuild.zip - - uses: ./.github/workflows/actions/publish-npm + - uses: ./.github/workflows/publish-npm.yml with: scope: '@ionic/angular' tag: ${{ inputs.tag }} @@ -100,7 +100,7 @@ jobs: name: ionic-core path: ./core filename: CoreBuild.zip - - uses: ./.github/workflows/actions/publish-npm + - uses: ./.github/workflows/publish-npm.yml with: scope: '@ionic/react' tag: ${{ inputs.tag }} @@ -125,7 +125,7 @@ jobs: name: ionic-core path: ./core filename: CoreBuild.zip - - uses: ./.github/workflows/actions/publish-npm + - uses: ./.github/workflows/publish-npm.yml with: scope: '@ionic/vue' tag: ${{ inputs.tag }} @@ -150,7 +150,7 @@ jobs: name: ionic-core path: ./core filename: CoreBuild.zip - - uses: ./.github/workflows/actions/publish-npm + - uses: ./.github/workflows/publish-npm.yml with: scope: '@ionic/angular-server' tag: ${{ inputs.tag }} @@ -176,7 +176,7 @@ jobs: name: ionic-react path: ./packages/react filename: ReactBuild.zip - - uses: ./.github/workflows/actions/publish-npm + - uses: ./.github/workflows/publish-npm.yml with: scope: '@ionic/react-router' tag: ${{ inputs.tag }} @@ -201,7 +201,7 @@ jobs: name: ionic-vue path: ./packages/vue filename: VueBuild.zip - - uses: ./.github/workflows/actions/publish-npm + - uses: ./.github/workflows/publish-npm.yml with: scope: '@ionic/vue-router' tag: ${{ inputs.tag }} diff --git a/.github/workflows/release-orchestrator.yml b/.github/workflows/release-orchestrator.yml new file mode 100644 index 00000000000..f14706363ad --- /dev/null +++ b/.github/workflows/release-orchestrator.yml @@ -0,0 +1,73 @@ +name: 'Ionic Release' + +on: + schedule: + # Run every Monday-Friday + # at 6:00 UTC (6:00 am UTC) + - cron: '00 06 * * 1-5' + workflow_dispatch: + inputs: + release-type: + description: 'Which Ionic release workflow should run?' + required: true + type: choice + default: nightly + options: + - dev + - nightly + - production + version: + description: 'Which version should be published? (Only for production releases)' + required: false + type: choice + options: + - patch + - minor + - major + - prepatch + - preminor + - premajor + - prerelease + tag: + description: 'Which npm tag should this be published to? (Only for production releases)' + required: false + type: choice + default: latest + options: + - latest + - next + preid: + description: 'Which prerelease identifier should be used? (Only for production releases)' + required: false + type: choice + default: '' + options: + - '' + - alpha + - beta + - rc + - next + +permissions: + contents: read + id-token: write + +jobs: + run-nightly: + if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.release-type == 'nightly') }} + uses: ./.github/workflows/nightly.yml + secrets: inherit + + run-dev: + if: ${{ github.event_name == 'workflow_dispatch' && inputs.release-type == 'dev' }} + uses: ./.github/workflows/dev-build.yml + secrets: inherit + + run-production: + if: ${{ github.event_name == 'workflow_dispatch' && inputs.release-type == 'production' }} + uses: ./.github/workflows/release.yml + secrets: inherit + with: + version: ${{ inputs.version }} + tag: ${{ inputs.tag }} + preid: ${{ inputs.preid }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 93938b8bf9f..6b20b89689e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,9 +32,47 @@ on: - beta - rc - next + workflow_call: + inputs: + version: + description: 'Which version should be published?' + required: true + type: string + tag: + description: 'Which npm tag should this be published to?' + required: true + type: string + preid: + description: 'Which prerelease identifier should be used? This is only needed when version is "prepatch", "preminor", "premajor", or "prerelease".' + required: false + type: string + +permissions: + contents: read + id-token: write jobs: + validate_version: + name: βœ… Validate Version Input + runs-on: ubuntu-latest + steps: + - name: πŸ”Ž Ensure version is allowed + env: + VERSION: ${{ inputs.version }} + run: | + case "$VERSION" in + patch|minor|major|prepatch|preminor|premajor|prerelease) + exit 0 + ;; + *) + echo "::error::Invalid version input: '$VERSION'. Allowed values: patch, minor, major, prepatch, preminor, premajor, prerelease." + exit 1 + ;; + esac + shell: bash + release-ionic: + needs: [validate_version] permissions: contents: read id-token: write From d03e88179bc600ac0b3ce109b7d245c820f352e3 Mon Sep 17 00:00:00 2001 From: OS-jacobbell <228905018+OS-jacobbell@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:23:36 -0700 Subject: [PATCH 026/126] chore(deps): update @types/node (#30783) Update node types for compatibility with typescript 5.8 now used in Stencil. --------- ## What is the current behavior? - Ionic fails to build with Stencil Nightly due to typed array changes in typescript 5.7. - Angular package fails to build with Stencil Nightly due to type errors with Mixins. ## What is the new behavior? - Ionic can build with Stencil Nightly. - Angular package can build with Stencil Nightly. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information --- core/package-lock.json | 17 +++++++++-------- core/package.json | 2 +- packages/angular/package-lock.json | 29 +++++++++++++++++++++-------- packages/angular/package.json | 4 ++-- 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 8e272ea0493..5a3dd5d1f2c 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -30,7 +30,7 @@ "@stencil/sass": "^3.0.9", "@stencil/vue-output-target": "0.10.8", "@types/jest": "^29.5.6", - "@types/node": "^14.6.0", + "@types/node": "^16.18.126", "@typescript-eslint/eslint-plugin": "^6.7.2", "@typescript-eslint/parser": "^6.7.2", "chalk": "^5.3.0", @@ -2111,10 +2111,11 @@ "dev": true }, "node_modules/@types/node": { - "version": "14.14.22", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.22.tgz", - "integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==", - "dev": true + "version": "16.18.126", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", + "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/normalize-package-data": { "version": "2.4.0", @@ -12145,9 +12146,9 @@ "dev": true }, "@types/node": { - "version": "14.14.22", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.22.tgz", - "integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==", + "version": "16.18.126", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", + "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", "dev": true }, "@types/normalize-package-data": { diff --git a/core/package.json b/core/package.json index 2e85755679e..19e02bc17e4 100644 --- a/core/package.json +++ b/core/package.json @@ -52,7 +52,7 @@ "@stencil/sass": "^3.0.9", "@stencil/vue-output-target": "0.10.8", "@types/jest": "^29.5.6", - "@types/node": "^14.6.0", + "@types/node": "^16.18.126", "@typescript-eslint/eslint-plugin": "^6.7.2", "@typescript-eslint/parser": "^6.7.2", "chalk": "^5.3.0", diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 8880b0bb46d..cd951ae32a0 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -32,7 +32,7 @@ "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", "@schematics/angular": "^17.0.0", - "@types/node": "12.12.5", + "@types/node": "20.19.25", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "eslint": "^8.0.0", @@ -41,7 +41,7 @@ "ng-packagr": "^16.0.0", "prettier": "^2.4.1", "rxjs": "~7.5.0", - "typescript": "~4.9.3", + "typescript": "~5.0.2", "typescript-eslint-language-service": "^5.0.0", "zone.js": "~0.13.0" }, @@ -2402,9 +2402,14 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "12.12.5", + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } }, "node_modules/@types/resolve": { "version": "1.20.2", @@ -8719,16 +8724,17 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/typescript-eslint-language-service": { @@ -8756,6 +8762,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", diff --git a/packages/angular/package.json b/packages/angular/package.json index 5e964a95c1e..29c42080013 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -78,7 +78,7 @@ "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", "@schematics/angular": "^17.0.0", - "@types/node": "12.12.5", + "@types/node": "20.19.25", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "eslint": "^8.0.0", @@ -87,7 +87,7 @@ "ng-packagr": "^16.0.0", "prettier": "^2.4.1", "rxjs": "~7.5.0", - "typescript": "~4.9.3", + "typescript": "~5.0.2", "typescript-eslint-language-service": "^5.0.0", "zone.js": "~0.13.0" }, From 99bfdee4cd85b34c2bcfa218826dc415a70128b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20M=2E?= Date: Mon, 17 Nov 2025 19:19:32 +0000 Subject: [PATCH 027/126] chore(github-actions): Review workflow structure and fine tune permissions (#30789) Issue number: resolves # --------- ## What is the current behavior? - Permissions not set as expected ## What is the new behavior? - Permissions are properly set throughout the hierarchy - Workflow structure prevents unintended standalone executions ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information --- .../publish-npm/action.yml} | 1 + .github/workflows/dev-build.yml | 2 +- .github/workflows/nightly.yml | 5 +-- .github/workflows/release-ionic.yml | 16 +++++----- .github/workflows/release-orchestrator.yml | 2 +- .github/workflows/release.yml | 31 ------------------- 6 files changed, 12 insertions(+), 45 deletions(-) rename .github/{workflows/publish-npm.yml => actions/publish-npm/action.yml} (99%) diff --git a/.github/workflows/publish-npm.yml b/.github/actions/publish-npm/action.yml similarity index 99% rename from .github/workflows/publish-npm.yml rename to .github/actions/publish-npm/action.yml index 9730f0e43eb..3e58ba9bcc6 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/actions/publish-npm/action.yml @@ -57,3 +57,4 @@ runs: run: npm publish ${{ inputs.folder }} --tag ${{ inputs.tag }} --provenance shell: bash working-directory: ${{ inputs.working-directory }} + diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index 0231e43f663..154f1556175 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -1,7 +1,6 @@ name: 'Ionic Dev Build' on: - workflow_dispatch: workflow_call: permissions: @@ -30,6 +29,7 @@ jobs: release-ionic: needs: [create-dev-hash] permissions: + contents: read id-token: write uses: ./.github/workflows/release-ionic.yml with: diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index e2f5d57c78c..af5f64370ea 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -1,10 +1,6 @@ name: 'Ionic Nightly Build' on: - schedule: - # Run every Monday-Friday - # at 6:00 UTC (6:00 am UTC) - - cron: '00 06 * * 1-5' workflow_call: permissions: @@ -35,6 +31,7 @@ jobs: release-ionic: needs: [create-nightly-hash] permissions: + contents: read id-token: write uses: ./.github/workflows/release-ionic.yml with: diff --git a/.github/workflows/release-ionic.yml b/.github/workflows/release-ionic.yml index 82d365b0a9c..7e37e93be15 100644 --- a/.github/workflows/release-ionic.yml +++ b/.github/workflows/release-ionic.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: ./.github/workflows/publish-npm.yml + - uses: ./.github/actions/publish-npm with: scope: '@ionic/core' tag: ${{ inputs.tag }} @@ -55,7 +55,7 @@ jobs: name: ionic-docs path: ./packages/docs filename: DocsBuild.zip - - uses: ./.github/workflows/publish-npm.yml + - uses: ./.github/actions/publish-npm with: scope: '@ionic/docs' tag: ${{ inputs.tag }} @@ -74,7 +74,7 @@ jobs: name: ionic-core path: ./core filename: CoreBuild.zip - - uses: ./.github/workflows/publish-npm.yml + - uses: ./.github/actions/publish-npm with: scope: '@ionic/angular' tag: ${{ inputs.tag }} @@ -100,7 +100,7 @@ jobs: name: ionic-core path: ./core filename: CoreBuild.zip - - uses: ./.github/workflows/publish-npm.yml + - uses: ./.github/actions/publish-npm with: scope: '@ionic/react' tag: ${{ inputs.tag }} @@ -125,7 +125,7 @@ jobs: name: ionic-core path: ./core filename: CoreBuild.zip - - uses: ./.github/workflows/publish-npm.yml + - uses: ./.github/actions/publish-npm with: scope: '@ionic/vue' tag: ${{ inputs.tag }} @@ -150,7 +150,7 @@ jobs: name: ionic-core path: ./core filename: CoreBuild.zip - - uses: ./.github/workflows/publish-npm.yml + - uses: ./.github/actions/publish-npm with: scope: '@ionic/angular-server' tag: ${{ inputs.tag }} @@ -176,7 +176,7 @@ jobs: name: ionic-react path: ./packages/react filename: ReactBuild.zip - - uses: ./.github/workflows/publish-npm.yml + - uses: ./.github/actions/publish-npm with: scope: '@ionic/react-router' tag: ${{ inputs.tag }} @@ -201,7 +201,7 @@ jobs: name: ionic-vue path: ./packages/vue filename: VueBuild.zip - - uses: ./.github/workflows/publish-npm.yml + - uses: ./.github/actions/publish-npm with: scope: '@ionic/vue-router' tag: ${{ inputs.tag }} diff --git a/.github/workflows/release-orchestrator.yml b/.github/workflows/release-orchestrator.yml index f14706363ad..cbbed32290f 100644 --- a/.github/workflows/release-orchestrator.yml +++ b/.github/workflows/release-orchestrator.yml @@ -1,4 +1,4 @@ -name: 'Ionic Release' +name: 'Release - Ionic Framework' on: schedule: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6b20b89689e..02bcb16b4ac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,37 +1,6 @@ name: 'Ionic Production Release' on: - workflow_dispatch: - inputs: - version: - required: true - type: choice - description: Which version should be published? - options: - - patch - - minor - - major - - prepatch - - preminor - - premajor - - prerelease - tag: - required: true - type: choice - description: Which npm tag should this be published to? - options: - - latest - - next - preid: - type: choice - description: Which prerelease identifier should be used? This is only needed when version is "prepatch", "preminor", "premajor", or "prerelease". - default: '' - options: - - '' - - alpha - - beta - - rc - - next workflow_call: inputs: version: From 1ff26b796b7d9930c535c93a12062b54f7505ae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20M=2E?= Date: Tue, 18 Nov 2025 14:08:47 +0000 Subject: [PATCH 028/126] chore(github-actions): fine tune workflow permissions (#30791) Issue number: resolves # --------- ## What is the current behavior? - Permissions not set as expected ## What is the new behavior? - Permissions are properly set throughout the hierarchy ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information --- .github/workflows/nightly.yml | 1 + .github/workflows/release-orchestrator.yml | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index af5f64370ea..65bfdd263d1 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -34,6 +34,7 @@ jobs: contents: read id-token: write uses: ./.github/workflows/release-ionic.yml + secrets: inherit with: tag: nightly version: ${{ needs.create-nightly-hash.outputs.nightly-hash }} diff --git a/.github/workflows/release-orchestrator.yml b/.github/workflows/release-orchestrator.yml index cbbed32290f..860cce312cb 100644 --- a/.github/workflows/release-orchestrator.yml +++ b/.github/workflows/release-orchestrator.yml @@ -55,16 +55,25 @@ permissions: jobs: run-nightly: if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.release-type == 'nightly') }} + permissions: + contents: read + id-token: write uses: ./.github/workflows/nightly.yml secrets: inherit run-dev: if: ${{ github.event_name == 'workflow_dispatch' && inputs.release-type == 'dev' }} + permissions: + contents: read + id-token: write uses: ./.github/workflows/dev-build.yml secrets: inherit run-production: if: ${{ github.event_name == 'workflow_dispatch' && inputs.release-type == 'production' }} + permissions: + contents: read + id-token: write uses: ./.github/workflows/release.yml secrets: inherit with: From b3826febe06cd95f207f7f5a638f64ed1a061f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20M=2E?= Date: Tue, 18 Nov 2025 16:20:27 +0000 Subject: [PATCH 029/126] chore(github-actions): fine tune workflow orchestrator defaults (#30794) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue number: resolves # --------- ## What is the current behavior? - "nightly" was the default choice and was available for manual trigger when running `release-orchestrator` ## What is the new behavior? - Set "dev" as the default choice (changed from "nightly") - Removed "nightly" from manual workflow_dispatch options (only "dev" and "production" remain) - Simplified the `run-nightly` condition to only run on schedule (`github.event_name == 'schedule'`) ## Does this introduce a breaking change? - [ ] Yes - [-] No ## Other information - Manual triggers (workflow_dispatch): Only "dev" (default) and "production" are available - Scheduled triggers: The nightly build continues to run automatically every Monday–Friday at 6:00 UTC via the schedule trigger - Trusted Publishers compliance: Maintained β€” all releases still go through the single orchestrator workflow, ensuring the OIDC token is issued from the whitelisted workflow --- .github/workflows/release-orchestrator.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-orchestrator.yml b/.github/workflows/release-orchestrator.yml index 860cce312cb..2c41ed516f9 100644 --- a/.github/workflows/release-orchestrator.yml +++ b/.github/workflows/release-orchestrator.yml @@ -11,10 +11,9 @@ on: description: 'Which Ionic release workflow should run?' required: true type: choice - default: nightly + default: dev options: - dev - - nightly - production version: description: 'Which version should be published? (Only for production releases)' @@ -54,7 +53,7 @@ permissions: jobs: run-nightly: - if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.release-type == 'nightly') }} + if: ${{ github.event_name == 'schedule' }} permissions: contents: read id-token: write From 2bebbd7a3e50c030f80e0b031d7f40d3ca13e92b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 18 Nov 2025 11:59:49 -0500 Subject: [PATCH 030/126] chore(deps): update actions/checkout action to v5.0.1 (#30790) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | patch | `v5.0.0` -> `v5.0.1` | --- ### Release Notes
actions/checkout (actions/checkout) ### [`v5.0.1`](https://redirect.github.com/actions/checkout/compare/v5.0.0...v5.0.1) [Compare Source](https://redirect.github.com/actions/checkout/compare/v5.0.0...v5.0.1)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../build-core-stencil-prerelease/action.yml | 2 +- .../workflows/actions/build-core/action.yml | 2 +- .github/workflows/build.yml | 30 +++++++++---------- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dev-build.yml | 2 +- .github/workflows/nightly.yml | 2 +- .github/workflows/release-ionic.yml | 16 +++++----- .github/workflows/release.yml | 4 +-- .github/workflows/stencil-nightly.yml | 30 +++++++++---------- .github/workflows/update-screenshots.yml | 6 ++-- 10 files changed, 48 insertions(+), 48 deletions(-) diff --git a/.github/workflows/actions/build-core-stencil-prerelease/action.yml b/.github/workflows/actions/build-core-stencil-prerelease/action.yml index 8e8682ecb64..d77adf74004 100644 --- a/.github/workflows/actions/build-core-stencil-prerelease/action.yml +++ b/.github/workflows/actions/build-core-stencil-prerelease/action.yml @@ -8,7 +8,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x diff --git a/.github/workflows/actions/build-core/action.yml b/.github/workflows/actions/build-core/action.yml index 816118ff1a0..e430d563ae9 100644 --- a/.github/workflows/actions/build-core/action.yml +++ b/.github/workflows/actions/build-core/action.yml @@ -8,7 +8,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dcabceb0e5b..3e0ff766db6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: build-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-core with: ionicons-version: ${{ inputs.ionicons_npm_release_tag }} @@ -31,21 +31,21 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-core-clean-build test-core-lint: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-core-lint test-core-spec: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-core-spec test-core-screenshot: @@ -62,7 +62,7 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -90,14 +90,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-vue build-vue-router: needs: [build-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-vue-router test-vue-e2e: @@ -108,7 +108,7 @@ jobs: needs: [build-vue, build-vue-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-vue-e2e with: app: ${{ matrix.apps }} @@ -126,14 +126,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-angular build-angular-server: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-angular-server test-angular-e2e: @@ -144,7 +144,7 @@ jobs: needs: [build-angular, build-angular-server] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-angular-e2e with: app: ${{ matrix.apps }} @@ -162,14 +162,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-react build-react-router: needs: [build-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-react-router test-react-router-e2e: @@ -180,7 +180,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-react-router-e2e with: app: ${{ matrix.apps }} @@ -202,7 +202,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-react-e2e with: app: ${{ matrix.apps }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index c06733ea476..1e5f1cad4b4 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -14,7 +14,7 @@ jobs: permissions: security-events: write steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: github/codeql-action/init@v4 with: languages: javascript diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index 154f1556175..15861814e9d 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -13,7 +13,7 @@ jobs: outputs: dev-hash: ${{ steps.create-dev-hash.outputs.DEV_HASH }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 # A 1 is required before the timestamp # as lerna will fail when there is a leading 0 # See https://github.com/lerna/lerna/issues/2840 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 65bfdd263d1..e44ba2d7516 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -13,7 +13,7 @@ jobs: outputs: nightly-hash: ${{ steps.create-nightly-hash.outputs.NIGHTLY_HASH }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 # A 1 is required before the timestamp # as lerna will fail when there is a leading 0 # See https://github.com/lerna/lerna/issues/2840 diff --git a/.github/workflows/release-ionic.yml b/.github/workflows/release-ionic.yml index 7e37e93be15..b4470041ffb 100644 --- a/.github/workflows/release-ionic.yml +++ b/.github/workflows/release-ionic.yml @@ -23,7 +23,7 @@ jobs: release-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/actions/publish-npm with: scope: '@ionic/core' @@ -48,7 +48,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Restore @ionic/docs built cache uses: ./.github/workflows/actions/download-archive with: @@ -67,7 +67,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -93,7 +93,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -118,7 +118,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -143,7 +143,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -163,7 +163,7 @@ jobs: needs: [release-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -188,7 +188,7 @@ jobs: needs: [release-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 02bcb16b4ac..650486bb981 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -55,7 +55,7 @@ jobs: needs: [release-ionic] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: token: ${{ secrets.IONITRON_TOKEN }} fetch-depth: 0 @@ -83,7 +83,7 @@ jobs: needs: [finalize-release] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 # Pull the latest version of the reference # branch instead of the revision that triggered # the workflow otherwise we won't get the commit diff --git a/.github/workflows/stencil-nightly.yml b/.github/workflows/stencil-nightly.yml index c4d40a2f705..d39fdcdf649 100644 --- a/.github/workflows/stencil-nightly.yml +++ b/.github/workflows/stencil-nightly.yml @@ -26,7 +26,7 @@ jobs: build-core-with-stencil-nightly: runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-core-stencil-prerelease with: stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} @@ -35,21 +35,21 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-core-clean-build test-core-lint: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-core-lint test-core-spec: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-core-spec with: stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} @@ -72,7 +72,7 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -100,14 +100,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-vue build-vue-router: needs: [build-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-vue-router test-vue-e2e: @@ -118,7 +118,7 @@ jobs: needs: [build-vue, build-vue-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-vue-e2e with: app: ${{ matrix.apps }} @@ -136,14 +136,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-angular build-angular-server: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-angular-server test-angular-e2e: @@ -154,7 +154,7 @@ jobs: needs: [build-angular, build-angular-server] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-angular-e2e with: app: ${{ matrix.apps }} @@ -172,14 +172,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-react build-react-router: needs: [build-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-react-router test-react-router-e2e: @@ -190,7 +190,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-react-router-e2e with: app: ${{ matrix.apps }} @@ -212,7 +212,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-react-e2e with: app: ${{ matrix.apps }} diff --git a/.github/workflows/update-screenshots.yml b/.github/workflows/update-screenshots.yml index 60a1e3b5a76..967fd3965c4 100644 --- a/.github/workflows/update-screenshots.yml +++ b/.github/workflows/update-screenshots.yml @@ -26,7 +26,7 @@ jobs: build-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/build-core test-core-screenshot: @@ -47,7 +47,7 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -59,7 +59,7 @@ jobs: runs-on: ubuntu-latest needs: [test-core-screenshot] steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 # Normally, we could just push with the # default GITHUB_TOKEN, but that will # not cause the build workflow From eeb15c3c5c1c80e1994f22af53631d10624c2f1b Mon Sep 17 00:00:00 2001 From: OS-jacobbell <228905018+OS-jacobbell@users.noreply.github.com> Date: Wed, 19 Nov 2025 08:24:41 -0700 Subject: [PATCH 031/126] chore(ci): change condition for success messages (#30796) For Stencil Nightly alert messages, instead of checking if anything succeeded, check if nothing failed. --------- ## What is the current behavior? Both a success and failure message was sent when some jobs passed and some failed. ## What is the new behavior? - Success message should only be sent if nothing failed. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information --- .github/workflows/stencil-nightly.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stencil-nightly.yml b/.github/workflows/stencil-nightly.yml index d39fdcdf649..653d4060637 100644 --- a/.github/workflows/stencil-nightly.yml +++ b/.github/workflows/stencil-nightly.yml @@ -229,7 +229,7 @@ jobs: send-success-messages: needs: [test-core-clean-build, test-core-lint, test-core-spec, verify-screenshots, verify-test-vue-e2e, verify-test-angular-e2e, verify-test-react-router-e2e, verify-test-react-e2e] runs-on: ubuntu-latest - if: ${{ !cancelled() && contains(needs.*.result, 'success') }} + if: ${{ !cancelled() && !contains(needs.*.result, 'failure') }} steps: - name: Notify success on Discord run: | From 627416b9d77fd458a5377ec65438074477f60ff4 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 19 Nov 2025 12:59:00 -0500 Subject: [PATCH 032/126] v8.7.10 --- CHANGELOG.md | 11 +++++++++++ core/CHANGELOG.md | 11 +++++++++++ core/package-lock.json | 6 +++--- core/package.json | 2 +- lerna.json | 2 +- packages/angular-server/CHANGELOG.md | 8 ++++++++ packages/angular-server/package-lock.json | 8 ++++---- packages/angular-server/package.json | 4 ++-- packages/angular/CHANGELOG.md | 11 +++++++++++ packages/angular/package-lock.json | 8 ++++---- packages/angular/package.json | 4 ++-- packages/docs/CHANGELOG.md | 8 ++++++++ packages/docs/package-lock.json | 6 +++--- packages/docs/package.json | 2 +- packages/react-router/CHANGELOG.md | 8 ++++++++ packages/react-router/package-lock.json | 8 ++++---- packages/react-router/package.json | 4 ++-- packages/react/CHANGELOG.md | 8 ++++++++ packages/react/package-lock.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/CHANGELOG.md | 8 ++++++++ packages/vue-router/package-lock.json | 8 ++++---- packages/vue-router/package.json | 4 ++-- packages/vue/CHANGELOG.md | 8 ++++++++ packages/vue/package-lock.json | 8 ++++---- packages/vue/package.json | 4 ++-- 26 files changed, 126 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d7a3a2e54a..5aca45ac369 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) + + +### Bug Fixes + +* **checkbox, toggle, radio-group:** improve screen reader announcement timing for validation errors ([#30714](https://github.com/ionic-team/ionic-framework/issues/30714)) ([92db364](https://github.com/ionic-team/ionic-framework/commit/92db36489cca944caf1593dbd518a1f025a171a2)) + + + + + ## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 4ae8a8abd2b..d19d8deea27 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) + + +### Bug Fixes + +* **checkbox, toggle, radio-group:** improve screen reader announcement timing for validation errors ([#30714](https://github.com/ionic-team/ionic-framework/issues/30714)) ([92db364](https://github.com/ionic-team/ionic-framework/commit/92db36489cca944caf1593dbd518a1f025a171a2)) + + + + + ## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) diff --git a/core/package-lock.json b/core/package-lock.json index 5a3dd5d1f2c..b07539553b0 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "8.7.9", + "version": "8.7.10", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "8.7.9", + "version": "8.7.10", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -18338,4 +18338,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/core/package.json b/core/package.json index 19e02bc17e4..8ac9d3c7620 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "8.7.9", + "version": "8.7.10", "description": "Base components for Ionic", "keywords": [ "ionic", diff --git a/lerna.json b/lerna.json index 148797bd98e..e871041f8ba 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "core", "packages/*" ], - "version": "8.7.9" + "version": "8.7.10" } \ No newline at end of file diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index e4e2f7fc3c9..50ea1a4d74d 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) + +**Note:** Version bump only for package @ionic/angular-server + + + + + ## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 004b2975b4e..b63277aac6f 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular-server", - "version": "8.7.9", + "version": "8.7.10", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "8.7.9", + "version": "8.7.10", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.9" + "@ionic/core": "^8.7.10" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^16.0.0", @@ -11286,4 +11286,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index 00036defb37..f27038921ca 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "8.7.9", + "version": "8.7.10", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -62,6 +62,6 @@ }, "prettier": "@ionic/prettier-config", "dependencies": { - "@ionic/core": "^8.7.9" + "@ionic/core": "^8.7.10" } } diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index 7e1564a55b4..9d20850477a 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) + + +### Bug Fixes + +* **checkbox, toggle, radio-group:** improve screen reader announcement timing for validation errors ([#30714](https://github.com/ionic-team/ionic-framework/issues/30714)) ([92db364](https://github.com/ionic-team/ionic-framework/commit/92db36489cca944caf1593dbd518a1f025a171a2)) + + + + + ## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) **Note:** Version bump only for package @ionic/angular diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index cd951ae32a0..92e587385a1 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "8.7.9", + "version": "8.7.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "8.7.9", + "version": "8.7.10", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.9", + "@ionic/core": "^8.7.10", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -9092,4 +9092,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular/package.json b/packages/angular/package.json index 29c42080013..cfc96d53dd6 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "8.7.9", + "version": "8.7.10", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -48,7 +48,7 @@ } }, "dependencies": { - "@ionic/core": "^8.7.9", + "@ionic/core": "^8.7.10", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md index 4b5cc475bf6..2b184082db4 100644 --- a/packages/docs/CHANGELOG.md +++ b/packages/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) + +**Note:** Version bump only for package @ionic/docs + + + + + ## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) **Note:** Version bump only for package @ionic/docs diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 1ec7ada8853..e5d4c6616d4 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,13 +1,13 @@ { "name": "@ionic/docs", - "version": "8.7.9", + "version": "8.7.10", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "8.7.9", + "version": "8.7.10", "license": "MIT" } } -} +} \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json index a8de5938ef9..702437e7270 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "8.7.9", + "version": "8.7.10", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index d5a9ae7d0d7..6d2f0c247fd 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) + +**Note:** Version bump only for package @ionic/react-router + + + + + ## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) **Note:** Version bump only for package @ionic/react-router diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index e39eff2a63a..e057bb953c5 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "8.7.9", + "version": "8.7.10", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "8.7.9", + "version": "8.7.10", "license": "MIT", "dependencies": { - "@ionic/react": "^8.7.9", + "@ionic/react": "^8.7.10", "tslib": "*" }, "devDependencies": { @@ -6844,4 +6844,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 2891b176ad1..2d0ca34a77d 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "8.7.9", + "version": "8.7.10", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^8.7.9", + "@ionic/react": "^8.7.10", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 3b84ff6ed32..bc0b6e7ffa5 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) + +**Note:** Version bump only for package @ionic/react + + + + + ## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 4f534646a7b..6ab8db80706 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "8.7.9", + "version": "8.7.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "8.7.9", + "version": "8.7.10", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.9", + "@ionic/core": "^8.7.10", "ionicons": "^8.0.13", "tslib": "*" }, @@ -11913,4 +11913,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/react/package.json b/packages/react/package.json index 6b4d6a9250c..b09d4b153a8 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "8.7.9", + "version": "8.7.10", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -40,7 +40,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^8.7.9", + "@ionic/core": "^8.7.10", "ionicons": "^8.0.13", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index f86b4ac52fc..7a499dd8cbf 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) + +**Note:** Version bump only for package @ionic/vue-router + + + + + ## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) **Note:** Version bump only for package @ionic/vue-router diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 272f199fa04..12cf4e74ea3 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "8.7.9", + "version": "8.7.10", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "8.7.9", + "version": "8.7.10", "license": "MIT", "dependencies": { - "@ionic/vue": "^8.7.9" + "@ionic/vue": "^8.7.10" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", @@ -12991,4 +12991,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index 690688fe723..e8f7e2bcb86 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "8.7.9", + "version": "8.7.10", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", @@ -44,7 +44,7 @@ }, "homepage": "https://github.com/ionic-team/ionic-framework#readme", "dependencies": { - "@ionic/vue": "^8.7.9" + "@ionic/vue": "^8.7.10" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index 6bd30ed4663..47d14f10a59 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) + +**Note:** Version bump only for package @ionic/vue + + + + + ## [8.7.9](https://github.com/ionic-team/ionic-framework/compare/v8.7.8...v8.7.9) (2025-11-05) **Note:** Version bump only for package @ionic/vue diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index b39c1b3f0ec..e4a72832ec9 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "8.7.9", + "version": "8.7.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "8.7.9", + "version": "8.7.10", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.9", + "@ionic/core": "^8.7.10", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, @@ -4019,4 +4019,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index c74a9bf7ce7..d3a35214b0f 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "8.7.9", + "version": "8.7.10", "description": "Vue specific wrapper for @ionic/core", "scripts": { "eslint": "eslint src", @@ -68,7 +68,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^8.7.9", + "@ionic/core": "^8.7.10", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, From d8e6756ac309378d79f99953f862fe5041ecf606 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 19 Nov 2025 13:07:46 -0500 Subject: [PATCH 033/126] chore(): update package lock files --- core/package-lock.json | 2 +- packages/angular-server/package-lock.json | 14 +- packages/angular/package-lock.json | 9095 --------------------- packages/docs/package-lock.json | 2 +- packages/react-router/package-lock.json | 30 +- packages/react/package-lock.json | 8 +- packages/vue-router/package-lock.json | 30 +- packages/vue/package-lock.json | 8 +- 8 files changed, 47 insertions(+), 9142 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index b07539553b0..8d6417b6bae 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -18338,4 +18338,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index b63277aac6f..fd80d3a6af7 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1031,9 +1031,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", - "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", + "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -7306,9 +7306,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", - "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", + "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -11286,4 +11286,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 92e587385a1..e69de29bb2d 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,9095 +0,0 @@ -{ - "name": "@ionic/angular", - "version": "8.7.10", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@ionic/angular", - "version": "8.7.10", - "license": "MIT", - "dependencies": { - "@ionic/core": "^8.7.10", - "ionicons": "^8.0.13", - "jsonc-parser": "^3.0.0", - "tslib": "^2.3.0" - }, - "devDependencies": { - "@angular-devkit/core": "^17.0.0", - "@angular-devkit/schematics": "^17.0.0", - "@angular-eslint/eslint-plugin": "^16.0.0", - "@angular-eslint/eslint-plugin-template": "^16.0.0", - "@angular-eslint/template-parser": "^16.0.0", - "@angular/cli": "^16.0.0", - "@angular/common": "^16.0.0", - "@angular/compiler": "^16.0.0", - "@angular/compiler-cli": "^16.0.0", - "@angular/core": "^16.0.0", - "@angular/forms": "^16.0.0", - "@angular/platform-browser": "^16.0.0", - "@angular/platform-browser-dynamic": "^16.0.0", - "@angular/router": "^16.0.0", - "@ionic/eslint-config": "^0.3.0", - "@ionic/prettier-config": "^2.0.0", - "@schematics/angular": "^17.0.0", - "@types/node": "20.19.25", - "@typescript-eslint/eslint-plugin": "^5.0.0", - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^8.0.0", - "eslint-plugin-import": "^2.25.2", - "fs-extra": "^7.0.0", - "ng-packagr": "^16.0.0", - "prettier": "^2.4.1", - "rxjs": "~7.5.0", - "typescript": "~5.0.2", - "typescript-eslint-language-service": "^5.0.0", - "zone.js": "~0.13.0" - }, - "peerDependencies": { - "@angular/core": ">=16.0.0", - "@angular/forms": ">=16.0.0", - "@angular/router": ">=16.0.0", - "rxjs": ">=7.5.0", - "zone.js": ">=0.13.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular-devkit/architect": { - "version": "0.1602.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.12.tgz", - "integrity": "sha512-19Fwwfx+KvJ01SyI6cstRgqT9+cwer8Ro1T27t1JqlGyOX8tY3pV78ulwxy2+wCzPjR18V6W7cb7Cv6fyK4xog==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "16.2.12", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", - "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", - "dev": true, - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "picomatch": "2.3.1", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/architect/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@angular-devkit/core": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.0.0.tgz", - "integrity": "sha512-QUu3LnEi4A8t733v2+I0sLtyBJx3Q7zdTAhaauCbxbFhDid0cbYm8hYsyG/njor1irTPxSJbn6UoetVkwUQZxg==", - "dev": true, - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "picomatch": "3.0.1", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/core/node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@angular-devkit/schematics": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.0.0.tgz", - "integrity": "sha512-LD7fjDORuBf139/oJ/gSwbIzQPfsm6Y67s1FD+XLi0QXaRt6dw4r7BMD08l1r//oPQofNgbEH4coGVO4NdCL/A==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "17.0.0", - "jsonc-parser": "3.2.0", - "magic-string": "0.30.5", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.3.1.tgz", - "integrity": "sha512-m4WP1xwS9XLcC/3n6lIcG5HZoai/5eb5W3xm48GVcv//0qE2p7S96RSgKPgGHvif5pF8O9xAqEWs3gDEG45+7A==", - "dev": true - }, - "node_modules/@angular-eslint/eslint-plugin": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.3.1.tgz", - "integrity": "sha512-kSc8ESfoy8TUSthbq0Lpq9e17I+3Smy4rHoNpKCFEGuJgPs0+OssZMxB6a5EawGbv2EKTPEtrxzFm1WsLR0U9Q==", - "dev": true, - "dependencies": { - "@angular-eslint/utils": "16.3.1", - "@typescript-eslint/utils": "5.62.0" - }, - "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", - "typescript": "*" - } - }, - "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.3.1.tgz", - "integrity": "sha512-+RcFEWqNiRt3+5jXvmlIDlXtP9+vjdmgmVL6tt8yDbqdjBOewtyMu4pE4YaR4sFboyxgME9PbO2WrOyPXh6xjg==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.3.1", - "@angular-eslint/utils": "16.3.1", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "aria-query": "5.3.0", - "axobject-query": "4.0.0" - }, - "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", - "typescript": "*" - } - }, - "node_modules/@angular-eslint/template-parser": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.3.1.tgz", - "integrity": "sha512-9+SxUtxB2iOnm0ldS2ow0stMxe02rB/TxeMIe8fxsLFHZdw8RQvs/p3HLvVHXzv6gUblMHebIb/ubUmwEVb2SA==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.3.1", - "eslint-scope": "^7.0.0" - }, - "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", - "typescript": "*" - } - }, - "node_modules/@angular-eslint/template-parser/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@angular-eslint/template-parser/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@angular-eslint/utils": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.3.1.tgz", - "integrity": "sha512-tEBcce0rG+DmcPO8jhRffUFDioGw3G4cUAE15XlRctY1J3QzOBH9HdUOTDt0mMjBgpWCzh0YVT1Moh2bPXU9Xg==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.3.1", - "@typescript-eslint/utils": "5.62.0" - }, - "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", - "typescript": "*" - } - }, - "node_modules/@angular/cli": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.12.tgz", - "integrity": "sha512-Pcbiraoqdw4rR2Ey5Ooy0ESLS1Ffbjkb6sPfinKRkHmAvyqsmlvkfbB/qK8GrzDSFSWvAKMMXRw9l8nbjvQEXg==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1602.12", - "@angular-devkit/core": "16.2.12", - "@angular-devkit/schematics": "16.2.12", - "@schematics/angular": "16.2.12", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.3", - "ini": "4.1.1", - "inquirer": "8.2.4", - "jsonc-parser": "3.2.0", - "npm-package-arg": "10.1.0", - "npm-pick-manifest": "8.0.1", - "open": "8.4.2", - "ora": "5.4.1", - "pacote": "15.2.0", - "resolve": "1.22.2", - "semver": "7.5.4", - "symbol-observable": "4.0.0", - "yargs": "17.7.2" - }, - "bin": { - "ng": "bin/ng.js" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/cli/node_modules/@angular-devkit/core": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", - "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", - "dev": true, - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "picomatch": "2.3.1", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular/cli/node_modules/@angular-devkit/schematics": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.12.tgz", - "integrity": "sha512-lf/Nz2o875pllxGNUcI2by4rctfRsOZOxvaLq2UaH6XG6Re9tqeNfn40a8qXrr9/IYntXnlvEid/pd9e8gFBIw==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "16.2.12", - "jsonc-parser": "3.2.0", - "magic-string": "0.30.1", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/cli/node_modules/@schematics/angular": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.12.tgz", - "integrity": "sha512-rc6Dxo7yLnNhECxZyvwv3qL40GvMHw/gMeme8DUGN7zgcUdBJ7LOCURp7EZqOBghMVeeJvLrohitEbs9NhRLBA==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "16.2.12", - "@angular-devkit/schematics": "16.2.12", - "jsonc-parser": "3.2.0" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/cli/node_modules/magic-string": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", - "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular/cli/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@angular/common": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.12.tgz", - "integrity": "sha512-B+WY/cT2VgEaz9HfJitBmgdk4I333XG/ybC98CMC4Wz8E49T8yzivmmxXB3OD6qvjcOB6ftuicl6WBqLbZNg2w==", - "dev": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0" - }, - "peerDependencies": { - "@angular/core": "16.2.12", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/compiler": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.12.tgz", - "integrity": "sha512-6SMXUgSVekGM7R6l1Z9rCtUGtlg58GFmgbpMCsGf+VXxP468Njw8rjT2YZkf5aEPxEuRpSHhDYjqz7n14cwCXQ==", - "dev": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0" - }, - "peerDependencies": { - "@angular/core": "16.2.12" - }, - "peerDependenciesMeta": { - "@angular/core": { - "optional": true - } - } - }, - "node_modules/@angular/compiler-cli": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.12.tgz", - "integrity": "sha512-pWSrr152562ujh6lsFZR8NfNc5Ljj+zSTQO44DsuB0tZjwEpnRcjJEgzuhGXr+CoiBf+jTSPZKemtSktDk5aaA==", - "dev": true, - "dependencies": { - "@babel/core": "7.23.2", - "@jridgewell/sourcemap-codec": "^1.4.14", - "chokidar": "^3.0.0", - "convert-source-map": "^1.5.1", - "reflect-metadata": "^0.1.2", - "semver": "^7.0.0", - "tslib": "^2.3.0", - "yargs": "^17.2.1" - }, - "bin": { - "ng-xi18n": "bundles/src/bin/ng_xi18n.js", - "ngc": "bundles/src/bin/ngc.js", - "ngcc": "bundles/ngcc/index.js" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0" - }, - "peerDependencies": { - "@angular/compiler": "16.2.12", - "typescript": ">=4.9.3 <5.2" - } - }, - "node_modules/@angular/core": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.12.tgz", - "integrity": "sha512-GLLlDeke/NjroaLYOks0uyzFVo6HyLl7VOm0K1QpLXnYvW63W9Ql/T3yguRZa7tRkOAeFZ3jw+1wnBD4O8MoUA==", - "dev": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0" - }, - "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.13.0" - } - }, - "node_modules/@angular/forms": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.12.tgz", - "integrity": "sha512-1Eao89hlBgLR3v8tU91vccn21BBKL06WWxl7zLpQmG6Hun+2jrThgOE4Pf3os4fkkbH4Apj0tWL2fNIWe/blbw==", - "dev": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0" - }, - "peerDependencies": { - "@angular/common": "16.2.12", - "@angular/core": "16.2.12", - "@angular/platform-browser": "16.2.12", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/platform-browser": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.12.tgz", - "integrity": "sha512-NnH7ju1iirmVEsUq432DTm0nZBGQsBrU40M3ZeVHMQ2subnGiyUs3QyzDz8+VWLL/T5xTxWLt9BkDn65vgzlIQ==", - "dev": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0" - }, - "peerDependencies": { - "@angular/animations": "16.2.12", - "@angular/common": "16.2.12", - "@angular/core": "16.2.12" - }, - "peerDependenciesMeta": { - "@angular/animations": { - "optional": true - } - } - }, - "node_modules/@angular/platform-browser-dynamic": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.12.tgz", - "integrity": "sha512-ya54jerNgreCVAR278wZavwjrUWImMr2F8yM5n9HBvsMBbFaAQ83anwbOEiHEF2BlR+gJiEBLfpuPRMw20pHqw==", - "dev": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0" - }, - "peerDependencies": { - "@angular/common": "16.2.12", - "@angular/compiler": "16.2.12", - "@angular/core": "16.2.12", - "@angular/platform-browser": "16.2.12" - } - }, - "node_modules/@angular/router": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.12.tgz", - "integrity": "sha512-aU6QnYSza005V9P3W6PpkieL56O0IHps96DjqI1RS8yOJUl3THmokqYN4Fm5+HXy4f390FN9i6ftadYQDKeWmA==", - "dev": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0" - }, - "peerDependencies": { - "@angular/common": "16.2.12", - "@angular/core": "16.2.12", - "@angular/platform-browser": "16.2.12", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", - "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", - "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", - "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@ionic/core": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", - "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", - "license": "MIT", - "dependencies": { - "@stencil/core": "4.38.0", - "ionicons": "^8.0.13", - "tslib": "^2.1.0" - } - }, - "node_modules/@ionic/eslint-config": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "^4.1.0", - "@typescript-eslint/parser": "^4.1.0", - "eslint-config-prettier": "^6.11.0", - "eslint-plugin-import": "^2.22.0" - }, - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ionic/eslint-config/node_modules/eslint-config-prettier": { - "version": "6.15.0", - "dev": true, - "license": "MIT", - "dependencies": { - "get-stdin": "^6.0.0" - }, - "bin": { - "eslint-config-prettier-check": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=3.14.1" - } - }, - "node_modules/@ionic/prettier-config": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "prettier": "^2.0.0" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", - "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", - "dev": true, - "dependencies": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", - "dev": true, - "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "lib/index.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dev": true, - "dependencies": { - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", - "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@rollup/plugin-json": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", - "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.1.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", - "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@schematics/angular": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.0.0.tgz", - "integrity": "sha512-9jKU5x/WzaBsfSkUowK1X74FqtMXa6+A60XgW4ACO8i6fwKfPeS+tIrAieeYOX80/njBh7I5CvcpHmWA2SbcXQ==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "17.0.0", - "@angular-devkit/schematics": "17.0.0", - "jsonc-parser": "3.2.0" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@sigstore/bundle": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", - "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", - "dev": true, - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", - "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/sign": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", - "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", - "dev": true, - "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "make-fetch-happen": "^11.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/sign/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@sigstore/sign/node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/sign/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@sigstore/sign/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@sigstore/sign/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/sign/node_modules/make-fetch-happen/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sigstore/sign/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@sigstore/sign/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sigstore/sign/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sigstore/sign/node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/@sigstore/tuf": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", - "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", - "dev": true, - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0", - "tuf-js": "^1.1.7" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@stencil/core": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", - "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", - "license": "MIT", - "bin": { - "stencil": "bin/stencil" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.10.0" - }, - "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tufjs/canonical-json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", - "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@tufjs/models": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", - "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", - "dev": true, - "dependencies": { - "@tufjs/canonical-json": "1.0.0", - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.19.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", - "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.52.0.tgz", - "integrity": "sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/type-utils": "5.52.0", - "@typescript-eslint/utils": "5.52.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.52.0.tgz", - "integrity": "sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.52.0", - "@typescript-eslint/utils": "5.52.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.52.0.tgz", - "integrity": "sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/typescript-estree": "5.52.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.52.0.tgz", - "integrity": "sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/typescript-estree": "5.52.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.52.0.tgz", - "integrity": "sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/visitor-keys": "5.52.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.52.0.tgz", - "integrity": "sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.52.0.tgz", - "integrity": "sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/visitor-keys": "5.52.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.52.0.tgz", - "integrity": "sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.52.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", - "dev": true, - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "8.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-includes": { - "version": "3.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.2.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.17", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", - "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.22.2", - "caniuse-lite": "^1.0.30001578", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/axobject-query": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", - "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", - "dev": true, - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", - "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001580", - "electron-to-chromium": "^1.4.648", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/cacache": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", - "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001581", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz", - "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cuint": { - "version": "0.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defaults": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "node_modules/dependency-graph": { - "version": "0.11.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.648", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.648.tgz", - "integrity": "sha512-EmFMarXeqJp9cUKu/QEciEApn0S/xRcpZWuAm32U7NgoZCimjsilKXHRO9saeEW55eHZagIDg6XTUOv32w9pjg==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/es-abstract": { - "version": "1.19.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" - } - }, - "node_modules/esbuild-wasm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.19.12.tgz", - "integrity": "sha512-Zmc4hk6FibJZBcTx5/8K/4jT3/oG1vkGTEeKJUQFCUQKimD6Q7+adp/bdVQyYJFolMKaXkQnVZdV4O5ZaTYmyQ==", - "dev": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", - "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.1", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils/node_modules/find-up": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/locate-path": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-limit": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-locate": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-try": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/pkg-dir": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.25.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.0", - "has": "^1.0.3", - "is-core-module": "^2.7.0", - "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.2", - "dev": true, - "license": "ISC" - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stdin": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "dev": true, - "license": "ISC" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-walk": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", - "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", - "dev": true, - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/immutable": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", - "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/injection-js": { - "version": "2.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - } - }, - "node_modules/inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ionicons": { - "version": "8.0.13", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-8.0.13.tgz", - "integrity": "sha512-2QQVyG2P4wszne79jemMjWYLp0DBbDhr4/yFroPCxvPP1wtMxgdIV3l5n+XZ5E9mgoXU79w7yTWpm2XzJsISxQ==", - "license": "MIT", - "dependencies": { - "@stencil/core": "^4.35.3" - } - }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-callable": { - "version": "1.2.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakref": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", - "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/less": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", - "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", - "dev": true, - "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" - } - }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/less/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/make-fetch-happen/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-fetch-happen/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/make-fetch-happen/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/make-fetch-happen/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dev": true, - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "dev": true, - "license": "MIT" - }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-collect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", - "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dev": true, - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/minipass-fetch/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/needle": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", - "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", - "dev": true, - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ng-packagr": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-16.2.3.tgz", - "integrity": "sha512-VTJ7Qtge52+1subkhmF5nOqLNbVutA8/igJ0A5vH6Mgpb8Z/3HeZomtD1SHzZF5Dqp+p+QPHE548FWYu1MdMSQ==", - "dev": true, - "dependencies": { - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.0.0", - "ajv": "^8.11.0", - "ansi-colors": "^4.1.3", - "autoprefixer": "^10.4.12", - "browserslist": "^4.21.4", - "cacache": "^18.0.0", - "chokidar": "^3.5.3", - "commander": "^11.0.0", - "convert-source-map": "^2.0.0", - "dependency-graph": "^0.11.0", - "esbuild-wasm": "^0.19.0", - "fast-glob": "^3.2.12", - "find-cache-dir": "^3.3.2", - "injection-js": "^2.4.0", - "jsonc-parser": "^3.2.0", - "less": "^4.1.3", - "ora": "^5.1.0", - "piscina": "^4.0.0", - "postcss": "^8.4.16", - "postcss-url": "^10.1.3", - "rollup": "^3.0.0", - "rxjs": "^7.5.6", - "sass": "^1.55.0" - }, - "bin": { - "ng-packagr": "cli/main.js" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0" - }, - "optionalDependencies": { - "esbuild": "^0.19.0" - }, - "peerDependencies": { - "@angular/compiler-cli": "^16.0.0 || ^16.2.0-next.0", - "tailwindcss": "^2.0.0 || ^3.0.0", - "tslib": "^2.3.0", - "typescript": ">=4.9.3 <5.2" - }, - "peerDependenciesMeta": { - "tailwindcss": { - "optional": true - } - } - }, - "node_modules/ng-packagr/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/ng-packagr/node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "!win32" - ], - "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "optional": true - }, - "node_modules/node-gyp": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", - "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.13 || ^14.13 || >=16" - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", - "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", - "dev": true, - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", - "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-install-checks": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", - "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", - "dev": true, - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", - "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", - "dev": true, - "dependencies": { - "ignore-walk": "^6.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-pick-manifest": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", - "dev": true, - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^10.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", - "dev": true, - "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/cacache/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm-registry-fetch/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm-registry-fetch/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm-registry-fetch/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm-registry-fetch/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm-registry-fetch/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm-registry-fetch/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/object-inspect": { - "version": "1.11.0", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pacote": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", - "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", - "dev": true, - "dependencies": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^5.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.3.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/pacote/node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/cacache/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/pacote/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/pacote/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/pacote/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/pacote/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pacote/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/pacote/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/piscina": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.3.0.tgz", - "integrity": "sha512-vTQszGZj78p0BHFNO/cSvpzPUYa4tLXRe30aIYyQjqRS3fK/kPqdxvkTfGXQlEpWOI+mOOkda0iEY6NaanLWJA==", - "dev": true, - "optionalDependencies": { - "nice-napi": "^1.0.2" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-url": { - "version": "10.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "make-dir": "~3.1.0", - "mime": "~2.5.2", - "minimatch": "~3.0.4", - "xxhashjs": "~0.2.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-url/node_modules/mime": { - "version": "2.5.2", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.4.1", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/read-package-json": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", - "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", - "dev": true, - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", - "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/read-package-json/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/regexpp": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/sass": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.2.tgz", - "integrity": "sha512-2mbyOWOv/lhEXD6nVrQZQ4KT2DlwcODbTskM42EyqBAFUWOhiiYtAXZqjZz1ygzapYf+N+2GwfIH9M5FM4GUMg==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", - "dev": true, - "optional": true - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sigstore": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", - "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", - "dev": true, - "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "@sigstore/sign": "^1.0.0", - "@sigstore/tuf": "^1.0.3", - "make-fetch-happen": "^11.0.1" - }, - "bin": { - "sigstore": "bin/sigstore.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sigstore/node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sigstore/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/sigstore/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/make-fetch-happen/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sigstore/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sigstore/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/sigstore/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sigstore/node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", - "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", - "dev": true - }, - "node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.11.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tslib": { - "version": "2.3.1", - "license": "0BSD" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tuf-js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", - "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", - "dev": true, - "dependencies": { - "@tufjs/models": "1.0.4", - "debug": "^4.3.4", - "make-fetch-happen": "^11.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/tuf-js/node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tuf-js/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/tuf-js/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/make-fetch-happen/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tuf-js/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tuf-js/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/tuf-js/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tuf-js/node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", - "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/typescript-eslint-language-service": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/typescript-eslint-language-service/-/typescript-eslint-language-service-5.0.0.tgz", - "integrity": "sha512-QB3YsL+lDOpKwblXuqD9GkzpHhJC2D02e/3OIj38kIe6LSL97cEsUtnsVPqIaofnOsV2glj2T5VLxp5gmLTERQ==", - "dev": true, - "peerDependencies": { - "@typescript-eslint/parser": ">= 5.0.0", - "eslint": ">= 8.0.0", - "typescript": ">= 4.0.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/xxhashjs": { - "version": "0.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cuint": "^0.2.2" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zone.js": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.13.3.tgz", - "integrity": "sha512-MKPbmZie6fASC/ps4dkmIhaT5eonHkEt6eAy80K42tAm0G2W+AahLJjbfi6X9NPdciOE9GRFTTM8u2IiF6O3ww==", - "dev": true, - "dependencies": { - "tslib": "^2.3.0" - } - } - } -} \ No newline at end of file diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index e5d4c6616d4..7b500894ce0 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -10,4 +10,4 @@ "license": "MIT" } } -} \ No newline at end of file +} diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index e057bb953c5..9a29e5dc1ec 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -238,9 +238,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", - "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", + "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -415,12 +415,12 @@ } }, "node_modules/@ionic/react": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.9.tgz", - "integrity": "sha512-mG+0oGUOXt54QIgY6XTLWdf0u3dxHWVcuCXFH1fh4t2F7QPP392LJx6wIZieTc+Cp1r94uuNKWBZmdVPuvRxSA==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.10.tgz", + "integrity": "sha512-FNGQCmkAjteOBz+qR9Qa/dl8AjdP4UXandmWWEECTzdrQKBpt5fFdu8vE3i7FBx60R4tr/zBxlila48EzVtqsQ==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.9", + "@ionic/core": "8.7.10", "ionicons": "^8.0.13", "tslib": "*" }, @@ -4175,9 +4175,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", - "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", + "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -4281,11 +4281,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.9.tgz", - "integrity": "sha512-mG+0oGUOXt54QIgY6XTLWdf0u3dxHWVcuCXFH1fh4t2F7QPP392LJx6wIZieTc+Cp1r94uuNKWBZmdVPuvRxSA==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.10.tgz", + "integrity": "sha512-FNGQCmkAjteOBz+qR9Qa/dl8AjdP4UXandmWWEECTzdrQKBpt5fFdu8vE3i7FBx60R4tr/zBxlila48EzVtqsQ==", "requires": { - "@ionic/core": "8.7.9", + "@ionic/core": "8.7.10", "ionicons": "^8.0.13", "tslib": "*" } @@ -6844,4 +6844,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 6ab8db80706..1d413e6139f 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -736,9 +736,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", - "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", + "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -11913,4 +11913,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 12cf4e74ea3..0907e5e65c3 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -673,9 +673,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", - "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", + "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -865,12 +865,12 @@ } }, "node_modules/@ionic/vue": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.9.tgz", - "integrity": "sha512-chpnclhnL8dC+Wi2/Fd/muI4FPzTqyVvFgIKfMDaz00tF8xmhHI9AXwaRvtt7AJh8CWGAw1QCp/FMboFSQ7D7A==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.10.tgz", + "integrity": "sha512-5nhzBZC1VASQmNGz36UXsxVsMXAUmhKhpAfWaiwqfoHy/8YLV6d5dwCQPBwQrX7K4I/k76eyho8xQ4YhQFZXng==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.9", + "@ionic/core": "8.7.10", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -8041,9 +8041,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", - "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", + "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -8156,11 +8156,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.9.tgz", - "integrity": "sha512-chpnclhnL8dC+Wi2/Fd/muI4FPzTqyVvFgIKfMDaz00tF8xmhHI9AXwaRvtt7AJh8CWGAw1QCp/FMboFSQ7D7A==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.10.tgz", + "integrity": "sha512-5nhzBZC1VASQmNGz36UXsxVsMXAUmhKhpAfWaiwqfoHy/8YLV6d5dwCQPBwQrX7K4I/k76eyho8xQ4YhQFZXng==", "requires": { - "@ionic/core": "8.7.9", + "@ionic/core": "8.7.10", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -12991,4 +12991,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index e4a72832ec9..9efb270a1b2 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -222,9 +222,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.9", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.9.tgz", - "integrity": "sha512-6cYp3LHjCGX32MiYR09l/O+8klkJ27WpKzllvnLRe5bxX3nOuqJvJJIshzT85qTdZNTFu7zJJrjWkgEOXGarzg==", + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", + "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -4019,4 +4019,4 @@ "dev": true } } -} \ No newline at end of file +} From 5c86b87fe331468b7ef709f2392bd72daab94a54 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Wed, 19 Nov 2025 10:28:23 -0800 Subject: [PATCH 034/126] chore(angular): add package-lock back --- packages/angular/package-lock.json | 8173 ++++++++++++++++++++++++++++ 1 file changed, 8173 insertions(+) diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index e69de29bb2d..2fd931a5656 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -0,0 +1,8173 @@ +{ + "name": "@ionic/angular", + "version": "8.7.10", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@ionic/angular", + "version": "8.7.10", + "license": "MIT", + "dependencies": { + "@ionic/core": "^8.7.10", + "ionicons": "^8.0.13", + "jsonc-parser": "^3.0.0", + "tslib": "^2.3.0" + }, + "devDependencies": { + "@angular-devkit/core": "^17.0.0", + "@angular-devkit/schematics": "^17.0.0", + "@angular-eslint/eslint-plugin": "^16.0.0", + "@angular-eslint/eslint-plugin-template": "^16.0.0", + "@angular-eslint/template-parser": "^16.0.0", + "@angular/cli": "^16.0.0", + "@angular/common": "^16.0.0", + "@angular/compiler": "^16.0.0", + "@angular/compiler-cli": "^16.0.0", + "@angular/core": "^16.0.0", + "@angular/forms": "^16.0.0", + "@angular/platform-browser": "^16.0.0", + "@angular/platform-browser-dynamic": "^16.0.0", + "@angular/router": "^16.0.0", + "@ionic/eslint-config": "^0.3.0", + "@ionic/prettier-config": "^2.0.0", + "@schematics/angular": "^17.0.0", + "@types/node": "20.19.25", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^8.0.0", + "eslint-plugin-import": "^2.25.2", + "fs-extra": "^7.0.0", + "ng-packagr": "^16.0.0", + "prettier": "^2.4.1", + "rxjs": "~7.5.0", + "typescript": "~5.0.2", + "typescript-eslint-language-service": "^5.0.0", + "zone.js": "~0.13.0" + }, + "peerDependencies": { + "@angular/core": ">=16.0.0", + "@angular/forms": ">=16.0.0", + "@angular/router": ">=16.0.0", + "rxjs": ">=7.5.0", + "zone.js": ">=0.13.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1602.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "16.2.12", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "picomatch": "2.3.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/architect/node_modules/rxjs": { + "version": "7.8.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "17.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "picomatch": "3.0.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/node_modules/picomatch": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "7.8.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "17.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "17.0.0", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.5", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "7.8.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-eslint/bundled-angular-compiler": { + "version": "16.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-eslint/eslint-plugin": { + "version": "16.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-eslint/utils": "16.3.1", + "@typescript-eslint/utils": "5.62.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/eslint-plugin-template": { + "version": "16.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "16.3.1", + "@angular-eslint/utils": "16.3.1", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "aria-query": "5.3.0", + "axobject-query": "4.0.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/template-parser": { + "version": "16.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "16.3.1", + "eslint-scope": "^7.0.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/template-parser/node_modules/eslint-scope": { + "version": "7.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@angular-eslint/template-parser/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@angular-eslint/utils": { + "version": "16.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "16.3.1", + "@typescript-eslint/utils": "5.62.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular/cli": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/architect": "0.1602.12", + "@angular-devkit/core": "16.2.12", + "@angular-devkit/schematics": "16.2.12", + "@schematics/angular": "16.2.12", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "ini": "4.1.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "npm-package-arg": "10.1.0", + "npm-pick-manifest": "8.0.1", + "open": "8.4.2", + "ora": "5.4.1", + "pacote": "15.2.0", + "resolve": "1.22.2", + "semver": "7.5.4", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/@angular-devkit/core": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "picomatch": "2.3.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular/cli/node_modules/@angular-devkit/schematics": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "16.2.12", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.1", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/@schematics/angular": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "16.2.12", + "@angular-devkit/schematics": "16.2.12", + "jsonc-parser": "3.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/magic-string": { + "version": "0.30.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular/cli/node_modules/rxjs": { + "version": "7.8.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular/common": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.2.12" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "7.23.2", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/compiler": "16.2.12", + "typescript": ">=4.9.3 <5.2" + } + }, + "node_modules/@angular/core": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.13.0" + } + }, + "node_modules/@angular/forms": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/animations": "16.2.12", + "@angular/common": "16.2.12", + "@angular/core": "16.2.12" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.12", + "@angular/compiler": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12" + } + }, + "node_modules/@angular/router": { + "version": "16.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.9", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.23.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@ionic/core": { + "version": "8.7.10", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", + "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", + "license": "MIT", + "dependencies": { + "@stencil/core": "4.38.0", + "ionicons": "^8.0.13", + "tslib": "^2.1.0" + } + }, + "node_modules/@ionic/eslint-config": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^4.1.0", + "@typescript-eslint/parser": "^4.1.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-import": "^2.22.0" + }, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/parser": { + "version": "4.33.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/types": { + "version": "4.33.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ionic/eslint-config/node_modules/eslint-config-prettier": { + "version": "6.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "get-stdin": "^6.0.0" + }, + "bin": { + "eslint-config-prettier-check": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=3.14.1" + } + }, + "node_modules/@ionic/prettier-config": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "prettier": "^2.0.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.22", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "3.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.34.9", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@schematics/angular": { + "version": "17.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "17.0.0", + "@angular-devkit/schematics": "17.0.0", + "jsonc-parser": "3.2.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sigstore/bundle": { + "version": "1.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "1.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/cacache": { + "version": "17.1.4", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@sigstore/sign/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@sigstore/sign/node_modules/make-fetch-happen": { + "version": "11.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/make-fetch-happen/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sigstore/sign/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@sigstore/sign/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sigstore/sign/node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sigstore/sign/node_modules/minipass-fetch": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/@sigstore/tuf": { + "version": "1.0.3", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@stencil/core": { + "version": "4.38.0", + "license": "MIT", + "bin": { + "stencil": "bin/stencil" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.10.0" + }, + "optionalDependencies": { + "@rollup/rollup-darwin-arm64": "4.34.9", + "@rollup/rollup-darwin-x64": "4.34.9", + "@rollup/rollup-linux-arm64-gnu": "4.34.9", + "@rollup/rollup-linux-arm64-musl": "4.34.9", + "@rollup/rollup-linux-x64-gnu": "4.34.9", + "@rollup/rollup-linux-x64-musl": "4.34.9", + "@rollup/rollup-win32-arm64-msvc": "4.34.9", + "@rollup/rollup-win32-x64-msvc": "4.34.9" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tufjs/canonical-json": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.52.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "5.52.0", + "@typescript-eslint/type-utils": "5.52.0", + "@typescript-eslint/utils": "5.52.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "5.52.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.52.0", + "@typescript-eslint/utils": "5.52.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "5.52.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.52.0", + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/typescript-estree": "5.52.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { + "version": "4.33.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.52.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.52.0", + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/typescript-estree": "5.52.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.52.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/visitor-keys": "5.52.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.52.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.52.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/visitor-keys": "5.52.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.52.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.52.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.8.2", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-includes": { + "version": "3.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.17", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.3", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/cacache": { + "version": "18.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.2.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001581", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cuint": { + "version": "0.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.648", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/errno": { + "version": "0.1.8", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/es-abstract": { + "version": "1.19.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.19.12", + "dev": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.34.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "find-up": "^2.1.0", + "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils/node_modules/find-up": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/locate-path": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-limit": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-locate": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-try": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/pkg-dir": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.25.2", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.0", + "has": "^1.0.3", + "is-core-module": "^2.7.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.11.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.15.0", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.2", + "dev": true, + "license": "ISC" + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/gauge": { + "version": "4.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stdin": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.8", + "dev": true, + "license": "ISC" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/has": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/hasown": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "6.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/injection-js": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ionicons": { + "version": "8.0.13", + "license": "MIT", + "dependencies": { + "@stencil/core": "^4.35.3" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-module": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/less": { + "version": "4.2.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { + "version": "2.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "16.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/make-fetch-happen/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "9.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-filename": { + "version": "2.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-slug": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "dev": true, + "license": "MIT" + }, + "node_modules/minipass": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "dev": true, + "license": "ISC" + }, + "node_modules/nanoid": { + "version": "3.3.4", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/needle": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ng-packagr": { + "version": "16.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.0.0", + "ajv": "^8.11.0", + "ansi-colors": "^4.1.3", + "autoprefixer": "^10.4.12", + "browserslist": "^4.21.4", + "cacache": "^18.0.0", + "chokidar": "^3.5.3", + "commander": "^11.0.0", + "convert-source-map": "^2.0.0", + "dependency-graph": "^0.11.0", + "esbuild-wasm": "^0.19.0", + "fast-glob": "^3.2.12", + "find-cache-dir": "^3.3.2", + "injection-js": "^2.4.0", + "jsonc-parser": "^3.2.0", + "less": "^4.1.3", + "ora": "^5.1.0", + "piscina": "^4.0.0", + "postcss": "^8.4.16", + "postcss-url": "^10.1.3", + "rollup": "^3.0.0", + "rxjs": "^7.5.6", + "sass": "^1.55.0" + }, + "bin": { + "ng-packagr": "cli/main.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "optionalDependencies": { + "esbuild": "^0.19.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^16.0.0 || ^16.2.0-next.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "tslib": "^2.3.0", + "typescript": ">=4.9.3 <5.2" + }, + "peerDependenciesMeta": { + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/ng-packagr/node_modules/convert-source-map": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ng-packagr/node_modules/rxjs": { + "version": "7.8.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/nice-napi": { + "version": "1.0.2", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-gyp": { + "version": "9.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.0", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "dev": true, + "license": "MIT" + }, + "node_modules/nopt": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "5.0.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-install-checks": { + "version": "6.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "10.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "14.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/cacache": { + "version": "17.1.4", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/cacache/node_modules/minipass": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm-registry-fetch/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-registry-fetch/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { + "version": "11.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/object-inspect": { + "version": "1.11.0", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "15.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/pacote/node_modules/cacache": { + "version": "17.1.4", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/cacache/node_modules/minipass": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/pacote/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pacote/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/pacote/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pacote/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pacote/node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/piscina": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.21", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-url": { + "version": "10.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "make-dir": "~3.1.0", + "mime": "~2.5.2", + "minimatch": "~3.0.4", + "xxhashjs": "~0.2.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-url/node_modules/mime": { + "version": "2.5.2", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/read-package-json": { + "version": "6.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/regexpp": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.58.2", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sax": { + "version": "1.3.0", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/semver": { + "version": "7.5.4", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/sigstore": { + "version": "1.9.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/sign": "^1.0.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sigstore/node_modules/cacache": { + "version": "17.1.4", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sigstore/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/sigstore/node_modules/make-fetch-happen": { + "version": "11.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/make-fetch-happen/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/sigstore/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sigstore/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/sigstore/node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sigstore/node_modules/minipass-fetch": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.4.0", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/ssri": { + "version": "10.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tar": { + "version": "6.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.0.33", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/tuf-js": { + "version": "1.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "1.0.4", + "debug": "^4.3.4", + "make-fetch-happen": "^11.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/tuf-js/node_modules/cacache": { + "version": "17.1.4", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tuf-js/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/tuf-js/node_modules/make-fetch-happen": { + "version": "11.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/make-fetch-happen/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/tuf-js/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tuf-js/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tuf-js/node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tuf-js/node_modules/minipass-fetch": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/typescript-eslint-language-service": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@typescript-eslint/parser": ">= 5.0.0", + "eslint": ">= 8.0.0", + "typescript": ">= 4.0.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/xxhashjs": { + "version": "0.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cuint": "^0.2.2" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zone.js": { + "version": "0.13.3", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + } + } + } +} From 53f3bea244692cfcef305dbbda6fedee3f373dca Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Wed, 19 Nov 2025 10:35:57 -0800 Subject: [PATCH 035/126] chore(angular): correct package-lock --- packages/angular/package-lock.json | 1982 ++++++++++++++++++++-------- 1 file changed, 1452 insertions(+), 530 deletions(-) diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 2fd931a5656..2d85bc93567 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -55,8 +55,9 @@ }, "node_modules/@ampproject/remapping": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -67,8 +68,9 @@ }, "node_modules/@angular-devkit/architect": { "version": "0.1602.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.12.tgz", + "integrity": "sha512-19Fwwfx+KvJ01SyI6cstRgqT9+cwer8Ro1T27t1JqlGyOX8tY3pV78ulwxy2+wCzPjR18V6W7cb7Cv6fyK4xog==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "16.2.12", "rxjs": "7.8.1" @@ -81,8 +83,9 @@ }, "node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", + "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", @@ -107,16 +110,18 @@ }, "node_modules/@angular-devkit/architect/node_modules/rxjs": { "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@angular-devkit/core": { "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.0.0.tgz", + "integrity": "sha512-QUu3LnEi4A8t733v2+I0sLtyBJx3Q7zdTAhaauCbxbFhDid0cbYm8hYsyG/njor1irTPxSJbn6UoetVkwUQZxg==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", @@ -141,8 +146,9 @@ }, "node_modules/@angular-devkit/core/node_modules/picomatch": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -152,16 +158,18 @@ }, "node_modules/@angular-devkit/core/node_modules/rxjs": { "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@angular-devkit/schematics": { "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.0.0.tgz", + "integrity": "sha512-LD7fjDORuBf139/oJ/gSwbIzQPfsm6Y67s1FD+XLi0QXaRt6dw4r7BMD08l1r//oPQofNgbEH4coGVO4NdCL/A==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "17.0.0", "jsonc-parser": "3.2.0", @@ -177,21 +185,24 @@ }, "node_modules/@angular-devkit/schematics/node_modules/rxjs": { "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@angular-eslint/bundled-angular-compiler": { "version": "16.3.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.3.1.tgz", + "integrity": "sha512-m4WP1xwS9XLcC/3n6lIcG5HZoai/5eb5W3xm48GVcv//0qE2p7S96RSgKPgGHvif5pF8O9xAqEWs3gDEG45+7A==", + "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.3.1.tgz", + "integrity": "sha512-kSc8ESfoy8TUSthbq0Lpq9e17I+3Smy4rHoNpKCFEGuJgPs0+OssZMxB6a5EawGbv2EKTPEtrxzFm1WsLR0U9Q==", "dev": true, - "license": "MIT", "dependencies": { "@angular-eslint/utils": "16.3.1", "@typescript-eslint/utils": "5.62.0" @@ -203,8 +214,9 @@ }, "node_modules/@angular-eslint/eslint-plugin-template": { "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.3.1.tgz", + "integrity": "sha512-+RcFEWqNiRt3+5jXvmlIDlXtP9+vjdmgmVL6tt8yDbqdjBOewtyMu4pE4YaR4sFboyxgME9PbO2WrOyPXh6xjg==", "dev": true, - "license": "MIT", "dependencies": { "@angular-eslint/bundled-angular-compiler": "16.3.1", "@angular-eslint/utils": "16.3.1", @@ -220,8 +232,9 @@ }, "node_modules/@angular-eslint/template-parser": { "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.3.1.tgz", + "integrity": "sha512-9+SxUtxB2iOnm0ldS2ow0stMxe02rB/TxeMIe8fxsLFHZdw8RQvs/p3HLvVHXzv6gUblMHebIb/ubUmwEVb2SA==", "dev": true, - "license": "MIT", "dependencies": { "@angular-eslint/bundled-angular-compiler": "16.3.1", "eslint-scope": "^7.0.0" @@ -233,8 +246,9 @@ }, "node_modules/@angular-eslint/template-parser/node_modules/eslint-scope": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -245,16 +259,18 @@ }, "node_modules/@angular-eslint/template-parser/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/@angular-eslint/utils": { "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.3.1.tgz", + "integrity": "sha512-tEBcce0rG+DmcPO8jhRffUFDioGw3G4cUAE15XlRctY1J3QzOBH9HdUOTDt0mMjBgpWCzh0YVT1Moh2bPXU9Xg==", "dev": true, - "license": "MIT", "dependencies": { "@angular-eslint/bundled-angular-compiler": "16.3.1", "@typescript-eslint/utils": "5.62.0" @@ -266,8 +282,9 @@ }, "node_modules/@angular/cli": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.12.tgz", + "integrity": "sha512-Pcbiraoqdw4rR2Ey5Ooy0ESLS1Ffbjkb6sPfinKRkHmAvyqsmlvkfbB/qK8GrzDSFSWvAKMMXRw9l8nbjvQEXg==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/architect": "0.1602.12", "@angular-devkit/core": "16.2.12", @@ -299,8 +316,9 @@ }, "node_modules/@angular/cli/node_modules/@angular-devkit/core": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", + "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", @@ -325,8 +343,9 @@ }, "node_modules/@angular/cli/node_modules/@angular-devkit/schematics": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.12.tgz", + "integrity": "sha512-lf/Nz2o875pllxGNUcI2by4rctfRsOZOxvaLq2UaH6XG6Re9tqeNfn40a8qXrr9/IYntXnlvEid/pd9e8gFBIw==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "16.2.12", "jsonc-parser": "3.2.0", @@ -342,8 +361,9 @@ }, "node_modules/@angular/cli/node_modules/@schematics/angular": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.12.tgz", + "integrity": "sha512-rc6Dxo7yLnNhECxZyvwv3qL40GvMHw/gMeme8DUGN7zgcUdBJ7LOCURp7EZqOBghMVeeJvLrohitEbs9NhRLBA==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "16.2.12", "@angular-devkit/schematics": "16.2.12", @@ -357,8 +377,9 @@ }, "node_modules/@angular/cli/node_modules/magic-string": { "version": "0.30.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", + "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -368,16 +389,18 @@ }, "node_modules/@angular/cli/node_modules/rxjs": { "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@angular/common": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.12.tgz", + "integrity": "sha512-B+WY/cT2VgEaz9HfJitBmgdk4I333XG/ybC98CMC4Wz8E49T8yzivmmxXB3OD6qvjcOB6ftuicl6WBqLbZNg2w==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -391,8 +414,9 @@ }, "node_modules/@angular/compiler": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.12.tgz", + "integrity": "sha512-6SMXUgSVekGM7R6l1Z9rCtUGtlg58GFmgbpMCsGf+VXxP468Njw8rjT2YZkf5aEPxEuRpSHhDYjqz7n14cwCXQ==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -410,8 +434,9 @@ }, "node_modules/@angular/compiler-cli": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.12.tgz", + "integrity": "sha512-pWSrr152562ujh6lsFZR8NfNc5Ljj+zSTQO44DsuB0tZjwEpnRcjJEgzuhGXr+CoiBf+jTSPZKemtSktDk5aaA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "7.23.2", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -437,8 +462,9 @@ }, "node_modules/@angular/core": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.12.tgz", + "integrity": "sha512-GLLlDeke/NjroaLYOks0uyzFVo6HyLl7VOm0K1QpLXnYvW63W9Ql/T3yguRZa7tRkOAeFZ3jw+1wnBD4O8MoUA==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -452,8 +478,9 @@ }, "node_modules/@angular/forms": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.12.tgz", + "integrity": "sha512-1Eao89hlBgLR3v8tU91vccn21BBKL06WWxl7zLpQmG6Hun+2jrThgOE4Pf3os4fkkbH4Apj0tWL2fNIWe/blbw==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -469,8 +496,9 @@ }, "node_modules/@angular/platform-browser": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.12.tgz", + "integrity": "sha512-NnH7ju1iirmVEsUq432DTm0nZBGQsBrU40M3ZeVHMQ2subnGiyUs3QyzDz8+VWLL/T5xTxWLt9BkDn65vgzlIQ==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -490,8 +518,9 @@ }, "node_modules/@angular/platform-browser-dynamic": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.12.tgz", + "integrity": "sha512-ya54jerNgreCVAR278wZavwjrUWImMr2F8yM5n9HBvsMBbFaAQ83anwbOEiHEF2BlR+gJiEBLfpuPRMw20pHqw==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -507,8 +536,9 @@ }, "node_modules/@angular/router": { "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.12.tgz", + "integrity": "sha512-aU6QnYSza005V9P3W6PpkieL56O0IHps96DjqI1RS8yOJUl3THmokqYN4Fm5+HXy4f390FN9i6ftadYQDKeWmA==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -524,8 +554,9 @@ }, "node_modules/@babel/code-frame": { "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -536,16 +567,18 @@ }, "node_modules/@babel/compat-data": { "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", @@ -573,21 +606,24 @@ }, "node_modules/@babel/core/node_modules/convert-source-map": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", @@ -600,8 +636,9 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-validator-option": "^7.23.5", @@ -615,37 +652,42 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -656,8 +698,9 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -667,8 +710,9 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.22.15" }, @@ -678,8 +722,9 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -696,8 +741,9 @@ }, "node_modules/@babel/helper-simple-access": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -707,8 +753,9 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -718,32 +765,36 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.23.9", "@babel/traverse": "^7.23.9", @@ -755,8 +806,9 @@ }, "node_modules/@babel/highlight": { "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -768,8 +820,9 @@ }, "node_modules/@babel/parser": { "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "dev": true, - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -779,8 +832,9 @@ }, "node_modules/@babel/template": { "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/parser": "^7.23.9", @@ -792,8 +846,9 @@ }, "node_modules/@babel/traverse": { "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", @@ -812,8 +867,9 @@ }, "node_modules/@babel/types": { "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -823,13 +879,78 @@ "node": ">=6.9.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/darwin-arm64": { "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -838,10 +959,299 @@ "node": ">=12" } }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -854,8 +1264,9 @@ }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -865,8 +1276,9 @@ }, "node_modules/@eslint/eslintrc": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -887,8 +1299,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -902,8 +1315,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -916,13 +1330,15 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -932,13 +1348,15 @@ }, "node_modules/@gar/promisify": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -950,8 +1368,9 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -961,8 +1380,9 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -973,8 +1393,9 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true }, "node_modules/@ionic/core": { "version": "8.7.10", @@ -1003,8 +1424,9 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/experimental-utils": "4.33.0", "@typescript-eslint/scope-manager": "4.33.0", @@ -1034,8 +1456,9 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/parser": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -1060,8 +1483,9 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/scope-manager": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "4.33.0", "@typescript-eslint/visitor-keys": "4.33.0" @@ -1076,8 +1500,9 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/types": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true, - "license": "MIT", "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, @@ -1088,8 +1513,9 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/typescript-estree": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "4.33.0", "@typescript-eslint/visitor-keys": "4.33.0", @@ -1114,8 +1540,9 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/visitor-keys": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "4.33.0", "eslint-visitor-keys": "^2.0.0" @@ -1152,8 +1579,9 @@ }, "node_modules/@isaacs/cliui": { "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1168,8 +1596,9 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -1179,8 +1608,9 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -1190,13 +1620,15 @@ }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1211,8 +1643,9 @@ }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1225,8 +1658,9 @@ }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1241,8 +1675,9 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1254,29 +1689,33 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1284,8 +1723,9 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1296,16 +1736,18 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1316,8 +1758,9 @@ }, "node_modules/@npmcli/fs": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, - "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -1327,8 +1770,9 @@ }, "node_modules/@npmcli/git": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", + "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^6.0.0", "lru-cache": "^7.4.4", @@ -1345,16 +1789,18 @@ }, "node_modules/@npmcli/git/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/@npmcli/git/node_modules/which": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -1367,8 +1813,9 @@ }, "node_modules/@npmcli/installed-package-contents": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", "dev": true, - "license": "ISC", "dependencies": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -1382,8 +1829,10 @@ }, "node_modules/@npmcli/move-file": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -1394,16 +1843,18 @@ }, "node_modules/@npmcli/node-gyp": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@npmcli/promise-spawn": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "dev": true, - "license": "ISC", "dependencies": { "which": "^3.0.0" }, @@ -1413,8 +1864,9 @@ }, "node_modules/@npmcli/promise-spawn/node_modules/which": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -1427,8 +1879,9 @@ }, "node_modules/@npmcli/run-script": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/promise-spawn": "^6.0.0", @@ -1442,8 +1895,9 @@ }, "node_modules/@npmcli/run-script/node_modules/which": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -1456,8 +1910,9 @@ }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -1465,8 +1920,9 @@ }, "node_modules/@rollup/plugin-json": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", "dev": true, - "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.1.0" }, @@ -1484,8 +1940,9 @@ }, "node_modules/@rollup/plugin-node-resolve": { "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", "dev": true, - "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", @@ -1508,8 +1965,9 @@ }, "node_modules/@rollup/pluginutils": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -1529,6 +1987,8 @@ }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", + "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", "cpu": [ "arm64" ], @@ -1538,10 +1998,102 @@ "darwin" ] }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", + "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", + "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", + "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", + "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", + "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", + "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", + "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@schematics/angular": { "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.0.0.tgz", + "integrity": "sha512-9jKU5x/WzaBsfSkUowK1X74FqtMXa6+A60XgW4ACO8i6fwKfPeS+tIrAieeYOX80/njBh7I5CvcpHmWA2SbcXQ==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "17.0.0", "@angular-devkit/schematics": "17.0.0", @@ -1555,8 +2107,9 @@ }, "node_modules/@sigstore/bundle": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", + "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.2.0" }, @@ -1566,16 +2119,18 @@ }, "node_modules/@sigstore/protobuf-specs": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@sigstore/sign": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", + "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^1.1.0", "@sigstore/protobuf-specs": "^0.2.0", @@ -1587,16 +2142,18 @@ }, "node_modules/@sigstore/sign/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@sigstore/sign/node_modules/cacache": { "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -1617,8 +2174,9 @@ }, "node_modules/@sigstore/sign/node_modules/glob": { "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -1638,16 +2196,18 @@ }, "node_modules/@sigstore/sign/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/@sigstore/sign/node_modules/make-fetch-happen": { "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -1671,16 +2231,18 @@ }, "node_modules/@sigstore/sign/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/@sigstore/sign/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1693,8 +2255,9 @@ }, "node_modules/@sigstore/sign/node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -1704,8 +2267,9 @@ }, "node_modules/@sigstore/sign/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -1715,8 +2279,9 @@ }, "node_modules/@sigstore/sign/node_modules/minipass-fetch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -1731,8 +2296,9 @@ }, "node_modules/@sigstore/tuf": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.2.0", "tuf-js": "^1.1.7" @@ -1743,6 +2309,8 @@ }, "node_modules/@stencil/core": { "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", + "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -1764,24 +2332,27 @@ }, "node_modules/@tootallnate/once": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/@tufjs/canonical-json": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", "dev": true, - "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@tufjs/models": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", + "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", "dev": true, - "license": "MIT", "dependencies": { "@tufjs/canonical-json": "1.0.0", "minimatch": "^9.0.0" @@ -1792,16 +2363,18 @@ }, "node_modules/@tufjs/models/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@tufjs/models/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1814,8 +2387,9 @@ }, "node_modules/@types/estree": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true }, "node_modules/@types/json-schema": { "version": "7.0.9", @@ -1839,18 +2413,21 @@ }, "node_modules/@types/resolve": { "version": "1.20.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true }, "node_modules/@types/semver": { "version": "7.3.13", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.52.0.tgz", + "integrity": "sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/scope-manager": "5.52.0", "@typescript-eslint/type-utils": "5.52.0", @@ -1882,8 +2459,9 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.52.0.tgz", + "integrity": "sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.52.0", "@typescript-eslint/utils": "5.52.0", @@ -1908,8 +2486,9 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.52.0.tgz", + "integrity": "sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", @@ -1933,8 +2512,9 @@ }, "node_modules/@typescript-eslint/experimental-utils": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.7", "@typescript-eslint/scope-manager": "4.33.0", @@ -1956,8 +2536,9 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "4.33.0", "@typescript-eslint/visitor-keys": "4.33.0" @@ -1972,8 +2553,9 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true, - "license": "MIT", "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, @@ -1984,8 +2566,9 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "4.33.0", "@typescript-eslint/visitor-keys": "4.33.0", @@ -2010,8 +2593,9 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "4.33.0", "eslint-visitor-keys": "^2.0.0" @@ -2026,8 +2610,9 @@ }, "node_modules/@typescript-eslint/parser": { "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.52.0.tgz", + "integrity": "sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.52.0", "@typescript-eslint/types": "5.52.0", @@ -2052,8 +2637,9 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.52.0.tgz", + "integrity": "sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.52.0", "@typescript-eslint/visitor-keys": "5.52.0" @@ -2068,8 +2654,9 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.62.0", "@typescript-eslint/utils": "5.62.0", @@ -2094,8 +2681,9 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2106,8 +2694,9 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -2132,8 +2721,9 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -2148,8 +2738,9 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2159,8 +2750,9 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.52.0.tgz", + "integrity": "sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2171,8 +2763,9 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.52.0.tgz", + "integrity": "sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.52.0", "@typescript-eslint/visitor-keys": "5.52.0", @@ -2197,8 +2790,9 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -2222,8 +2816,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0" @@ -2238,8 +2833,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2250,8 +2846,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -2276,8 +2873,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -2292,8 +2890,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2303,8 +2902,9 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.52.0.tgz", + "integrity": "sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.52.0", "eslint-visitor-keys": "^3.3.0" @@ -2319,26 +2919,30 @@ }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true }, "node_modules/abbrev": { "version": "1.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "node_modules/acorn": { "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2348,16 +2952,18 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "license": "MIT", "dependencies": { "debug": "4" }, @@ -2367,8 +2973,9 @@ }, "node_modules/agentkeepalive": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", "dev": true, - "license": "MIT", "dependencies": { "humanize-ms": "^1.2.1" }, @@ -2378,8 +2985,9 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -2405,8 +3013,9 @@ }, "node_modules/ajv-formats": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -2421,16 +3030,18 @@ }, "node_modules/ansi-colors": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -2443,8 +3054,9 @@ }, "node_modules/ansi-escapes/node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2462,8 +3074,9 @@ }, "node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -2485,13 +3098,15 @@ }, "node_modules/aproba": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true }, "node_modules/are-we-there-yet": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, - "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -2502,13 +3117,15 @@ }, "node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/aria-query": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, - "license": "Apache-2.0", "dependencies": { "dequal": "^2.0.3" } @@ -2557,6 +3174,8 @@ }, "node_modules/autoprefixer": { "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", "dev": true, "funding": [ { @@ -2572,7 +3191,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "browserslist": "^4.22.2", "caniuse-lite": "^1.0.30001578", @@ -2593,8 +3211,9 @@ }, "node_modules/axobject-query": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "dequal": "^2.0.3" } @@ -2663,6 +3282,8 @@ }, "node_modules/browserslist": { "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", "dev": true, "funding": [ { @@ -2678,7 +3299,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001580", "electron-to-chromium": "^1.4.648", @@ -2717,8 +3337,9 @@ }, "node_modules/builtin-modules": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -2728,16 +3349,18 @@ }, "node_modules/builtins": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.0.0" } }, "node_modules/cacache": { "version": "18.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", + "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -2758,16 +3381,18 @@ }, "node_modules/cacache/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/cacache/node_modules/glob": { "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -2787,16 +3412,18 @@ }, "node_modules/cacache/node_modules/lru-cache": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, - "license": "ISC", "engines": { "node": "14 || >=16.14" } }, "node_modules/cacache/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2821,14 +3448,17 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { "version": "1.0.30001581", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz", + "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==", "dev": true, "funding": [ { @@ -2843,13 +3473,13 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -2861,11 +3491,14 @@ }, "node_modules/chardet": { "version": "0.7.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true }, "node_modules/chokidar": { "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -2873,7 +3506,6 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2892,16 +3524,18 @@ }, "node_modules/chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -2930,16 +3564,18 @@ }, "node_modules/cli-width": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, - "license": "ISC", "engines": { "node": ">= 10" } }, "node_modules/cliui": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -2959,29 +3595,33 @@ }, "node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/color-support": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "license": "ISC", "bin": { "color-support": "bin.js" } }, "node_modules/commander": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=16" } @@ -2998,18 +3638,21 @@ }, "node_modules/console-control-strings": { "version": "1.1.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true }, "node_modules/convert-source-map": { "version": "1.9.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/copy-anything": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, - "license": "MIT", "dependencies": { "is-what": "^3.14.1" }, @@ -3037,8 +3680,9 @@ }, "node_modules/debug": { "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -3058,8 +3702,9 @@ }, "node_modules/deepmerge": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3074,16 +3719,18 @@ }, "node_modules/define-lazy-prop": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/define-properties": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, - "license": "MIT", "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -3097,8 +3744,9 @@ }, "node_modules/delegates": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true }, "node_modules/dependency-graph": { "version": "0.11.0", @@ -3110,8 +3758,9 @@ }, "node_modules/dequal": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -3140,13 +3789,15 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, "node_modules/electron-to-chromium": { "version": "1.4.648", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.648.tgz", + "integrity": "sha512-EmFMarXeqJp9cUKu/QEciEApn0S/xRcpZWuAm32U7NgoZCimjsilKXHRO9saeEW55eHZagIDg6XTUOv32w9pjg==", + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -3155,8 +3806,9 @@ }, "node_modules/encoding": { "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -3164,8 +3816,9 @@ }, "node_modules/encoding/node_modules/iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -3176,21 +3829,24 @@ }, "node_modules/env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/err-code": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true }, "node_modules/errno": { "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "prr": "~1.0.1" @@ -3250,9 +3906,10 @@ }, "node_modules/esbuild": { "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "optional": true, "bin": { "esbuild": "bin/esbuild" @@ -3288,8 +3945,9 @@ }, "node_modules/esbuild-wasm": { "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.19.12.tgz", + "integrity": "sha512-Zmc4hk6FibJZBcTx5/8K/4jT3/oG1vkGTEeKJUQFCUQKimD6Q7+adp/bdVQyYJFolMKaXkQnVZdV4O5ZaTYmyQ==", "dev": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -3315,8 +3973,9 @@ }, "node_modules/eslint": { "version": "8.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", + "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", "dev": true, - "license": "MIT", "dependencies": { "@eslint/eslintrc": "^1.4.1", "@humanwhocodes/config-array": "^0.11.8", @@ -3542,8 +4201,9 @@ }, "node_modules/eslint-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -3638,8 +4298,9 @@ }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -3650,24 +4311,27 @@ }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eslint/node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3681,8 +4345,9 @@ }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -3692,8 +4357,9 @@ }, "node_modules/eslint/node_modules/globals": { "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -3719,8 +4385,9 @@ }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -3733,8 +4400,9 @@ }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3744,8 +4412,9 @@ }, "node_modules/eslint/node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -3758,8 +4427,9 @@ }, "node_modules/eslint/node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -3783,8 +4453,9 @@ }, "node_modules/espree": { "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", @@ -3799,8 +4470,9 @@ }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -3853,8 +4525,9 @@ }, "node_modules/estree-walker": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true }, "node_modules/esutils": { "version": "2.0.3", @@ -3866,13 +4539,15 @@ }, "node_modules/exponential-backoff": { "version": "3.1.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true }, "node_modules/external-editor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, - "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -3889,8 +4564,9 @@ }, "node_modules/fast-glob": { "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3914,16 +4590,18 @@ }, "node_modules/fastq": { "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -4003,8 +4681,9 @@ }, "node_modules/foreground-child": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, - "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -4018,8 +4697,9 @@ }, "node_modules/foreground-child/node_modules/signal-exit": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC", "engines": { "node": ">=14" }, @@ -4029,8 +4709,9 @@ }, "node_modules/fraction.js": { "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, - "license": "MIT", "engines": { "node": "*" }, @@ -4054,8 +4735,9 @@ }, "node_modules/fs-minipass": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -4082,8 +4764,9 @@ }, "node_modules/function-bind": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4095,8 +4778,9 @@ }, "node_modules/gauge": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, - "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -4113,8 +4797,9 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -4129,8 +4814,9 @@ }, "node_modules/get-intrinsic": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -4195,16 +4881,18 @@ }, "node_modules/globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -4227,8 +4915,9 @@ }, "node_modules/grapheme-splitter": { "version": "1.0.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true }, "node_modules/has": { "version": "1.0.3", @@ -4251,16 +4940,18 @@ }, "node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/has-property-descriptors": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.1" }, @@ -4270,8 +4961,9 @@ }, "node_modules/has-symbols": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4295,13 +4987,15 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true }, "node_modules/hasown": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -4311,8 +5005,9 @@ }, "node_modules/hosted-git-info": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -4322,21 +5017,24 @@ }, "node_modules/hosted-git-info/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/http-cache-semantics": { "version": "4.1.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true }, "node_modules/http-proxy-agent": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, - "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -4348,8 +5046,9 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -4360,8 +5059,9 @@ }, "node_modules/humanize-ms": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.0.0" } @@ -4398,16 +5098,18 @@ }, "node_modules/ignore": { "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/ignore-walk": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", "dev": true, - "license": "ISC", "dependencies": { "minimatch": "^9.0.0" }, @@ -4417,16 +5119,18 @@ }, "node_modules/ignore-walk/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/ignore-walk/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4439,8 +5143,9 @@ }, "node_modules/image-size": { "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, - "license": "MIT", "optional": true, "bin": { "image-size": "bin/image-size.js" @@ -4451,13 +5156,15 @@ }, "node_modules/immutable": { "version": "4.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", + "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==", + "dev": true }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4479,16 +5186,18 @@ }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/infer-owner": { "version": "1.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", @@ -4506,8 +5215,9 @@ }, "node_modules/ini": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -4522,8 +5232,9 @@ }, "node_modules/inquirer": { "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -4547,8 +5258,9 @@ }, "node_modules/inquirer/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -4561,8 +5273,9 @@ }, "node_modules/inquirer/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4576,8 +5289,9 @@ }, "node_modules/inquirer/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -4587,21 +5301,24 @@ }, "node_modules/inquirer/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/inquirer/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inquirer/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -4611,8 +5328,9 @@ }, "node_modules/internal-slot": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", @@ -4624,6 +5342,8 @@ }, "node_modules/ionicons": { "version": "8.0.13", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-8.0.13.tgz", + "integrity": "sha512-2QQVyG2P4wszne79jemMjWYLp0DBbDhr4/yFroPCxvPP1wtMxgdIV3l5n+XZ5E9mgoXU79w7yTWpm2XzJsISxQ==", "license": "MIT", "dependencies": { "@stencil/core": "^4.35.3" @@ -4631,8 +5351,9 @@ }, "node_modules/ip": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true }, "node_modules/is-bigint": { "version": "1.0.4", @@ -4673,8 +5394,9 @@ }, "node_modules/is-builtin-module": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, - "license": "MIT", "dependencies": { "builtin-modules": "^3.3.0" }, @@ -4698,8 +5420,9 @@ }, "node_modules/is-core-module": { "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -4723,8 +5446,9 @@ }, "node_modules/is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -4772,13 +5496,15 @@ }, "node_modules/is-lambda": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true }, "node_modules/is-module": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true }, "node_modules/is-negative-zero": { "version": "2.0.1", @@ -4815,8 +5541,9 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -4838,8 +5565,9 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -4899,13 +5627,15 @@ }, "node_modules/is-what": { "version": "3.14.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true }, "node_modules/is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -4920,8 +5650,9 @@ }, "node_modules/jackspeak": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -4937,8 +5668,9 @@ }, "node_modules/js-sdsl": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/js-sdsl" @@ -4946,13 +5678,15 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4962,8 +5696,9 @@ }, "node_modules/jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -4973,8 +5708,9 @@ }, "node_modules/json-parse-even-better-errors": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", "dev": true, - "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -4991,8 +5727,9 @@ }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -5002,7 +5739,8 @@ }, "node_modules/jsonc-parser": { "version": "3.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, "node_modules/jsonfile": { "version": "4.0.0", @@ -5014,16 +5752,18 @@ }, "node_modules/jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" - ], - "license": "MIT" + ] }, "node_modules/less": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -5047,8 +5787,9 @@ }, "node_modules/less/node_modules/make-dir": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "pify": "^4.0.1", @@ -5060,8 +5801,9 @@ }, "node_modules/less/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "optional": true, "bin": { "semver": "bin/semver" @@ -5069,8 +5811,9 @@ }, "node_modules/less/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -5101,8 +5844,9 @@ }, "node_modules/lodash": { "version": "4.17.21", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -5201,8 +5945,9 @@ }, "node_modules/magic-string": { "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -5234,8 +5979,9 @@ }, "node_modules/make-fetch-happen": { "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^16.1.0", @@ -5260,8 +6006,9 @@ }, "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.1.3", "semver": "^7.3.5" @@ -5272,16 +6019,18 @@ }, "node_modules/make-fetch-happen/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/make-fetch-happen/node_modules/cacache": { "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -5308,8 +6057,9 @@ }, "node_modules/make-fetch-happen/node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -5319,8 +6069,9 @@ }, "node_modules/make-fetch-happen/node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5337,16 +6088,18 @@ }, "node_modules/make-fetch-happen/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/make-fetch-happen/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -5356,8 +6109,9 @@ }, "node_modules/make-fetch-happen/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5367,8 +6121,9 @@ }, "node_modules/make-fetch-happen/node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -5378,8 +6133,9 @@ }, "node_modules/make-fetch-happen/node_modules/ssri": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -5389,8 +6145,9 @@ }, "node_modules/make-fetch-happen/node_modules/unique-filename": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dev": true, - "license": "ISC", "dependencies": { "unique-slug": "^3.0.0" }, @@ -5400,8 +6157,9 @@ }, "node_modules/make-fetch-happen/node_modules/unique-slug": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -5411,16 +6169,18 @@ }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -5431,8 +6191,9 @@ }, "node_modules/mime": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "license": "MIT", "optional": true, "bin": { "mime": "cli.js" @@ -5467,16 +6228,18 @@ }, "node_modules/minipass": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-collect": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -5486,8 +6249,9 @@ }, "node_modules/minipass-fetch": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.1.6", "minipass-sized": "^1.0.3", @@ -5502,8 +6266,9 @@ }, "node_modules/minipass-fetch/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5513,8 +6278,9 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -5524,8 +6290,9 @@ }, "node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5535,8 +6302,9 @@ }, "node_modules/minipass-json-stream": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, - "license": "MIT", "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -5544,8 +6312,9 @@ }, "node_modules/minipass-json-stream/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5555,8 +6324,9 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -5566,8 +6336,9 @@ }, "node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5577,8 +6348,9 @@ }, "node_modules/minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -5588,8 +6360,9 @@ }, "node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5599,8 +6372,9 @@ }, "node_modules/minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -5611,8 +6385,9 @@ }, "node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5622,8 +6397,9 @@ }, "node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -5638,13 +6414,15 @@ }, "node_modules/mute-stream": { "version": "0.0.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true }, "node_modules/nanoid": { "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -5659,13 +6437,15 @@ }, "node_modules/natural-compare-lite": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true }, "node_modules/needle": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.3", @@ -5680,8 +6460,9 @@ }, "node_modules/needle/node_modules/iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -5692,16 +6473,18 @@ }, "node_modules/negotiator": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/ng-packagr": { "version": "16.2.3", + "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-16.2.3.tgz", + "integrity": "sha512-VTJ7Qtge52+1subkhmF5nOqLNbVutA8/igJ0A5vH6Mgpb8Z/3HeZomtD1SHzZF5Dqp+p+QPHE548FWYu1MdMSQ==", "dev": true, - "license": "MIT", "dependencies": { "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.0.0", @@ -5751,22 +6534,25 @@ }, "node_modules/ng-packagr/node_modules/convert-source-map": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/ng-packagr/node_modules/rxjs": { "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/nice-napi": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "optional": true, "os": [ "!win32" @@ -5778,14 +6564,16 @@ }, "node_modules/node-addon-api": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true, - "license": "MIT", "optional": true }, "node_modules/node-gyp": { "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", "dev": true, - "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -5808,8 +6596,9 @@ }, "node_modules/node-gyp-build": { "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "dev": true, - "license": "MIT", "optional": true, "bin": { "node-gyp-build": "bin.js", @@ -5819,13 +6608,15 @@ }, "node_modules/node-releases": { "version": "2.0.14", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true }, "node_modules/nopt": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, - "license": "ISC", "dependencies": { "abbrev": "^1.0.0" }, @@ -5838,8 +6629,9 @@ }, "node_modules/normalize-package-data": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^6.0.0", "is-core-module": "^2.8.1", @@ -5860,16 +6652,18 @@ }, "node_modules/normalize-range": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-bundled": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", "dev": true, - "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^3.0.0" }, @@ -5879,8 +6673,9 @@ }, "node_modules/npm-install-checks": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -5890,16 +6685,18 @@ }, "node_modules/npm-normalize-package-bin": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-package-arg": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^6.0.0", "proc-log": "^3.0.0", @@ -5912,8 +6709,9 @@ }, "node_modules/npm-packlist": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "dev": true, - "license": "ISC", "dependencies": { "ignore-walk": "^6.0.0" }, @@ -5923,8 +6721,9 @@ }, "node_modules/npm-pick-manifest": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", + "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", "dev": true, - "license": "ISC", "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -5937,8 +6736,9 @@ }, "node_modules/npm-registry-fetch": { "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "dev": true, - "license": "ISC", "dependencies": { "make-fetch-happen": "^11.0.0", "minipass": "^5.0.0", @@ -5954,16 +6754,18 @@ }, "node_modules/npm-registry-fetch/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/npm-registry-fetch/node_modules/cacache": { "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -5984,16 +6786,18 @@ }, "node_modules/npm-registry-fetch/node_modules/cacache/node_modules/minipass": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/npm-registry-fetch/node_modules/glob": { "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -6013,16 +6817,18 @@ }, "node_modules/npm-registry-fetch/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -6046,8 +6852,9 @@ }, "node_modules/npm-registry-fetch/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6060,16 +6867,18 @@ }, "node_modules/npm-registry-fetch/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/npm-registry-fetch/node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -6079,8 +6888,9 @@ }, "node_modules/npm-registry-fetch/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -6090,8 +6900,9 @@ }, "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -6106,16 +6917,18 @@ }, "node_modules/npm-registry-fetch/node_modules/minipass-fetch/node_modules/minipass": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/npmlog": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, - "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -6144,8 +6957,9 @@ }, "node_modules/object.assign": { "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -6199,8 +7013,9 @@ }, "node_modules/open": { "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, - "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -6317,8 +7132,9 @@ }, "node_modules/os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6350,8 +7166,9 @@ }, "node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -6372,8 +7189,9 @@ }, "node_modules/pacote": { "version": "15.2.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", + "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/git": "^4.0.0", "@npmcli/installed-package-contents": "^2.0.1", @@ -6403,16 +7221,18 @@ }, "node_modules/pacote/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/pacote/node_modules/cacache": { "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -6433,16 +7253,18 @@ }, "node_modules/pacote/node_modules/cacache/node_modules/minipass": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/pacote/node_modules/glob": { "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -6462,16 +7284,18 @@ }, "node_modules/pacote/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/pacote/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6484,16 +7308,18 @@ }, "node_modules/pacote/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/pacote/node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -6503,8 +7329,9 @@ }, "node_modules/pacote/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -6514,8 +7341,9 @@ }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -6525,8 +7353,9 @@ }, "node_modules/parse-node-version": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -6562,8 +7391,9 @@ }, "node_modules/path-scurry": { "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -6577,8 +7407,9 @@ }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, - "license": "ISC", "engines": { "node": "14 || >=16.14" } @@ -6593,13 +7424,15 @@ }, "node_modules/picocolors": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -6609,8 +7442,9 @@ }, "node_modules/pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -6618,8 +7452,9 @@ }, "node_modules/piscina": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.3.0.tgz", + "integrity": "sha512-vTQszGZj78p0BHFNO/cSvpzPUYa4tLXRe30aIYyQjqRS3fK/kPqdxvkTfGXQlEpWOI+mOOkda0iEY6NaanLWJA==", "dev": true, - "license": "MIT", "optionalDependencies": { "nice-napi": "^1.0.2" } @@ -6637,6 +7472,8 @@ }, "node_modules/postcss": { "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "dev": true, "funding": [ { @@ -6648,7 +7485,6 @@ "url": "https://tidelift.com/funding/github/npm/postcss" } ], - "license": "MIT", "dependencies": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -6688,8 +7524,9 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -6712,21 +7549,24 @@ }, "node_modules/proc-log": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/promise-inflight": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true }, "node_modules/promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -6737,8 +7577,9 @@ }, "node_modules/prr": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, - "license": "MIT", "optional": true }, "node_modules/punycode": { @@ -6751,6 +7592,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -6765,13 +7608,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/read-package-json": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^10.2.2", "json-parse-even-better-errors": "^3.0.0", @@ -6784,8 +7627,9 @@ }, "node_modules/read-package-json-fast": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "dev": true, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -6796,16 +7640,18 @@ }, "node_modules/read-package-json/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/read-package-json/node_modules/glob": { "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -6825,8 +7671,9 @@ }, "node_modules/read-package-json/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6895,8 +7742,9 @@ }, "node_modules/resolve": { "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", @@ -6911,8 +7759,9 @@ }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -6931,16 +7780,18 @@ }, "node_modules/retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -6962,8 +7813,9 @@ }, "node_modules/rollup": { "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, - "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -6977,14 +7829,17 @@ }, "node_modules/run-async": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -7000,15 +7855,15 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/rxjs": { "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -7020,8 +7875,9 @@ }, "node_modules/sass": { "version": "1.58.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.2.tgz", + "integrity": "sha512-2mbyOWOv/lhEXD6nVrQZQ4KT2DlwcODbTskM42EyqBAFUWOhiiYtAXZqjZz1ygzapYf+N+2GwfIH9M5FM4GUMg==", "dev": true, - "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -7036,14 +7892,16 @@ }, "node_modules/sax": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", "dev": true, - "license": "ISC", "optional": true }, "node_modules/semver": { "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -7056,8 +7914,9 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true }, "node_modules/shebang-command": { "version": "2.0.0", @@ -7093,13 +7952,15 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/sigstore": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", + "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^1.1.0", "@sigstore/protobuf-specs": "^0.2.0", @@ -7116,16 +7977,18 @@ }, "node_modules/sigstore/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/sigstore/node_modules/cacache": { "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -7146,8 +8009,9 @@ }, "node_modules/sigstore/node_modules/glob": { "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -7167,16 +8031,18 @@ }, "node_modules/sigstore/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/sigstore/node_modules/make-fetch-happen": { "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -7200,16 +8066,18 @@ }, "node_modules/sigstore/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/sigstore/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7222,8 +8090,9 @@ }, "node_modules/sigstore/node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -7233,8 +8102,9 @@ }, "node_modules/sigstore/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7244,8 +8114,9 @@ }, "node_modules/sigstore/node_modules/minipass-fetch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -7268,8 +8139,9 @@ }, "node_modules/smart-buffer": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -7277,8 +8149,9 @@ }, "node_modules/socks": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, - "license": "MIT", "dependencies": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -7290,8 +8163,9 @@ }, "node_modules/socks-proxy-agent": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -7311,16 +8185,18 @@ }, "node_modules/source-map-js": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/spdx-correct": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -7328,13 +8204,15 @@ }, "node_modules/spdx-exceptions": { "version": "2.4.0", - "dev": true, - "license": "CC-BY-3.0" + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", + "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -7342,13 +8220,15 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.16", - "dev": true, - "license": "CC0-1.0" + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true }, "node_modules/ssri": { "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -7399,8 +8279,9 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7448,8 +8329,9 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7467,8 +8349,9 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -7478,8 +8361,9 @@ }, "node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -7489,8 +8373,9 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7500,16 +8385,18 @@ }, "node_modules/symbol-observable": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/tar": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -7524,8 +8411,9 @@ }, "node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -7535,8 +8423,9 @@ }, "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7546,8 +8435,9 @@ }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } @@ -7559,13 +8449,15 @@ }, "node_modules/through": { "version": "2.3.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true }, "node_modules/tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -7575,8 +8467,9 @@ }, "node_modules/to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -7620,8 +8513,9 @@ }, "node_modules/tsutils": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -7634,13 +8528,15 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/tuf-js": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", + "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", "dev": true, - "license": "MIT", "dependencies": { "@tufjs/models": "1.0.4", "debug": "^4.3.4", @@ -7652,16 +8548,18 @@ }, "node_modules/tuf-js/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/tuf-js/node_modules/cacache": { "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -7682,8 +8580,9 @@ }, "node_modules/tuf-js/node_modules/glob": { "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -7703,16 +8602,18 @@ }, "node_modules/tuf-js/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/tuf-js/node_modules/make-fetch-happen": { "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -7736,16 +8637,18 @@ }, "node_modules/tuf-js/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/tuf-js/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7758,8 +8661,9 @@ }, "node_modules/tuf-js/node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -7769,8 +8673,9 @@ }, "node_modules/tuf-js/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7780,8 +8685,9 @@ }, "node_modules/tuf-js/node_modules/minipass-fetch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -7807,8 +8713,9 @@ }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -7817,9 +8724,9 @@ } }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -7832,8 +8739,9 @@ }, "node_modules/typescript-eslint-language-service": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/typescript-eslint-language-service/-/typescript-eslint-language-service-5.0.0.tgz", + "integrity": "sha512-QB3YsL+lDOpKwblXuqD9GkzpHhJC2D02e/3OIj38kIe6LSL97cEsUtnsVPqIaofnOsV2glj2T5VLxp5gmLTERQ==", "dev": true, - "license": "MIT", "peerDependencies": { "@typescript-eslint/parser": ">= 5.0.0", "eslint": ">= 8.0.0", @@ -7863,8 +8771,9 @@ }, "node_modules/unique-filename": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, - "license": "ISC", "dependencies": { "unique-slug": "^4.0.0" }, @@ -7874,8 +8783,9 @@ }, "node_modules/unique-slug": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -7893,6 +8803,8 @@ }, "node_modules/update-browserslist-db": { "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -7908,7 +8820,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -7935,8 +8846,9 @@ }, "node_modules/validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -7944,8 +8856,9 @@ }, "node_modules/validate-npm-package-name": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -7992,8 +8905,9 @@ }, "node_modules/wide-align": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } @@ -8025,8 +8939,9 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8041,8 +8956,9 @@ }, "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8055,8 +8971,9 @@ }, "node_modules/wrap-ansi-cjs/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8066,8 +8983,9 @@ }, "node_modules/wrap-ansi-cjs/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", @@ -8127,8 +9045,9 @@ }, "node_modules/yargs": { "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -8144,16 +9063,18 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -8163,11 +9084,12 @@ }, "node_modules/zone.js": { "version": "0.13.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.13.3.tgz", + "integrity": "sha512-MKPbmZie6fASC/ps4dkmIhaT5eonHkEt6eAy80K42tAm0G2W+AahLJjbfi6X9NPdciOE9GRFTTM8u2IiF6O3ww==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.3.0" } } } -} +} \ No newline at end of file From 7379d34f38b5f4837ce74b80f00bf783adb16340 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Wed, 19 Nov 2025 10:36:45 -0800 Subject: [PATCH 036/126] chore(angular): add missing new line to package-lock --- packages/angular/package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 2d85bc93567..d9d320ab3aa 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -9092,4 +9092,4 @@ } } } -} \ No newline at end of file +} From 9d781db662d213090d0b7198d0cdc5abb16fed1b Mon Sep 17 00:00:00 2001 From: Shane Date: Thu, 20 Nov 2025 12:16:09 -0800 Subject: [PATCH 037/126] fix(datetime): ensure datetime is shown when intersection observer fails to report visibility (#30793) Issue number: resolves #30706 --------- ## What is the current behavior? Due to some recent unknown changes, the intersection observer for date time no longer reliably fires, especially in mobile views. ## What is the new behavior? In this PR, we're adding a visibility check after everything has had a chance to render to make sure we're setting up properly even if the intersection observer has failed to trigger for some reason. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information Since the intersection observer is being set up after a `raf`, it's possible something got introduced to make the initial setup slower for some reason, causing timing issues. I think we should do a more thorough investigation into the cause of this problem when we have more time. This PR also adds tests to verify the new fallback works properly. Current dev build: ``` 8.7.10-dev.11763478209.1d9c4cd8 ``` --------- Co-authored-by: Brandy Smith --- .../test/overlays/datetime-button.e2e.ts | 33 ++++++++++- core/src/components/datetime/datetime.tsx | 38 +++++++++++++ .../datetime/test/basic/datetime.e2e.ts | 55 +++++++++++++++++++ 3 files changed, 124 insertions(+), 2 deletions(-) diff --git a/core/src/components/datetime-button/test/overlays/datetime-button.e2e.ts b/core/src/components/datetime-button/test/overlays/datetime-button.e2e.ts index 76d6cd2d8aa..a626dd90855 100644 --- a/core/src/components/datetime-button/test/overlays/datetime-button.e2e.ts +++ b/core/src/components/datetime-button/test/overlays/datetime-button.e2e.ts @@ -1,7 +1,7 @@ -import { expect } from '@playwright/test'; import type { Locator } from '@playwright/test'; -import { configs, test } from '@utils/test/playwright'; +import { expect } from '@playwright/test'; import type { EventSpy } from '@utils/test/playwright'; +import { configs, test } from '@utils/test/playwright'; /** * This behavior does not vary across directions. @@ -176,5 +176,34 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { await ionModalDidPresent.next(); await expect(datetime).toBeVisible(); }); + test('should set datetime ready state and keep calendar interactive when reopening modal', async ({ + page, + }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30706', + }); + + const openAndInteract = async () => { + await page.click('#date-button'); + await ionModalDidPresent.next(); + + await page.locator('ion-datetime.datetime-ready').waitFor(); + + const calendarBody = datetime.locator('.calendar-body'); + await expect(calendarBody).toBeVisible(); + }; + + await openAndInteract(); + + const firstEnabledDay = datetime.locator('.calendar-day:not([disabled])').first(); + await firstEnabledDay.click(); + await page.waitForChanges(); + + await modal.evaluate((el: HTMLIonModalElement) => el.dismiss()); + await ionModalDidDismiss.next(); + + await openAndInteract(); + }); }); }); diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index 6a7d2440a8a..3411f28eb57 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -1101,6 +1101,32 @@ export class Datetime implements ComponentInterface { this.initializeKeyboardListeners(); } + /** + * TODO(FW-6931): Remove this fallback upon solving the root cause + * Fallback to ensure the datetime becomes ready even if + * IntersectionObserver never reports it as intersecting. + * + * This is primarily used in environments where the observer + * might not fire as expected, such as when running under + * synthetic tests that stub IntersectionObserver. + */ + private ensureReadyIfVisible = () => { + if (this.el.classList.contains('datetime-ready')) { + return; + } + + const rect = this.el.getBoundingClientRect(); + if (rect.width === 0 || rect.height === 0) { + return; + } + + this.initializeListeners(); + + writeTask(() => { + this.el.classList.add('datetime-ready'); + }); + }; + componentDidLoad() { const { el, intersectionTrackerRef } = this; @@ -1141,6 +1167,18 @@ export class Datetime implements ComponentInterface { */ raf(() => visibleIO?.observe(intersectionTrackerRef!)); + /** + * TODO(FW-6931): Remove this fallback upon solving the root cause + * Fallback: If IntersectionObserver never reports that the + * datetime is visible but the host clearly has layout, ensure + * we still initialize listeners and mark the component as ready. + * + * We schedule this after everything has had a chance to run. + */ + setTimeout(() => { + this.ensureReadyIfVisible(); + }, 100); + /** * We need to clean up listeners when the datetime is hidden * in a popover/modal so that we can properly scroll containers diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts b/core/src/components/datetime/test/basic/datetime.e2e.ts index 67812b6d020..6104d0014cf 100644 --- a/core/src/components/datetime/test/basic/datetime.e2e.ts +++ b/core/src/components/datetime/test/basic/datetime.e2e.ts @@ -394,6 +394,61 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); }); +/** + * Synthetic IntersectionObserver fallback behavior. + * + * This test stubs IntersectionObserver so that the callback + * never reports an intersecting entry. The datetime should + * still become ready via its internal fallback logic. + */ +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('datetime: IO fallback'), () => { + test('should become ready even if IntersectionObserver never reports visible', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30706', + }); + + await page.addInitScript(() => { + const OriginalIO = window.IntersectionObserver; + (window as any).IntersectionObserver = function (callback: any, options: any) { + const instance = new OriginalIO(() => {}, options); + const originalObserve = instance.observe.bind(instance); + + instance.observe = (target: Element) => { + originalObserve(target); + callback([ + { + isIntersecting: false, + target, + } as IntersectionObserverEntry, + ]); + }; + + return instance; + } as any; + }); + + await page.setContent( + ` + + `, + config + ); + + const datetime = page.locator('ion-datetime'); + + // Give the fallback a short amount of time to run + await page.waitForTimeout(100); + + await expect(datetime).toHaveClass(/datetime-ready/); + + const calendarBody = datetime.locator('.calendar-body'); + await expect(calendarBody).toBeVisible(); + }); + }); +}); + /** * We are setting RTL on the component * instead, so we don't need to test From bf0f1e36e4dd73c968ade75c714b89b3f10dd4ef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 25 Nov 2025 12:23:59 -0500 Subject: [PATCH 038/126] chore(deps): update actions/checkout action to v6 (#30802) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | major | `v5.0.1` -> `v6.0.0` | --- ### Release Notes
actions/checkout (actions/checkout) ### [`v6.0.0`](https://redirect.github.com/actions/checkout/compare/v5.0.1...v6.0.0) [Compare Source](https://redirect.github.com/actions/checkout/compare/v5.0.1...v6.0.0)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../build-core-stencil-prerelease/action.yml | 2 +- .../workflows/actions/build-core/action.yml | 2 +- .github/workflows/build.yml | 30 +++++++++---------- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dev-build.yml | 2 +- .github/workflows/nightly.yml | 2 +- .github/workflows/release-ionic.yml | 16 +++++----- .github/workflows/release.yml | 4 +-- .github/workflows/stencil-nightly.yml | 30 +++++++++---------- .github/workflows/update-screenshots.yml | 6 ++-- 10 files changed, 48 insertions(+), 48 deletions(-) diff --git a/.github/workflows/actions/build-core-stencil-prerelease/action.yml b/.github/workflows/actions/build-core-stencil-prerelease/action.yml index d77adf74004..65043b88eaf 100644 --- a/.github/workflows/actions/build-core-stencil-prerelease/action.yml +++ b/.github/workflows/actions/build-core-stencil-prerelease/action.yml @@ -8,7 +8,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x diff --git a/.github/workflows/actions/build-core/action.yml b/.github/workflows/actions/build-core/action.yml index e430d563ae9..b7f2c2ef18f 100644 --- a/.github/workflows/actions/build-core/action.yml +++ b/.github/workflows/actions/build-core/action.yml @@ -8,7 +8,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24.x diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3e0ff766db6..3c423cc569e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: build-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-core with: ionicons-version: ${{ inputs.ionicons_npm_release_tag }} @@ -31,21 +31,21 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-core-clean-build test-core-lint: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-core-lint test-core-spec: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-core-spec test-core-screenshot: @@ -62,7 +62,7 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -90,14 +90,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-vue build-vue-router: needs: [build-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-vue-router test-vue-e2e: @@ -108,7 +108,7 @@ jobs: needs: [build-vue, build-vue-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-vue-e2e with: app: ${{ matrix.apps }} @@ -126,14 +126,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-angular build-angular-server: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-angular-server test-angular-e2e: @@ -144,7 +144,7 @@ jobs: needs: [build-angular, build-angular-server] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-angular-e2e with: app: ${{ matrix.apps }} @@ -162,14 +162,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-react build-react-router: needs: [build-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-react-router test-react-router-e2e: @@ -180,7 +180,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-react-router-e2e with: app: ${{ matrix.apps }} @@ -202,7 +202,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-react-e2e with: app: ${{ matrix.apps }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 1e5f1cad4b4..272e705cf65 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -14,7 +14,7 @@ jobs: permissions: security-events: write steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: github/codeql-action/init@v4 with: languages: javascript diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index 15861814e9d..0b4856a399d 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -13,7 +13,7 @@ jobs: outputs: dev-hash: ${{ steps.create-dev-hash.outputs.DEV_HASH }} steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 # A 1 is required before the timestamp # as lerna will fail when there is a leading 0 # See https://github.com/lerna/lerna/issues/2840 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index e44ba2d7516..fbbdfb8ac93 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -13,7 +13,7 @@ jobs: outputs: nightly-hash: ${{ steps.create-nightly-hash.outputs.NIGHTLY_HASH }} steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 # A 1 is required before the timestamp # as lerna will fail when there is a leading 0 # See https://github.com/lerna/lerna/issues/2840 diff --git a/.github/workflows/release-ionic.yml b/.github/workflows/release-ionic.yml index b4470041ffb..e52b8a023b5 100644 --- a/.github/workflows/release-ionic.yml +++ b/.github/workflows/release-ionic.yml @@ -23,7 +23,7 @@ jobs: release-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/actions/publish-npm with: scope: '@ionic/core' @@ -48,7 +48,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Restore @ionic/docs built cache uses: ./.github/workflows/actions/download-archive with: @@ -67,7 +67,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -93,7 +93,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -118,7 +118,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -143,7 +143,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -163,7 +163,7 @@ jobs: needs: [release-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -188,7 +188,7 @@ jobs: needs: [release-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 650486bb981..6fcb4b7d5dc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -55,7 +55,7 @@ jobs: needs: [release-ionic] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: token: ${{ secrets.IONITRON_TOKEN }} fetch-depth: 0 @@ -83,7 +83,7 @@ jobs: needs: [finalize-release] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 # Pull the latest version of the reference # branch instead of the revision that triggered # the workflow otherwise we won't get the commit diff --git a/.github/workflows/stencil-nightly.yml b/.github/workflows/stencil-nightly.yml index 653d4060637..6af9474e350 100644 --- a/.github/workflows/stencil-nightly.yml +++ b/.github/workflows/stencil-nightly.yml @@ -26,7 +26,7 @@ jobs: build-core-with-stencil-nightly: runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-core-stencil-prerelease with: stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} @@ -35,21 +35,21 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-core-clean-build test-core-lint: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-core-lint test-core-spec: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-core-spec with: stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} @@ -72,7 +72,7 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -100,14 +100,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-vue build-vue-router: needs: [build-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-vue-router test-vue-e2e: @@ -118,7 +118,7 @@ jobs: needs: [build-vue, build-vue-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-vue-e2e with: app: ${{ matrix.apps }} @@ -136,14 +136,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-angular build-angular-server: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-angular-server test-angular-e2e: @@ -154,7 +154,7 @@ jobs: needs: [build-angular, build-angular-server] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-angular-e2e with: app: ${{ matrix.apps }} @@ -172,14 +172,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-react build-react-router: needs: [build-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-react-router test-react-router-e2e: @@ -190,7 +190,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-react-router-e2e with: app: ${{ matrix.apps }} @@ -212,7 +212,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-react-e2e with: app: ${{ matrix.apps }} diff --git a/.github/workflows/update-screenshots.yml b/.github/workflows/update-screenshots.yml index 967fd3965c4..8bd687d5b20 100644 --- a/.github/workflows/update-screenshots.yml +++ b/.github/workflows/update-screenshots.yml @@ -26,7 +26,7 @@ jobs: build-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/build-core test-core-screenshot: @@ -47,7 +47,7 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -59,7 +59,7 @@ jobs: runs-on: ubuntu-latest needs: [test-core-screenshot] steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 # Normally, we could just push with the # default GITHUB_TOKEN, but that will # not cause the build workflow From e9bd3f819d2a02c1e10ffd43165c46e36914c553 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Wed, 26 Nov 2025 10:19:31 -0800 Subject: [PATCH 039/126] test(scripts): update to handle hash params (#30807) Issue number: N/A --------- ## What is the current behavior? Playwright's `setContent` cannot handle query params which causes the `scripts.js` to not run effectively. ## What is the new behavior? - Update `scripts.js` to accept hash params as well - Update `scripts.js` to accept the dark class to set dark mode if dark query or hash was not passed ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information How to test: 1. Verify that tests are passing --------- Co-authored-by: Brandy Smith --- core/scripts/testing/scripts.js | 65 +++++++++++++++---- .../test/playwright/page/utils/set-content.ts | 7 ++ 2 files changed, 61 insertions(+), 11 deletions(-) diff --git a/core/scripts/testing/scripts.js b/core/scripts/testing/scripts.js index 5ce8423cb4d..965bd8183e3 100644 --- a/core/scripts/testing/scripts.js +++ b/core/scripts/testing/scripts.js @@ -1,30 +1,73 @@ +/** + * This script is loaded in testing environments to set up the + * document based on URL parameters. + * + * Test pages (e.g., `chip/test/basic/index.html`) are set to use + * URL query parameters. + * + * Playwright test environments (e.g., `chip/test/basic/chip.e2e.ts`) + * are set based on whether `setContent` or `goto` has been used: + * - `setContent` uses URL hash parameters. Tests will break if + * query parameters are used. + * - `goto` uses URL query parameters. + * + * The following URL parameters are supported: + * - `rtl`: Set to `true` to enable right-to-left directionality. + * - `ionic:_testing`: Set to `true` to identify testing environments. + * - `ionic:mode`: Set to `ios` or `md` to load a specific mode. + * Defaults to `md`. + * - `palette`: Set to `light`, `dark`, `high-contrast`, or + * `high-contrast-dark` to load a specific palette. Defaults to `light`. + */ (function() { - if (window.location.search.indexOf('rtl=true') > -1) { + /** + * The `rtl` param is used to set the directionality of the + * document. This can be `true` or `false`. + */ + const isRTL = window.location.search.indexOf('rtl=true') > -1 || window.location.hash.indexOf('rtl=true') > -1; + + if (isRTL) { document.documentElement.setAttribute('dir', 'rtl'); } - if (window.location.search.indexOf('ionic:_testing=true') > -1) { + /** + * The `ionic:_testing` param is used to identify testing + * environments. + */ + const isTestEnv = window.location.search.indexOf('ionic:_testing=true') > -1 || window.location.hash.indexOf('ionic:_testing=true') > -1; + + if (isTestEnv) { const style = document.createElement('style'); style.innerHTML = ` -* { - caret-color: transparent !important; -}`; + * { + caret-color: transparent !important; + } + `; document.head.appendChild(style); } /** - * The term `palette` is used to as a param to match the - * Ionic docs, plus here is already a `ionic:theme` query being - * used for `md`, `ios`, and `ionic` themes. + * The `palette` param is used to load a specific palette + * for the theme. + * The dark class will load the dark palette automatically + * if no palette is specified through the URL. + * + * Values can be `light`, `dark`, `high-contrast`, + * or `high-contrast-dark`. Default to `light` for tests. */ - const palette = window.location.search.match(/palette=([a-z]+)/); - if (palette && palette[1] !== 'light') { + const paletteQuery = window.location.search.match(/palette=([a-z]+)/); + const paletteHash = window.location.hash.match(/palette=([a-z]+)/); + const darkClass = document.body?.classList.contains('ion-palette-dark') ? 'dark' : null; + + const paletteName = paletteQuery?.[1] || paletteHash?.[1] || darkClass || 'light'; + + if (paletteName !== 'light') { const linkTag = document.createElement('link'); linkTag.setAttribute('rel', 'stylesheet'); linkTag.setAttribute('type', 'text/css'); - linkTag.setAttribute('href', `/css/palettes/${palette[1]}.always.css`); + linkTag.setAttribute('href', `/css/palettes/${paletteName}.always.css`); document.head.appendChild(linkTag); } diff --git a/core/src/utils/test/playwright/page/utils/set-content.ts b/core/src/utils/test/playwright/page/utils/set-content.ts index b738133e736..8a47746e3bf 100644 --- a/core/src/utils/test/playwright/page/utils/set-content.ts +++ b/core/src/utils/test/playwright/page/utils/set-content.ts @@ -102,6 +102,13 @@ export const setContent = async (page: Page, html: string, testInfo: TestInfo, o } }); + /** + * URL query parameters cause the custom Playwright `page.route` + * interceptor to fail, which is necessary to inject the test HTML. + * + * To avoid this, the final navigation URL is kept simple by using + * hash params to ensure the route interceptor always works. + */ await page.goto(`${baseUrl}#`, options); } }; From 3249e1dce8e7d2b6a0e11386d078adcc0b22573a Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 26 Nov 2025 18:47:18 +0000 Subject: [PATCH 040/126] v8.7.11 --- CHANGELOG.md | 11 +++++++++++ core/CHANGELOG.md | 11 +++++++++++ core/package-lock.json | 6 +++--- core/package.json | 2 +- lerna.json | 2 +- packages/angular-server/CHANGELOG.md | 8 ++++++++ packages/angular-server/package-lock.json | 8 ++++---- packages/angular-server/package.json | 4 ++-- packages/angular/CHANGELOG.md | 8 ++++++++ packages/angular/package-lock.json | 8 ++++---- packages/angular/package.json | 4 ++-- packages/docs/CHANGELOG.md | 8 ++++++++ packages/docs/package-lock.json | 6 +++--- packages/docs/package.json | 2 +- packages/react-router/CHANGELOG.md | 8 ++++++++ packages/react-router/package-lock.json | 8 ++++---- packages/react-router/package.json | 4 ++-- packages/react/CHANGELOG.md | 8 ++++++++ packages/react/package-lock.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/CHANGELOG.md | 8 ++++++++ packages/vue-router/package-lock.json | 8 ++++---- packages/vue-router/package.json | 4 ++-- packages/vue/CHANGELOG.md | 8 ++++++++ packages/vue/package-lock.json | 8 ++++---- packages/vue/package.json | 4 ++-- 26 files changed, 123 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5aca45ac369..59418196b5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) + + +### Bug Fixes + +* **datetime:** ensure datetime is shown when intersection observer fails to report visibility ([#30793](https://github.com/ionic-team/ionic-framework/issues/30793)) ([9d781db](https://github.com/ionic-team/ionic-framework/commit/9d781db662d213090d0b7198d0cdc5abb16fed1b)), closes [#30706](https://github.com/ionic-team/ionic-framework/issues/30706) + + + + + ## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index d19d8deea27..d1a86679387 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) + + +### Bug Fixes + +* **datetime:** ensure datetime is shown when intersection observer fails to report visibility ([#30793](https://github.com/ionic-team/ionic-framework/issues/30793)) ([9d781db](https://github.com/ionic-team/ionic-framework/commit/9d781db662d213090d0b7198d0cdc5abb16fed1b)), closes [#30706](https://github.com/ionic-team/ionic-framework/issues/30706) + + + + + ## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) diff --git a/core/package-lock.json b/core/package-lock.json index 8d6417b6bae..1c0c4f78bcd 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "8.7.10", + "version": "8.7.11", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "8.7.10", + "version": "8.7.11", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -18338,4 +18338,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/core/package.json b/core/package.json index 8ac9d3c7620..a4fee0ea20f 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "8.7.10", + "version": "8.7.11", "description": "Base components for Ionic", "keywords": [ "ionic", diff --git a/lerna.json b/lerna.json index e871041f8ba..5134a3baffe 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "core", "packages/*" ], - "version": "8.7.10" + "version": "8.7.11" } \ No newline at end of file diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index 50ea1a4d74d..55109a07286 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) + +**Note:** Version bump only for package @ionic/angular-server + + + + + ## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index fd80d3a6af7..25e456b3788 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular-server", - "version": "8.7.10", + "version": "8.7.11", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "8.7.10", + "version": "8.7.11", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.10" + "@ionic/core": "^8.7.11" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^16.0.0", @@ -11286,4 +11286,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index f27038921ca..47aafb0182f 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "8.7.10", + "version": "8.7.11", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -62,6 +62,6 @@ }, "prettier": "@ionic/prettier-config", "dependencies": { - "@ionic/core": "^8.7.10" + "@ionic/core": "^8.7.11" } } diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index 9d20850477a..af9a74674e4 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) + +**Note:** Version bump only for package @ionic/angular + + + + + ## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index d9d320ab3aa..940ead11879 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "8.7.10", + "version": "8.7.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "8.7.10", + "version": "8.7.11", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.10", + "@ionic/core": "^8.7.11", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -9092,4 +9092,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular/package.json b/packages/angular/package.json index cfc96d53dd6..6dc90b223c4 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "8.7.10", + "version": "8.7.11", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -48,7 +48,7 @@ } }, "dependencies": { - "@ionic/core": "^8.7.10", + "@ionic/core": "^8.7.11", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md index 2b184082db4..63638865fae 100644 --- a/packages/docs/CHANGELOG.md +++ b/packages/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) + +**Note:** Version bump only for package @ionic/docs + + + + + ## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) **Note:** Version bump only for package @ionic/docs diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 7b500894ce0..3c1391b8cf3 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,13 +1,13 @@ { "name": "@ionic/docs", - "version": "8.7.10", + "version": "8.7.11", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "8.7.10", + "version": "8.7.11", "license": "MIT" } } -} +} \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json index 702437e7270..018947033c8 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "8.7.10", + "version": "8.7.11", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index 6d2f0c247fd..dcc56dc20c8 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) + +**Note:** Version bump only for package @ionic/react-router + + + + + ## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) **Note:** Version bump only for package @ionic/react-router diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 9a29e5dc1ec..eda08efc266 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "8.7.10", + "version": "8.7.11", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "8.7.10", + "version": "8.7.11", "license": "MIT", "dependencies": { - "@ionic/react": "^8.7.10", + "@ionic/react": "^8.7.11", "tslib": "*" }, "devDependencies": { @@ -6844,4 +6844,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 2d0ca34a77d..6caca04b3dc 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "8.7.10", + "version": "8.7.11", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^8.7.10", + "@ionic/react": "^8.7.11", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index bc0b6e7ffa5..d0dfb6d60de 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) + +**Note:** Version bump only for package @ionic/react + + + + + ## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) **Note:** Version bump only for package @ionic/react diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 1d413e6139f..8d7787175d8 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "8.7.10", + "version": "8.7.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "8.7.10", + "version": "8.7.11", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.10", + "@ionic/core": "^8.7.11", "ionicons": "^8.0.13", "tslib": "*" }, @@ -11913,4 +11913,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/react/package.json b/packages/react/package.json index b09d4b153a8..f9407abde68 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "8.7.10", + "version": "8.7.11", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -40,7 +40,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^8.7.10", + "@ionic/core": "^8.7.11", "ionicons": "^8.0.13", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index 7a499dd8cbf..21cc70cb953 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) + +**Note:** Version bump only for package @ionic/vue-router + + + + + ## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) **Note:** Version bump only for package @ionic/vue-router diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 0907e5e65c3..af0c096b0ca 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "8.7.10", + "version": "8.7.11", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "8.7.10", + "version": "8.7.11", "license": "MIT", "dependencies": { - "@ionic/vue": "^8.7.10" + "@ionic/vue": "^8.7.11" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", @@ -12991,4 +12991,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index e8f7e2bcb86..2d7e95b40f6 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "8.7.10", + "version": "8.7.11", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", @@ -44,7 +44,7 @@ }, "homepage": "https://github.com/ionic-team/ionic-framework#readme", "dependencies": { - "@ionic/vue": "^8.7.10" + "@ionic/vue": "^8.7.11" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index 47d14f10a59..2d82d381e83 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) + +**Note:** Version bump only for package @ionic/vue + + + + + ## [8.7.10](https://github.com/ionic-team/ionic-framework/compare/v8.7.9...v8.7.10) (2025-11-19) **Note:** Version bump only for package @ionic/vue diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 9efb270a1b2..3a5304d699f 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "8.7.10", + "version": "8.7.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "8.7.10", + "version": "8.7.11", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.10", + "@ionic/core": "^8.7.11", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, @@ -4019,4 +4019,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index d3a35214b0f..b10b5b65a00 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "8.7.10", + "version": "8.7.11", "description": "Vue specific wrapper for @ionic/core", "scripts": { "eslint": "eslint src", @@ -68,7 +68,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^8.7.10", + "@ionic/core": "^8.7.11", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, From 595643fd145e0d5ab63cc6e5751a1b0be6f83c85 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Wed, 26 Nov 2025 11:33:54 -0800 Subject: [PATCH 041/126] chore(many): update lock files --- core/package-lock.json | 2 +- packages/angular-server/package-lock.json | 14 +++++------ packages/angular/package-lock.json | 8 +++--- packages/react-router/package-lock.json | 30 +++++++++++------------ packages/react/package-lock.json | 8 +++--- packages/vue-router/package-lock.json | 30 +++++++++++------------ packages/vue/package-lock.json | 8 +++--- 7 files changed, 50 insertions(+), 50 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 1c0c4f78bcd..b70e812bd1e 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -18338,4 +18338,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 25e456b3788..fdddce185b1 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1031,9 +1031,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", - "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", + "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -7306,9 +7306,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", - "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", + "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -11286,4 +11286,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 940ead11879..2f8f71c7358 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1398,9 +1398,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", - "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", + "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -9092,4 +9092,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index eda08efc266..ca60000c58b 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -238,9 +238,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", - "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", + "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -415,12 +415,12 @@ } }, "node_modules/@ionic/react": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.10.tgz", - "integrity": "sha512-FNGQCmkAjteOBz+qR9Qa/dl8AjdP4UXandmWWEECTzdrQKBpt5fFdu8vE3i7FBx60R4tr/zBxlila48EzVtqsQ==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.11.tgz", + "integrity": "sha512-h4j2SVRMgoxZBdr1bluKGrb0xNYEqEDcjHDuHsok669tKH3RnTMfD276zytfhFh3R8gIKWIqxb76NIsW/hfZcQ==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.10", + "@ionic/core": "8.7.11", "ionicons": "^8.0.13", "tslib": "*" }, @@ -4175,9 +4175,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", - "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", + "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -4281,11 +4281,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.10.tgz", - "integrity": "sha512-FNGQCmkAjteOBz+qR9Qa/dl8AjdP4UXandmWWEECTzdrQKBpt5fFdu8vE3i7FBx60R4tr/zBxlila48EzVtqsQ==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.11.tgz", + "integrity": "sha512-h4j2SVRMgoxZBdr1bluKGrb0xNYEqEDcjHDuHsok669tKH3RnTMfD276zytfhFh3R8gIKWIqxb76NIsW/hfZcQ==", "requires": { - "@ionic/core": "8.7.10", + "@ionic/core": "8.7.11", "ionicons": "^8.0.13", "tslib": "*" } @@ -6844,4 +6844,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 8d7787175d8..909959cda1b 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -736,9 +736,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", - "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", + "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -11913,4 +11913,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index af0c096b0ca..fa908748990 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -673,9 +673,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", - "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", + "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -865,12 +865,12 @@ } }, "node_modules/@ionic/vue": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.10.tgz", - "integrity": "sha512-5nhzBZC1VASQmNGz36UXsxVsMXAUmhKhpAfWaiwqfoHy/8YLV6d5dwCQPBwQrX7K4I/k76eyho8xQ4YhQFZXng==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.11.tgz", + "integrity": "sha512-HDEcjhxWfimVQxvXfghrqlAWpXnJvcUDTIVE2Mvq8ul+s7gL/OZCpXTAODJOfFCBAGJ0o9QXyC7OPjyN4UbO8Q==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.10", + "@ionic/core": "8.7.11", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -8041,9 +8041,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", - "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", + "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -8156,11 +8156,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.10.tgz", - "integrity": "sha512-5nhzBZC1VASQmNGz36UXsxVsMXAUmhKhpAfWaiwqfoHy/8YLV6d5dwCQPBwQrX7K4I/k76eyho8xQ4YhQFZXng==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.11.tgz", + "integrity": "sha512-HDEcjhxWfimVQxvXfghrqlAWpXnJvcUDTIVE2Mvq8ul+s7gL/OZCpXTAODJOfFCBAGJ0o9QXyC7OPjyN4UbO8Q==", "requires": { - "@ionic/core": "8.7.10", + "@ionic/core": "8.7.11", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -12991,4 +12991,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 3a5304d699f..1c127c6af94 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -222,9 +222,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.10.tgz", - "integrity": "sha512-auDIGVQCwh/gc69WwbR/DFzZPx4O5EpYTBjS2cRzZXKK7yS1ZMey2VLflqbdpQFye+tyBCJvfcOEHgUo1vuVFA==", + "version": "8.7.11", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", + "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -4019,4 +4019,4 @@ "dev": true } } -} \ No newline at end of file +} From b4e540decc484bd22eb84484a8eb94f19b1790c1 Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Mon, 1 Dec 2025 10:10:00 -0500 Subject: [PATCH 042/126] chore(workflows): update release workflow permissions for finalizing (#30814) Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- .github/workflows/release.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6fcb4b7d5dc..96640319e59 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,6 +54,9 @@ jobs: finalize-release: needs: [release-ionic] runs-on: ubuntu-latest + permissions: + contents: write + id-token: write steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: @@ -82,6 +85,9 @@ jobs: # possible for them to push at the same time. needs: [finalize-release] runs-on: ubuntu-latest + permissions: + contents: write + id-token: write steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 # Pull the latest version of the reference From c65b76e72777bff11612c972fa087fba9081572c Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Mon, 1 Dec 2025 11:25:26 -0500 Subject: [PATCH 043/126] chore(workflows): fix release workflow permissions (#30823) The workflow permissions update did not work due to it being nested in a workflow that only had `read` permissions. You can see a failing run here (scroll down to annotations): [19828029833](https://github.com/ionic-team/ionic-framework/actions/runs/19828029833) ``` Invalid workflow file: .github/workflows/release-orchestrator.yml#L71 The workflow is not valid. .github/workflows/release-orchestrator.yml (Line: 71, Col: 3): Error calling workflow 'ionic-team/ionic-framework/.github/workflows/release.yml@b4e540decc484bd22eb84484a8eb94f19b1790c1'. The nested job 'finalize-release' is requesting 'contents: write', but is only allowed 'contents: read'. .github/workflows/release-orchestrator.yml (Line: 71, Col: 3): Error calling workflow 'ionic-team/ionic-framework/.github/workflows/release.yml@b4e540decc484bd22eb84484a8eb94f19b1790c1'. The nested job 'update-package-lock' is requesting 'contents: write', but is only allowed 'contents: read'. ``` This updates the parent workflow to have `write` permissions. You can see a passing run here: [19828895682](https://github.com/ionic-team/ionic-framework/actions/runs/19828895682) Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- .github/workflows/release-orchestrator.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-orchestrator.yml b/.github/workflows/release-orchestrator.yml index 2c41ed516f9..a0c05cbcd58 100644 --- a/.github/workflows/release-orchestrator.yml +++ b/.github/workflows/release-orchestrator.yml @@ -71,7 +71,7 @@ jobs: run-production: if: ${{ github.event_name == 'workflow_dispatch' && inputs.release-type == 'production' }} permissions: - contents: read + contents: write id-token: write uses: ./.github/workflows/release.yml secrets: inherit From 22288319ed1b1bed8cc1aa9854d97583306c8390 Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Mon, 1 Dec 2025 17:21:22 -0500 Subject: [PATCH 044/126] chore(deps): add playwright-core as a dev dependency (#30827) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This updates the `package-lock` file to match the structure `next` uses so we won't have a mismatch with errors on each branch. It installs `playwright-core` as a dev dependency to align with `next`. How to test this: 1. Switch to this branch `chore/deps-playwright` 1. Remove `node_modules`: `rm -rf node_modules` 1. Run `npx lerna@5 bootstrap --include-dependencies --scope @ionic/core --ignore-scripts -- --legacy-peer-deps && npm run build` 1. βœ… Verify: build is successful 1. Run `git revert 76cf4bda6a` 1. Run `npx lerna@5 bootstrap --include-dependencies --scope @ionic/core --ignore-scripts -- --legacy-peer-deps && npm run build` 1. πŸ›‘ Verify: the following error occurs: ```bash [ ERROR ] TypeScript: node_modules/@axe-core/playwright/dist/index.d.ts:2:22 Cannot find module 'playwright-core' or its corresponding type declarations. L1: import { SerialFrameSelector, RunOptions, AxeResults } from 'axe-core'; L2: import { Page } from 'playwright-core'; [00:58.9] build failed in 6.36 s ``` ⚠️ Please do not push the reverted commit, it is just to show that the new dev dependency is required. This shows that without `playwright-core` installed the lerna command in the release process will fail. --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/package-lock.json | 10635 ++++----------------------------------- core/package.json | 1 + 2 files changed, 1061 insertions(+), 9575 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index b70e812bd1e..b4f227b4c43 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,7 +1,7 @@ { "name": "@ionic/core", "version": "8.7.11", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -43,6 +43,7 @@ "fs-extra": "^9.0.1", "jest": "^29.7.0", "jest-cli": "^29.7.0", + "playwright-core": "^1.56.1", "prettier": "^2.6.1", "rollup": "^2.26.4", "sass": "^1.33.0", @@ -58,9 +59,8 @@ }, "node_modules/@axe-core/playwright": { "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.11.0.tgz", - "integrity": "sha512-70vBT/Ylqpm65RQz2iCG2o0JJCEG/WCNyefTr2xcOcr1CoSee60gNQYUMZZ7YukoKkFLv26I/jjlsvwwp532oQ==", "dev": true, + "license": "MPL-2.0", "dependencies": { "axe-core": "~4.11.0" }, @@ -70,9 +70,8 @@ }, "node_modules/@babel/code-frame": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.16.7" }, @@ -82,18 +81,17 @@ }, "node_modules/@babel/compat-data": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", - "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.16.8", @@ -121,9 +119,8 @@ }, "node_modules/@babel/core/node_modules/debug": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -138,27 +135,24 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/core/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/@babel/generator": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.17.0", "jsesc": "^2.5.1", @@ -170,18 +164,16 @@ }, "node_modules/@babel/generator/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/@babel/helper-compilation-targets": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", @@ -197,18 +189,16 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-environment-visitor": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -218,9 +208,8 @@ }, "node_modules/@babel/helper-function-name": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", @@ -232,9 +221,8 @@ }, "node_modules/@babel/helper-get-function-arity": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -244,9 +232,8 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -256,9 +243,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -268,9 +254,8 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", @@ -287,18 +272,16 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.17.0" }, @@ -308,9 +291,8 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -319,37 +301,37 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", - "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.16.7", "@babel/traverse": "^7.17.3", @@ -361,9 +343,8 @@ }, "node_modules/@babel/highlight": { "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", @@ -375,9 +356,8 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -389,9 +369,8 @@ }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -400,12 +379,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", - "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.26.5" + "@babel/types": "^7.28.5" }, "bin": { "parser": "bin/babel-parser.js" @@ -416,9 +396,8 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -428,9 +407,8 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -440,9 +418,8 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -452,9 +429,8 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -464,9 +440,8 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -476,9 +451,8 @@ }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -491,9 +465,8 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -503,9 +476,8 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -515,9 +487,8 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -527,9 +498,8 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -539,9 +509,8 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -551,9 +520,8 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -563,9 +531,8 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -578,9 +545,8 @@ }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -593,9 +559,8 @@ }, "node_modules/@babel/template": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/parser": "^7.16.7", @@ -607,9 +572,8 @@ }, "node_modules/@babel/traverse": { "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.17.3", @@ -628,9 +592,8 @@ }, "node_modules/@babel/traverse/node_modules/debug": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -644,13 +607,14 @@ } }, "node_modules/@babel/types": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", - "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -658,51 +622,46 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@capacitor/core": { "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.4.tgz", - "integrity": "sha512-xzjxpr+d2zwTpCaN0k+C6wKSZzWFAb9OVEUtmO72ihjr/NEDoLvsGl4WLfjWPcCO2zOy0b2X52tfRWjECFUjtw==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@capacitor/haptics": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@capacitor/haptics/-/haptics-7.0.2.tgz", - "integrity": "sha512-vqfeEM6s2zMgLjpITCTUIy7P/hadq/Gr5E/RClFgMJPB41Y5FsqOKD+j85/uwh8N2cf/aWaPeXUmjnTzJbEB2g==", "dev": true, + "license": "MIT", "peerDependencies": { "@capacitor/core": ">=7.0.0" } }, "node_modules/@capacitor/keyboard": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@capacitor/keyboard/-/keyboard-7.0.3.tgz", - "integrity": "sha512-BIBKjmky5rOYNhvYhNeDi0MMvjwYZ6YF9JoCYcGKvKY+XLJKtezsEL78XfOlgWZBkbfR8uq3tzktY6PqgoYLKA==", "dev": true, + "license": "MIT", "peerDependencies": { "@capacitor/core": ">=7.0.0" } }, "node_modules/@capacitor/status-bar": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-7.0.3.tgz", - "integrity": "sha512-JyRpVnKwHij9hgPWolF6PK+HT3e2HSPjN11/h2OmKxq8GAdPGARFLv+97eZl0pvuvm0Kka/LpiLb5whXISBg7Q==", "dev": true, + "license": "MIT", "peerDependencies": { "@capacitor/core": ">=7.0.0" } }, "node_modules/@clack/core": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.5.0.tgz", - "integrity": "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" @@ -710,9 +669,8 @@ }, "node_modules/@clack/prompts": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.11.0.tgz", - "integrity": "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==", "dev": true, + "license": "MIT", "dependencies": { "@clack/core": "0.5.0", "picocolors": "^1.0.0", @@ -721,9 +679,8 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -736,18 +693,16 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -765,9 +720,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -782,9 +736,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -797,18 +750,16 @@ }, "node_modules/@eslint/eslintrc/node_modules/ignore": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -818,9 +769,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -830,9 +780,8 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -844,9 +793,8 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -861,15 +809,13 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@ionic/eslint-config": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@ionic/eslint-config/-/eslint-config-0.3.0.tgz", - "integrity": "sha512-Uf1hS2YIoHlcvXPF5LnsPM6auMewEdChQhR117Rt3sVEAutbyKMpFP4slNC2a6up3a5Q34zepqlf61Qgkf9XeQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/eslint-plugin": "^4.1.0", "@typescript-eslint/parser": "^4.1.0", @@ -882,9 +828,8 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/experimental-utils": "4.33.0", "@typescript-eslint/scope-manager": "4.33.0", @@ -914,9 +859,9 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/parser": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, + "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -941,9 +886,8 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/scope-manager": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "4.33.0", "@typescript-eslint/visitor-keys": "4.33.0" @@ -958,9 +902,8 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/types": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true, + "license": "MIT", "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, @@ -971,9 +914,8 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/typescript-estree": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "4.33.0", "@typescript-eslint/visitor-keys": "4.33.0", @@ -998,9 +940,8 @@ }, "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/visitor-keys": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "4.33.0", "eslint-visitor-keys": "^2.0.0" @@ -1015,9 +956,8 @@ }, "node_modules/@ionic/eslint-config/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -1032,9 +972,8 @@ }, "node_modules/@ionic/eslint-config/node_modules/eslint-config-prettier": { "version": "6.15.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", - "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", "dev": true, + "license": "MIT", "dependencies": { "get-stdin": "^6.0.0" }, @@ -1047,27 +986,24 @@ }, "node_modules/@ionic/eslint-config/node_modules/eslint-visitor-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/@ionic/eslint-config/node_modules/get-stdin": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@ionic/eslint-config/node_modules/semver": { "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -1080,18 +1016,16 @@ }, "node_modules/@ionic/prettier-config": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ionic/prettier-config/-/prettier-config-2.0.0.tgz", - "integrity": "sha512-ageMx54B9qqS1scnFW3kQW2NW8HyXwUM/p9c1YSWFKr6Yct7YVNbJFY3EcFapaNTiDnwo+GLlPRt+wST6E8AfA==", "dev": true, + "license": "MIT", "peerDependencies": { "prettier": "^2.0.0" } }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -1105,18 +1039,16 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -1131,9 +1063,8 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1146,9 +1077,8 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1162,9 +1092,8 @@ }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1174,15 +1103,13 @@ }, "node_modules/@jest/console/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jest/core": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/reporters": "^29.7.0", @@ -1227,9 +1154,8 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1242,9 +1168,8 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1258,9 +1183,8 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1270,15 +1194,13 @@ }, "node_modules/@jest/core/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jest/environment": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", @@ -1291,9 +1213,8 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, + "license": "MIT", "dependencies": { "expect": "^29.7.0", "jest-snapshot": "^29.7.0" @@ -1304,9 +1225,8 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, + "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" }, @@ -1316,9 +1236,8 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -1333,9 +1252,8 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -1348,9 +1266,8 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, + "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^29.7.0", @@ -1391,9 +1308,8 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1406,9 +1322,8 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1422,9 +1337,8 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1434,15 +1348,13 @@ }, "node_modules/@jest/reporters/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jest/schemas": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -1452,9 +1364,8 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", @@ -1466,9 +1377,8 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/types": "^29.6.3", @@ -1481,9 +1391,8 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", @@ -1496,9 +1405,8 @@ }, "node_modules/@jest/transform": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", @@ -1522,9 +1430,8 @@ }, "node_modules/@jest/transform/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1537,9 +1444,8 @@ }, "node_modules/@jest/transform/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1553,9 +1459,8 @@ }, "node_modules/@jest/transform/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1565,21 +1470,18 @@ }, "node_modules/@jest/transform/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jest/transform/node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jest/transform/node_modules/write-file-atomic": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -1590,9 +1492,8 @@ }, "node_modules/@jest/types": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -1607,9 +1508,8 @@ }, "node_modules/@jest/types/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1622,9 +1522,8 @@ }, "node_modules/@jest/types/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1638,9 +1537,8 @@ }, "node_modules/@jest/types/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1650,30 +1548,28 @@ }, "node_modules/@jest/types/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1681,9 +1577,8 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.3", "run-parallel": "^1.1.9" @@ -1694,18 +1589,16 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.3", "fastq": "^1.6.0" @@ -1716,9 +1609,8 @@ }, "node_modules/@playwright/test": { "version": "1.56.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz", - "integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "playwright": "1.56.1" }, @@ -1731,9 +1623,8 @@ }, "node_modules/@rollup/plugin-node-resolve": { "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz", - "integrity": "sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", @@ -1752,18 +1643,16 @@ }, "node_modules/@rollup/plugin-virtual": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-2.0.3.tgz", - "integrity": "sha512-pw6ziJcyjZtntQ//bkad9qXaBx665SgEL8C8KI5wO8G5iU5MPxvdWrQyVaAvjojGm9tJoS8M9Z/EEepbqieYmw==", "dev": true, + "license": "MIT", "peerDependencies": { "rollup": "^1.20.0||^2.0.0" } }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", @@ -1778,8 +1667,6 @@ }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", "cpu": [ "arm64" ], @@ -1882,41 +1769,37 @@ }, "node_modules/@sinclair/typebox": { "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sinonjs/commons": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" } }, "node_modules/@stencil/angular-output-target": { "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@stencil/angular-output-target/-/angular-output-target-0.10.2.tgz", - "integrity": "sha512-jPRa2NMAPtm/iMY+mUaWATbIhgY5zPJfUNQyF8nwC0rMrfXifPoRCf6BbH2S4Gy7SX0X4hlP+jAbVUjQNg/P+Q==", "dev": true, + "license": "MIT", "peerDependencies": { "@stencil/core": ">=2.0.0 || >=3 || >= 4.0.0-beta.0 || >= 4.0.0" } }, "node_modules/@stencil/core": { "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", - "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", + "license": "MIT", + "peer": true, "bin": { "stencil": "bin/stencil" }, @@ -1937,8 +1820,6 @@ }, "node_modules/@stencil/react-output-target": { "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@stencil/react-output-target/-/react-output-target-0.5.3.tgz", - "integrity": "sha512-68jwRp35CjAcwhTJ9yFD/3n+jrHOqvEH2jreVuPVvZK+4tkhPlYlwz0d1E1RlF3jyifUSfdkWUGgXIEy8Fo3yw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1947,9 +1828,8 @@ }, "node_modules/@stencil/sass": { "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-3.0.9.tgz", - "integrity": "sha512-GtPMjf5r4/BVBCO3LvcoMSIfOa6T+0wq+SrTGEilC4NCZpuZdAlZffWxXi80caZ1jDclwdzJ2qGwEgCAfvGoNA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0", "npm": ">=6.0.0" @@ -1960,9 +1840,8 @@ }, "node_modules/@stencil/vue-output-target": { "version": "0.10.8", - "resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.10.8.tgz", - "integrity": "sha512-/a20LG29xqy/lxBqo6zc1LbyS20GW9xghypZ7vYdo5fQB8jHClAQDkn+c8aykQlre5TtHiODgvr/rRDUrQKwyg==", "dev": true, + "license": "MIT", "peerDependencies": { "@stencil/core": ">=2.0.0 || >=3 || >= 4.0.0-beta.0 || >= 4.0.0", "vue": "^3.4.38", @@ -1982,9 +1861,8 @@ }, "node_modules/@stylelint/postcss-css-in-js": { "version": "0.37.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", - "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": ">=7.9.0" }, @@ -1995,9 +1873,8 @@ }, "node_modules/@types/babel__core": { "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz", - "integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -2008,18 +1885,16 @@ }, "node_modules/@types/babel__generator": { "version": "7.6.6", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz", - "integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz", - "integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -2027,57 +1902,50 @@ }, "node_modules/@types/babel__traverse": { "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz", - "integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } }, "node_modules/@types/estree": { "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/graceful-fs": { "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.8.tgz", - "integrity": "sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz", - "integrity": "sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz", - "integrity": "sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { "version": "29.5.6", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.6.tgz", - "integrity": "sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w==", "dev": true, + "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -2085,97 +1953,82 @@ }, "node_modules/@types/json-schema": { "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", - "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mdast": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", - "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", "dev": true, + "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/minimist": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "16.18.126", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", - "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", "dev": true, "license": "MIT" }, "node_modules/@types/normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/parse-json": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/resolve": { "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/semver": { "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/stack-utils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.2.tgz", - "integrity": "sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/unist": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", - "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/yargs": { "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz", - "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { "version": "21.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz", - "integrity": "sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.2.tgz", - "integrity": "sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.5.1", "@typescript-eslint/scope-manager": "6.7.2", @@ -2208,9 +2061,8 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -2225,9 +2077,8 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2240,9 +2091,8 @@ }, "node_modules/@typescript-eslint/experimental-utils": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.7", "@typescript-eslint/scope-manager": "4.33.0", @@ -2264,9 +2114,8 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "4.33.0", "@typescript-eslint/visitor-keys": "4.33.0" @@ -2281,9 +2130,8 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true, + "license": "MIT", "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, @@ -2294,9 +2142,8 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "4.33.0", "@typescript-eslint/visitor-keys": "4.33.0", @@ -2321,9 +2168,8 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "4.33.0", "eslint-visitor-keys": "^2.0.0" @@ -2338,9 +2184,8 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -2355,18 +2200,16 @@ }, "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/@typescript-eslint/experimental-utils/node_modules/semver": { "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2379,9 +2222,9 @@ }, "node_modules/@typescript-eslint/parser": { "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.2.tgz", - "integrity": "sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==", "dev": true, + "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.7.2", "@typescript-eslint/types": "6.7.2", @@ -2407,9 +2250,8 @@ }, "node_modules/@typescript-eslint/parser/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -2424,9 +2266,8 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.2.tgz", - "integrity": "sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.7.2", "@typescript-eslint/visitor-keys": "6.7.2" @@ -2441,9 +2282,8 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.2.tgz", - "integrity": "sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "6.7.2", "@typescript-eslint/utils": "6.7.2", @@ -2468,9 +2308,8 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -2485,9 +2324,8 @@ }, "node_modules/@typescript-eslint/types": { "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.2.tgz", - "integrity": "sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==", "dev": true, + "license": "MIT", "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -2498,9 +2336,8 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz", - "integrity": "sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "6.7.2", "@typescript-eslint/visitor-keys": "6.7.2", @@ -2525,9 +2362,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -2542,9 +2378,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2557,9 +2392,8 @@ }, "node_modules/@typescript-eslint/utils": { "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.2.tgz", - "integrity": "sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", @@ -2582,9 +2416,8 @@ }, "node_modules/@typescript-eslint/utils/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2597,9 +2430,8 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz", - "integrity": "sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.7.2", "eslint-visitor-keys": "^3.4.1" @@ -2613,18 +2445,17 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", - "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "version": "3.5.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.25.tgz", + "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.13", + "@babel/parser": "^7.28.5", + "@vue/shared": "3.5.25", "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" + "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-core/node_modules/entities": { @@ -2633,7 +2464,6 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=0.12" }, @@ -2646,38 +2476,35 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@vue/compiler-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", - "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "version": "3.5.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.25.tgz", + "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@vue/compiler-core": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-core": "3.5.25", + "@vue/shared": "3.5.25" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", - "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "version": "3.5.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.25.tgz", + "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.13", - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13", + "@babel/parser": "^7.28.5", + "@vue/compiler-core": "3.5.25", + "@vue/compiler-dom": "3.5.25", + "@vue/compiler-ssr": "3.5.25", + "@vue/shared": "3.5.25", "estree-walker": "^2.0.2", - "magic-string": "^0.30.11", - "postcss": "^8.4.48", - "source-map-js": "^1.2.0" + "magic-string": "^0.30.21", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-sfc/node_modules/estree-walker": { @@ -2685,13 +2512,12 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@vue/compiler-sfc/node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -2708,9 +2534,8 @@ } ], "license": "MIT", - "peer": true, "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -2719,88 +2544,80 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", - "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "version": "3.5.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.25.tgz", + "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-dom": "3.5.25", + "@vue/shared": "3.5.25" } }, "node_modules/@vue/reactivity": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", - "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "version": "3.5.25", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.25.tgz", + "integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@vue/shared": "3.5.13" + "@vue/shared": "3.5.25" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", - "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "version": "3.5.25", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.25.tgz", + "integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/reactivity": "3.5.25", + "@vue/shared": "3.5.25" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", - "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "version": "3.5.25", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.25.tgz", + "integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/runtime-core": "3.5.13", - "@vue/shared": "3.5.13", + "@vue/reactivity": "3.5.25", + "@vue/runtime-core": "3.5.25", + "@vue/shared": "3.5.25", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", - "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "version": "3.5.25", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.25.tgz", + "integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-ssr": "3.5.25", + "@vue/shared": "3.5.25" }, "peerDependencies": { - "vue": "3.5.13" + "vue": "3.5.25" } }, "node_modules/@vue/shared": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "version": "3.5.25", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz", + "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@zeit/schemas": { "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz", - "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/accepts": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -2811,9 +2628,9 @@ }, "node_modules/acorn": { "version": "7.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", - "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", "dev": true, + "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2823,18 +2640,16 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2848,27 +2663,24 @@ }, "node_modules/ansi-align": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.1.0" } }, "node_modules/ansi-colors": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -2881,18 +2693,16 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -2902,9 +2712,8 @@ }, "node_modules/anymatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2915,8 +2724,6 @@ }, "node_modules/arch": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true, "funding": [ { @@ -2931,28 +2738,26 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/arg": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/array-includes": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -2969,18 +2774,16 @@ }, "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array.prototype.flat": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -2995,27 +2798,24 @@ }, "node_modules/arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/at-least-node": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 4.0.0" } }, "node_modules/autoprefixer": { "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.12.0", "caniuse-lite": "^1.0.30001109", @@ -3035,18 +2835,16 @@ }, "node_modules/axe-core": { "version": "4.11.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz", - "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", "dev": true, + "license": "MPL-2.0", "engines": { "node": ">=4" } }, "node_modules/babel-jest": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", @@ -3065,9 +2863,8 @@ }, "node_modules/babel-jest/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3080,9 +2877,8 @@ }, "node_modules/babel-jest/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3096,9 +2892,8 @@ }, "node_modules/babel-jest/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3108,15 +2903,13 @@ }, "node_modules/babel-jest/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -3130,9 +2923,8 @@ }, "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -3146,18 +2938,16 @@ }, "node_modules/babel-plugin-istanbul/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -3170,9 +2960,8 @@ }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -3193,9 +2982,8 @@ }, "node_modules/babel-preset-jest": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" @@ -3209,9 +2997,8 @@ }, "node_modules/bail": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3219,24 +3006,21 @@ }, "node_modules/balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/boxen": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", - "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^7.0.0", @@ -3256,9 +3040,8 @@ }, "node_modules/boxen/node_modules/ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -3268,9 +3051,8 @@ }, "node_modules/boxen/node_modules/camelcase": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", - "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -3280,9 +3062,8 @@ }, "node_modules/boxen/node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -3297,9 +3078,8 @@ }, "node_modules/boxen/node_modules/strip-ansi": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -3312,9 +3092,8 @@ }, "node_modules/boxen/node_modules/type-fest": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -3324,9 +3103,8 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3334,9 +3112,8 @@ }, "node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -3346,8 +3123,6 @@ }, "node_modules/browserslist": { "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", "dev": true, "funding": [ { @@ -3359,6 +3134,7 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } ], + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001317", "electron-to-chromium": "^1.4.84", @@ -3375,24 +3151,21 @@ }, "node_modules/bser": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/builtin-modules": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -3402,18 +3175,16 @@ }, "node_modules/bytes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/call-bind": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -3424,27 +3195,24 @@ }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase-keys": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -3459,8 +3227,6 @@ }, "node_modules/caniuse-lite": { "version": "1.0.30001319", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz", - "integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==", "dev": true, "funding": [ { @@ -3471,13 +3237,13 @@ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -3487,9 +3253,8 @@ }, "node_modules/chalk-template": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", - "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.2" }, @@ -3502,9 +3267,8 @@ }, "node_modules/chalk-template/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3517,9 +3281,8 @@ }, "node_modules/chalk-template/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3533,9 +3296,8 @@ }, "node_modules/chalk-template/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3545,24 +3307,21 @@ }, "node_modules/chalk-template/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/char-regex": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/character-entities": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3570,9 +3329,8 @@ }, "node_modules/character-entities-legacy": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3580,9 +3338,8 @@ }, "node_modules/character-reference-invalid": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3590,8 +3347,6 @@ }, "node_modules/chokidar": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -3599,6 +3354,7 @@ "url": "https://paulmillr.com/funding/" } ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -3617,8 +3373,6 @@ }, "node_modules/ci-info": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -3626,21 +3380,20 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cjs-module-lexer": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/clean-css": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -3650,9 +3403,8 @@ }, "node_modules/clean-css-cli": { "version": "5.6.1", - "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.6.1.tgz", - "integrity": "sha512-/StJu1YODZY6cOwkBx5FMhSoc9YmvEJXtwNN+udGg1GIKrr4PkdsCdUqC26GfdPdt5IuZnu+5y9/3mrdIJa40Q==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": "^3.5.2", "clean-css": "^5.3.1", @@ -3668,9 +3420,8 @@ }, "node_modules/cli-boxes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3680,9 +3431,8 @@ }, "node_modules/clipboardy": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", - "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", "dev": true, + "license": "MIT", "dependencies": { "arch": "^2.2.0", "execa": "^5.1.1", @@ -3697,9 +3447,8 @@ }, "node_modules/clipboardy/node_modules/execa": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -3720,9 +3469,8 @@ }, "node_modules/clipboardy/node_modules/get-stream": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3732,18 +3480,16 @@ }, "node_modules/clipboardy/node_modules/human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/clipboardy/node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -3753,18 +3499,16 @@ }, "node_modules/clipboardy/node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/clipboardy/node_modules/npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -3774,9 +3518,8 @@ }, "node_modules/clipboardy/node_modules/onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -3789,18 +3532,16 @@ }, "node_modules/clipboardy/node_modules/strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -3812,9 +3553,8 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3827,9 +3567,8 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3839,15 +3578,13 @@ }, "node_modules/cliui/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3862,9 +3599,8 @@ }, "node_modules/clone-regexp": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", - "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", "dev": true, + "license": "MIT", "dependencies": { "is-regexp": "^2.0.0" }, @@ -3874,9 +3610,8 @@ }, "node_modules/co": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, + "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -3884,45 +3619,39 @@ }, "node_modules/collect-v8-coverage": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorette": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commander": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/compressible": { "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -3932,9 +3661,8 @@ }, "node_modules/compression": { "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -3950,33 +3678,29 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/content-disposition": { "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/convert-source-map": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.1" } }, "node_modules/create-jest": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -3995,9 +3719,8 @@ }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -4010,9 +3733,8 @@ }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4026,9 +3748,8 @@ }, "node_modules/create-jest/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -4038,15 +3759,13 @@ }, "node_modules/create-jest/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4058,9 +3777,8 @@ }, "node_modules/cssesc": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -4069,42 +3787,37 @@ } }, "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/debug/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/decamelize-keys": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", "dev": true, + "license": "MIT", "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -4115,18 +3828,16 @@ }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/dedent": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", "dev": true, + "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, @@ -4138,39 +3849,34 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/deep-freeze": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", - "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", - "dev": true + "dev": true, + "license": "public domain" }, "node_modules/deep-is": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deepmerge": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/define-properties": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, + "license": "MIT", "dependencies": { "object-keys": "^1.0.12" }, @@ -4180,27 +3886,24 @@ }, "node_modules/detect-newline": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/diff-sequences": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -4210,9 +3913,8 @@ }, "node_modules/dom-serializer": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "entities": "^2.0.0" @@ -4220,51 +3922,45 @@ }, "node_modules/dom-serializer/node_modules/domelementtype": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/dom-serializer/node_modules/entities": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, + "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/domelementtype": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "1" } }, "node_modules/domino": { "version": "2.1.6", - "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz", - "integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/domutils": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "0", "domelementtype": "1" @@ -4272,21 +3968,18 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { "version": "1.4.89", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.89.tgz", - "integrity": "sha512-z1Axg0Fu54fse8wN4fd+GAINdU5mJmLtcl6bqIcYyzNVGONcfHAeeJi88KYMQVKalhXlYuVPzKkFIU5VD0raUw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -4296,15 +3989,13 @@ }, "node_modules/emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/enquirer": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -4314,24 +4005,21 @@ }, "node_modules/entities": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/error-ex": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { "version": "1.19.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", - "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -4363,9 +4051,8 @@ }, "node_modules/es-to-primitive": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -4380,27 +4067,25 @@ }, "node_modules/escalade": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -4455,9 +4140,8 @@ }, "node_modules/eslint-config-prettier": { "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -4467,9 +4151,8 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "resolve": "^1.20.0" @@ -4477,18 +4160,16 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "find-up": "^2.1.0" @@ -4499,18 +4180,16 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils/node_modules/find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^2.0.0" }, @@ -4520,9 +4199,8 @@ }, "node_modules/eslint-module-utils/node_modules/locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -4533,9 +4211,8 @@ }, "node_modules/eslint-module-utils/node_modules/p-limit": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^1.0.0" }, @@ -4545,9 +4222,8 @@ }, "node_modules/eslint-module-utils/node_modules/p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^1.1.0" }, @@ -4557,9 +4233,8 @@ }, "node_modules/eslint-module-utils/node_modules/p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -4570,9 +4245,8 @@ }, "node_modules/eslint-plugin-import": { "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.4", "array.prototype.flat": "^1.2.5", @@ -4597,9 +4271,8 @@ }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -4609,9 +4282,8 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -4622,9 +4294,8 @@ }, "node_modules/eslint-utils": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -4640,18 +4311,16 @@ }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4661,18 +4330,16 @@ }, "node_modules/eslint/node_modules/@babel/code-frame": { "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -4685,9 +4352,8 @@ }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4701,9 +4367,8 @@ }, "node_modules/eslint/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -4713,15 +4378,13 @@ }, "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -4736,9 +4399,8 @@ }, "node_modules/eslint/node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -4748,9 +4410,8 @@ }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4760,9 +4421,8 @@ }, "node_modules/eslint/node_modules/eslint-utils": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -4775,27 +4435,24 @@ }, "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/eslint/node_modules/globals": { "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -4808,18 +4465,16 @@ }, "node_modules/eslint/node_modules/ignore": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/eslint/node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -4830,9 +4485,8 @@ }, "node_modules/eslint/node_modules/optionator": { "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -4847,18 +4501,16 @@ }, "node_modules/eslint/node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/eslint/node_modules/semver": { "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4871,9 +4523,8 @@ }, "node_modules/eslint/node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -4883,9 +4534,8 @@ }, "node_modules/eslint/node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -4895,9 +4545,8 @@ }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -4907,9 +4556,8 @@ }, "node_modules/espree": { "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -4921,18 +4569,16 @@ }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -4943,9 +4589,8 @@ }, "node_modules/esquery": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -4955,18 +4600,16 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -4976,42 +4619,37 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estree-walker": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/execa": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", @@ -5032,9 +4670,8 @@ }, "node_modules/execa/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -5044,9 +4681,8 @@ }, "node_modules/execall": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", - "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", "dev": true, + "license": "MIT", "dependencies": { "clone-regexp": "^2.1.0" }, @@ -5056,8 +4692,6 @@ }, "node_modules/exit": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -5065,9 +4699,8 @@ }, "node_modules/expect": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", @@ -5081,21 +4714,18 @@ }, "node_modules/extend": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -5109,60 +4739,52 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-url-parser": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^1.3.2" } }, "node_modules/fast-url-parser/node_modules/punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastest-levenshtein": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", - "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fb-watchman": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } }, "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -5172,9 +4794,8 @@ }, "node_modules/fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -5184,9 +4805,8 @@ }, "node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -5197,18 +4817,16 @@ }, "node_modules/find-up/node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/flat-cache": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -5219,15 +4837,13 @@ }, "node_modules/flatted": { "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fs-extra": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -5240,16 +4856,13 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -5260,39 +4873,34 @@ }, "node_modules/function-bind": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/functional-red-black-tree": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -5304,18 +4912,16 @@ }, "node_modules/get-package-type": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } }, "node_modules/get-stdin": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -5325,9 +4931,8 @@ }, "node_modules/get-stream": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -5337,9 +4942,8 @@ }, "node_modules/get-symbol-description": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -5353,9 +4957,8 @@ }, "node_modules/glob": { "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5373,9 +4976,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -5385,9 +4987,8 @@ }, "node_modules/global-modules": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" }, @@ -5397,9 +4998,8 @@ }, "node_modules/global-prefix": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -5411,9 +5011,8 @@ }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -5423,18 +5022,16 @@ }, "node_modules/globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -5452,15 +5049,13 @@ }, "node_modules/globjoin": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/gonzales-pe": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.5" }, @@ -5473,30 +5068,26 @@ }, "node_modules/graceful-fs": { "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hard-rejection": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/has": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -5506,27 +5097,24 @@ }, "node_modules/has-bigints": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/has-symbols": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5536,9 +5124,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -5551,30 +5138,26 @@ }, "node_modules/hosted-git-info": { "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/html-tags": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", - "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/htmlparser2": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^1.3.1", "domhandler": "^2.3.0", @@ -5586,27 +5169,24 @@ }, "node_modules/human-signals": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=16.17.0" } }, "node_modules/ignore": { "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -5617,27 +5197,24 @@ }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/import-lazy": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/import-local": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, + "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -5654,27 +5231,24 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -5682,25 +5256,21 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue", "dev": true, + "license": "ISC", "engines": { "node": "*" } }, "node_modules/internal-slot": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -5712,8 +5282,6 @@ }, "node_modules/ionicons": { "version": "8.0.13", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-8.0.13.tgz", - "integrity": "sha512-2QQVyG2P4wszne79jemMjWYLp0DBbDhr4/yFroPCxvPP1wtMxgdIV3l5n+XZ5E9mgoXU79w7yTWpm2XzJsISxQ==", "license": "MIT", "dependencies": { "@stencil/core": "^4.35.3" @@ -5721,9 +5289,8 @@ }, "node_modules/is-alphabetical": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5731,9 +5298,8 @@ }, "node_modules/is-alphanumerical": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "dev": true, + "license": "MIT", "dependencies": { "is-alphabetical": "^1.0.0", "is-decimal": "^1.0.0" @@ -5745,15 +5311,13 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-bigint": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -5763,9 +5327,8 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -5775,9 +5338,8 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -5791,8 +5353,6 @@ }, "node_modules/is-buffer": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true, "funding": [ { @@ -5808,15 +5368,15 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/is-callable": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5826,9 +5386,8 @@ }, "node_modules/is-core-module": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dev": true, + "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -5838,9 +5397,8 @@ }, "node_modules/is-date-object": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5853,9 +5411,8 @@ }, "node_modules/is-decimal": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5863,9 +5420,8 @@ }, "node_modules/is-docker": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -5878,36 +5434,32 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -5917,9 +5469,8 @@ }, "node_modules/is-hexadecimal": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5927,15 +5478,13 @@ }, "node_modules/is-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-negative-zero": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5945,18 +5494,16 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5969,18 +5516,16 @@ }, "node_modules/is-plain-obj": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-port-reachable": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", - "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -5990,9 +5535,8 @@ }, "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -6006,27 +5550,24 @@ }, "node_modules/is-regexp": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", - "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/is-shared-array-buffer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -6036,9 +5577,8 @@ }, "node_modules/is-string": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -6051,9 +5591,8 @@ }, "node_modules/is-symbol": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -6066,15 +5605,13 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -6084,9 +5621,8 @@ }, "node_modules/is-weakref": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -6096,9 +5632,8 @@ }, "node_modules/is-wsl": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -6108,24 +5643,21 @@ }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -6139,9 +5671,8 @@ }, "node_modules/istanbul-lib-instrument/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -6154,9 +5685,8 @@ }, "node_modules/istanbul-lib-report": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -6168,9 +5698,8 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -6182,9 +5711,8 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -6199,9 +5727,8 @@ }, "node_modules/istanbul-reports": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -6212,9 +5739,8 @@ }, "node_modules/jest": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -6238,9 +5764,8 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, + "license": "MIT", "dependencies": { "execa": "^5.0.0", "jest-util": "^29.7.0", @@ -6252,9 +5777,8 @@ }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -6275,9 +5799,8 @@ }, "node_modules/jest-changed-files/node_modules/get-stream": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -6287,18 +5810,16 @@ }, "node_modules/jest-changed-files/node_modules/human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -6308,18 +5829,16 @@ }, "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -6329,9 +5848,8 @@ }, "node_modules/jest-changed-files/node_modules/onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -6344,9 +5862,8 @@ }, "node_modules/jest-changed-files/node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -6359,18 +5876,16 @@ }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/jest-circus": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -6399,9 +5914,8 @@ }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6414,9 +5928,8 @@ }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6430,9 +5943,8 @@ }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6442,15 +5954,13 @@ }, "node_modules/jest-circus/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-circus/node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -6463,9 +5973,8 @@ }, "node_modules/jest-cli": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/test-result": "^29.7.0", @@ -6496,9 +6005,8 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6511,9 +6019,8 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6527,9 +6034,8 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6539,15 +6045,13 @@ }, "node_modules/jest-cli/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-config": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^29.7.0", @@ -6590,9 +6094,8 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6605,9 +6108,8 @@ }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6621,9 +6123,8 @@ }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6633,15 +6134,13 @@ }, "node_modules/jest-config/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-config/node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -6651,9 +6150,8 @@ }, "node_modules/jest-diff": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", @@ -6666,9 +6164,8 @@ }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6681,9 +6178,8 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6697,9 +6193,8 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6709,15 +6204,13 @@ }, "node_modules/jest-diff/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-docblock": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, + "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -6727,9 +6220,8 @@ }, "node_modules/jest-each": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -6743,9 +6235,8 @@ }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6758,9 +6249,8 @@ }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6774,9 +6264,8 @@ }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6786,15 +6275,13 @@ }, "node_modules/jest-each/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-environment-node": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -6809,18 +6296,16 @@ }, "node_modules/jest-get-type": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", @@ -6843,9 +6328,8 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, + "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", "pretty-format": "^29.7.0" @@ -6856,9 +6340,8 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.7.0", @@ -6871,9 +6354,8 @@ }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6886,9 +6368,8 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6902,9 +6383,8 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6914,15 +6394,13 @@ }, "node_modules/jest-matcher-utils/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-message-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -6940,9 +6418,8 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6955,9 +6432,8 @@ }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6971,9 +6447,8 @@ }, "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6983,15 +6458,13 @@ }, "node_modules/jest-message-util/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-mock": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -7003,9 +6476,8 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -7020,18 +6492,16 @@ }, "node_modules/jest-regex-util": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", @@ -7049,9 +6519,8 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, + "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", "jest-snapshot": "^29.7.0" @@ -7062,9 +6531,8 @@ }, "node_modules/jest-resolve/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7077,9 +6545,8 @@ }, "node_modules/jest-resolve/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7093,9 +6560,8 @@ }, "node_modules/jest-resolve/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7105,15 +6571,13 @@ }, "node_modules/jest-resolve/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-runner": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/environment": "^29.7.0", @@ -7143,9 +6607,8 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7158,9 +6621,8 @@ }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7174,9 +6636,8 @@ }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7186,15 +6647,13 @@ }, "node_modules/jest-runner/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-runner/node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -7207,9 +6666,8 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -7240,9 +6698,8 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7255,9 +6712,8 @@ }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7271,9 +6727,8 @@ }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7283,15 +6738,13 @@ }, "node_modules/jest-runtime/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-snapshot": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -7320,9 +6773,8 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7335,9 +6787,8 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7351,9 +6802,8 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7363,15 +6813,13 @@ }, "node_modules/jest-snapshot/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -7384,9 +6832,8 @@ }, "node_modules/jest-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -7401,9 +6848,8 @@ }, "node_modules/jest-util/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7416,9 +6862,8 @@ }, "node_modules/jest-util/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7432,9 +6877,8 @@ }, "node_modules/jest-util/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7444,15 +6888,13 @@ }, "node_modules/jest-util/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-validate": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", @@ -7467,9 +6909,8 @@ }, "node_modules/jest-validate/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7482,9 +6923,8 @@ }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7494,9 +6934,8 @@ }, "node_modules/jest-validate/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7510,9 +6949,8 @@ }, "node_modules/jest-validate/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7522,15 +6960,13 @@ }, "node_modules/jest-validate/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-watcher": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, + "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", @@ -7547,9 +6983,8 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7562,9 +6997,8 @@ }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7578,9 +7012,8 @@ }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7590,15 +7023,13 @@ }, "node_modules/jest-watcher/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-worker": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", @@ -7611,18 +7042,16 @@ }, "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7635,15 +7064,13 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -7654,9 +7081,8 @@ }, "node_modules/jsesc": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -7666,27 +7092,23 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -7696,9 +7118,8 @@ }, "node_modules/jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -7708,57 +7129,50 @@ }, "node_modules/jsonfile/node_modules/universalify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/kind-of": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/kleur": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/known-css-properties": { "version": "0.21.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", - "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/leven": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/lines-and-columns": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -7768,27 +7182,23 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -7802,9 +7212,8 @@ }, "node_modules/log-symbols/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7817,9 +7226,8 @@ }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7833,9 +7241,8 @@ }, "node_modules/log-symbols/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7845,15 +7252,13 @@ }, "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/longest-streak": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7861,9 +7266,8 @@ }, "node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7872,21 +7276,19 @@ } }, "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -7899,9 +7301,8 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -7914,18 +7315,16 @@ }, "node_modules/makeerror": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } }, "node_modules/map-obj": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7935,9 +7334,8 @@ }, "node_modules/mathml-tag-names": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7945,9 +7343,8 @@ }, "node_modules/mdast-util-from-markdown": { "version": "0.8.4", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.4.tgz", - "integrity": "sha512-jj891B5pV2r63n2kBTFh8cRI2uR9LQHsXG1zSDqfhXkIlDzrTcIlbB5+5aaYEkl8vOPIOPLf8VT7Ere1wWTMdw==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", "mdast-util-to-string": "^2.0.0", @@ -7962,9 +7359,8 @@ }, "node_modules/mdast-util-to-markdown": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.1.tgz", - "integrity": "sha512-4qJtZ0qdyYeexAXoOZiU0uHIFVncJAmCkHkSluAsvDaVWODtPyNEo9I1ns0T4ulxu2EHRH5u/bt1cV0pdHCX+A==", "dev": true, + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "longest-streak": "^2.0.0", @@ -7980,9 +7376,8 @@ }, "node_modules/mdast-util-to-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -7990,9 +7385,8 @@ }, "node_modules/meow": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -8016,9 +7410,8 @@ }, "node_modules/meow/node_modules/hosted-git-info": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8028,9 +7421,8 @@ }, "node_modules/meow/node_modules/normalize-package-data": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -8043,9 +7435,8 @@ }, "node_modules/meow/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8058,9 +7449,8 @@ }, "node_modules/meow/node_modules/type-fest": { "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -8070,23 +7460,19 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromark": { "version": "2.11.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.2.tgz", - "integrity": "sha512-IXuP76p2uj8uMg4FQc1cRE7lPCLsfAXuEfdjtdO55VRiFO1asrCSQ5g43NmPqFtRwzEnEhafRVzn2jg0UiKArQ==", "dev": true, "funding": [ { @@ -8098,6 +7484,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "debug": "^4.0.0", "parse-entities": "^2.0.0" @@ -8105,9 +7492,8 @@ }, "node_modules/micromark/node_modules/debug": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -8122,9 +7508,8 @@ }, "node_modules/micromatch": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.1", "picomatch": "^2.2.3" @@ -8135,18 +7520,16 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -8156,9 +7539,8 @@ }, "node_modules/mimic-fn": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -8168,18 +7550,16 @@ }, "node_modules/min-indent": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8189,15 +7569,13 @@ }, "node_modules/minimist": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/minimist-options": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, + "license": "MIT", "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -8209,9 +7587,8 @@ }, "node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.11", @@ -8225,7 +7602,6 @@ } ], "license": "MIT", - "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -8235,36 +7611,31 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/node-int64": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/normalize-package-data": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -8274,33 +7645,29 @@ }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-range": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-selector": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", - "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/npm-run-path": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -8313,9 +7680,8 @@ }, "node_modules/npm-run-path/node_modules/path-key": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -8325,33 +7691,29 @@ }, "node_modules/num2fraction": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/object-inspect": { "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -8367,9 +7729,8 @@ }, "node_modules/object.values": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -8384,27 +7745,24 @@ }, "node_modules/on-headers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" }, @@ -8417,9 +7775,8 @@ }, "node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -8432,9 +7789,8 @@ }, "node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -8444,18 +7800,16 @@ }, "node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -8465,9 +7819,8 @@ }, "node_modules/parse-entities": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "dev": true, + "license": "MIT", "dependencies": { "character-entities": "^1.0.0", "character-entities-legacy": "^1.0.0", @@ -8483,9 +7836,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -8501,69 +7853,60 @@ }, "node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-is-inside": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true + "dev": true, + "license": "(WTFPL OR MIT)" }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-to-regexp": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -8573,18 +7916,16 @@ }, "node_modules/pirates": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -8594,9 +7935,8 @@ }, "node_modules/playwright": { "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", - "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "playwright-core": "1.56.1" }, @@ -8615,6 +7955,8 @@ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", "dev": true, + "license": "Apache-2.0", + "peer": true, "bin": { "playwright-core": "cli.js" }, @@ -8624,9 +7966,9 @@ }, "node_modules/postcss": { "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -8642,9 +7984,8 @@ }, "node_modules/postcss-html": { "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", "dev": true, + "license": "MIT", "dependencies": { "htmlparser2": "^3.10.0" }, @@ -8655,9 +7996,8 @@ }, "node_modules/postcss-less": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", - "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", "dev": true, + "license": "MIT", "dependencies": { "postcss": "^7.0.14" }, @@ -8667,21 +8007,18 @@ }, "node_modules/postcss-media-query-parser": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-safe-parser": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", "dev": true, + "license": "MIT", "dependencies": { "postcss": "^7.0.26" }, @@ -8691,9 +8028,8 @@ }, "node_modules/postcss-sass": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", - "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", "dev": true, + "license": "MIT", "dependencies": { "gonzales-pe": "^4.3.0", "postcss": "^7.0.21" @@ -8701,9 +8037,8 @@ }, "node_modules/postcss-scss": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", - "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", "dev": true, + "license": "MIT", "dependencies": { "postcss": "^7.0.6" }, @@ -8713,9 +8048,8 @@ }, "node_modules/postcss-selector-parser": { "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -8726,9 +8060,8 @@ }, "node_modules/postcss-sorting": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-5.0.1.tgz", - "integrity": "sha512-Y9fUFkIhfrm6i0Ta3n+89j56EFqaNRdUKqXyRp6kvTcSXnmgEjaVowCXH+JBe9+YKWqd4nc28r2sgwnzJalccA==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.14", "postcss": "^7.0.17" @@ -8739,24 +8072,22 @@ }, "node_modules/postcss-syntax": { "version": "0.36.2", - "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", - "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", "dev": true, + "license": "MIT", + "peer": true, "peerDependencies": { "postcss": ">=5.0.0" } }, "node_modules/postcss-value-parser": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -8768,9 +8099,8 @@ }, "node_modules/postcss/node_modules/chalk/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -8780,9 +8110,8 @@ }, "node_modules/postcss/node_modules/supports-color": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -8792,9 +8121,9 @@ }, "node_modules/prettier": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", - "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", "dev": true, + "license": "MIT", + "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -8807,9 +8136,8 @@ }, "node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -8821,9 +8149,8 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -8833,18 +8160,16 @@ }, "node_modules/progress": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/prompts": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -8855,17 +8180,14 @@ }, "node_modules/punycode": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pure-rand": { "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", "dev": true, "funding": [ { @@ -8876,31 +8198,29 @@ "type": "opencollective", "url": "https://opencollective.com/fast-check" } - ] + ], + "license": "MIT" }, "node_modules/quick-lru": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/range-parser": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -8913,15 +8233,13 @@ }, "node_modules/react-is": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/read-pkg": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, + "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -8934,9 +8252,8 @@ }, "node_modules/read-pkg-up": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -8951,27 +8268,24 @@ }, "node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/readable-stream": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -8983,9 +8297,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -8995,9 +8308,8 @@ }, "node_modules/redent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, + "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -9008,9 +8320,8 @@ }, "node_modules/regexpp": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -9020,9 +8331,8 @@ }, "node_modules/registry-auth-token": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, + "license": "MIT", "dependencies": { "rc": "^1.1.6", "safe-buffer": "^5.0.1" @@ -9030,9 +8340,8 @@ }, "node_modules/registry-url": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", "dev": true, + "license": "MIT", "dependencies": { "rc": "^1.0.1" }, @@ -9042,9 +8351,8 @@ }, "node_modules/remark": { "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", "dev": true, + "license": "MIT", "dependencies": { "remark-parse": "^9.0.0", "remark-stringify": "^9.0.0", @@ -9057,9 +8365,8 @@ }, "node_modules/remark-parse": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", "dev": true, + "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^0.8.0" }, @@ -9070,9 +8377,8 @@ }, "node_modules/remark-stringify": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", "dev": true, + "license": "MIT", "dependencies": { "mdast-util-to-markdown": "^0.6.0" }, @@ -9083,36 +8389,32 @@ }, "node_modules/repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve": { "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.8.1", "path-parse": "^1.0.7", @@ -9127,9 +8429,8 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -9139,27 +8440,24 @@ }, "node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve.exports": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -9167,9 +8465,8 @@ }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -9182,9 +8479,9 @@ }, "node_modules/rollup": { "version": "2.35.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.35.1.tgz", - "integrity": "sha512-q5KxEyWpprAIcainhVy6HfRttD9kutQpHbeqDTWnqAFNJotiojetK6uqmcydNMymBEtC4I8bCYR+J3mTMqeaUA==", "dev": true, + "license": "MIT", + "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -9197,11 +8494,8 @@ }, "node_modules/rollup/node_modules/fsevents": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", "dev": true, - "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -9212,8 +8506,6 @@ }, "node_modules/run-parallel": { "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", "dev": true, "funding": [ { @@ -9228,19 +8520,18 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/sass": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.33.0.tgz", - "integrity": "sha512-9v0MUXnSi62FtfjqcwZ+b8B9FIxdwFEb3FPUkjEPXWd0b5KcnPGSp2XF9WrzcH1ZxedfgJVTdA3A1j4eEj53xg==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0" }, @@ -9253,18 +8544,16 @@ }, "node_modules/semver": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/serve": { "version": "14.0.1", - "resolved": "https://registry.npmjs.org/serve/-/serve-14.0.1.tgz", - "integrity": "sha512-tNGwxl27FwA8TbmMQqN0jTaSx8/trL532qZsJHX1VdiEIjjtMJHCs7AFS6OvtC7cTHOvmjXqt5yczejU6CV2Xg==", "dev": true, + "license": "MIT", "dependencies": { "@zeit/schemas": "2.21.0", "ajv": "8.11.0", @@ -9287,9 +8576,8 @@ }, "node_modules/serve-handler": { "version": "6.1.3", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", - "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.0.0", "content-disposition": "0.5.2", @@ -9303,18 +8591,16 @@ }, "node_modules/serve-handler/node_modules/mime-db": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-handler/node_modules/mime-types": { "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "~1.33.0" }, @@ -9324,9 +8610,8 @@ }, "node_modules/serve/node_modules/ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -9340,9 +8625,8 @@ }, "node_modules/serve/node_modules/chalk": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", - "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -9352,15 +8636,13 @@ }, "node_modules/serve/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -9370,18 +8652,16 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/side-channel": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -9393,30 +8673,26 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/sisteransi": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -9427,16 +8703,14 @@ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -9444,9 +8718,8 @@ }, "node_modules/spdx-correct": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -9454,15 +8727,13 @@ }, "node_modules/spdx-exceptions": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -9470,30 +8741,26 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/specificity": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", - "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", "dev": true, + "license": "MIT", "bin": { "specificity": "bin/specificity" } }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/stack-utils": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -9503,26 +8770,22 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/string_decoder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -9537,13 +8800,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/string-length": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, + "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -9554,9 +8817,8 @@ }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9568,15 +8830,13 @@ }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string.prototype.trimend": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -9587,9 +8847,8 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -9600,9 +8859,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9612,18 +8870,16 @@ }, "node_modules/strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-final-newline": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -9633,9 +8889,8 @@ }, "node_modules/strip-indent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, + "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -9645,24 +8900,21 @@ }, "node_modules/strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/style-search": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/stylelint": { "version": "13.13.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", - "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", "dev": true, + "license": "MIT", "dependencies": { "@stylelint/postcss-css-in-js": "^0.37.2", "@stylelint/postcss-markdown": "^0.36.2", @@ -9726,9 +8978,8 @@ }, "node_modules/stylelint-order": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-4.1.0.tgz", - "integrity": "sha512-sVTikaDvMqg2aJjh4r48jsdfmqLT+nqB1MOsaBnvM3OwLx4S+WXcsxsgk5w18h/OZoxZCxuyXMh61iBHcj9Qiw==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.15", "postcss": "^7.0.31", @@ -9740,10 +8991,8 @@ }, "node_modules/stylelint/node_modules/@stylelint/postcss-markdown": { "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", - "deprecated": "Use the original unforked package instead: postcss-markdown", "dev": true, + "license": "MIT", "dependencies": { "remark": "^13.0.0", "unist-util-find-all-after": "^3.0.2" @@ -9755,9 +9004,8 @@ }, "node_modules/stylelint/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9770,15 +9018,13 @@ }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stylelint/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9792,9 +9038,8 @@ }, "node_modules/stylelint/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -9804,15 +9049,13 @@ }, "node_modules/stylelint/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stylelint/node_modules/cosmiconfig": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -9826,9 +9069,8 @@ }, "node_modules/stylelint/node_modules/debug": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -9843,18 +9085,16 @@ }, "node_modules/sugarss": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", - "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss": "^7.0.2" } }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9864,18 +9104,16 @@ }, "node_modules/supports-color/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9885,15 +9123,12 @@ }, "node_modules/svg-tags": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", "dev": true }, "node_modules/table": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -9907,9 +9142,8 @@ }, "node_modules/table/node_modules/ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -9923,9 +9157,8 @@ }, "node_modules/table/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9938,18 +9171,16 @@ }, "node_modules/table/node_modules/astral-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/table/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -9959,21 +9190,18 @@ }, "node_modules/table/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/table/node_modules/slice-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -9988,9 +9216,8 @@ }, "node_modules/test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -10002,21 +9229,18 @@ }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tmpl": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -10026,18 +9250,16 @@ }, "node_modules/trim-newlines": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/trough": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -10045,9 +9267,8 @@ }, "node_modules/ts-api-utils": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", "dev": true, + "license": "MIT", "engines": { "node": ">=16.13.0" }, @@ -10057,9 +9278,8 @@ }, "node_modules/tsconfig-paths": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", @@ -10069,9 +9289,8 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -10081,23 +9300,20 @@ }, "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tslib": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -10110,24 +9326,21 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/type-detect": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -10137,17 +9350,16 @@ }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, + "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -10161,9 +9373,8 @@ }, "node_modules/unbox-primitive": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has-bigints": "^1.0.1", @@ -10176,9 +9387,8 @@ }, "node_modules/unified": { "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", "dev": true, + "license": "MIT", "dependencies": { "bail": "^1.0.0", "extend": "^3.0.0", @@ -10194,18 +9404,16 @@ }, "node_modules/unified/node_modules/is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/unist-util-find-all-after": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", - "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", "dev": true, + "license": "MIT", "dependencies": { "unist-util-is": "^4.0.0" }, @@ -10216,9 +9424,8 @@ }, "node_modules/unist-util-is": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.4.tgz", - "integrity": "sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -10226,9 +9433,8 @@ }, "node_modules/unist-util-stringify-position": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dev": true, + "license": "MIT", "dependencies": { "@types/unist": "^2.0.2" }, @@ -10239,18 +9445,16 @@ }, "node_modules/universalify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/update-check": { "version": "1.5.4", - "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz", - "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", "dev": true, + "license": "MIT", "dependencies": { "registry-auth-token": "3.3.2", "registry-url": "3.1.0" @@ -10258,30 +9462,26 @@ }, "node_modules/uri-js": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/v8-compile-cache": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", "dev": true, + "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -10293,15 +9493,13 @@ }, "node_modules/v8-to-istanbul/node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -10309,18 +9507,16 @@ }, "node_modules/vary": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/vfile": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -10334,9 +9530,8 @@ }, "node_modules/vfile-message": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^2.0.0" @@ -10347,18 +9542,18 @@ } }, "node_modules/vue": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", - "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "version": "3.5.25", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.25.tgz", + "integrity": "sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-sfc": "3.5.13", - "@vue/runtime-dom": "3.5.13", - "@vue/server-renderer": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-dom": "3.5.25", + "@vue/compiler-sfc": "3.5.25", + "@vue/runtime-dom": "3.5.25", + "@vue/server-renderer": "3.5.25", + "@vue/shared": "3.5.25" }, "peerDependencies": { "typescript": "*" @@ -10371,18 +9566,16 @@ }, "node_modules/walker": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -10395,9 +9588,8 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -10411,9 +9603,8 @@ }, "node_modules/widest-line": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dev": true, + "license": "MIT", "dependencies": { "string-width": "^5.0.1" }, @@ -10426,9 +9617,8 @@ }, "node_modules/widest-line/node_modules/ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -10438,9 +9628,8 @@ }, "node_modules/widest-line/node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -10455,9 +9644,8 @@ }, "node_modules/widest-line/node_modules/strip-ansi": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -10470,18 +9658,16 @@ }, "node_modules/word-wrap": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/wrap-ansi": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", - "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -10496,9 +9682,8 @@ }, "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -10508,9 +9693,8 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", - "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -10520,9 +9704,8 @@ }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -10537,9 +9720,8 @@ }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -10552,15 +9734,13 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -10570,33 +9750,29 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -10612,27 +9788,24 @@ }, "node_modules/yargs-parser": { "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -10642,7700 +9815,12 @@ }, "node_modules/zwitch": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } } - }, - "dependencies": { - "@axe-core/playwright": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.11.0.tgz", - "integrity": "sha512-70vBT/Ylqpm65RQz2iCG2o0JJCEG/WCNyefTr2xcOcr1CoSee60gNQYUMZZ7YukoKkFLv26I/jjlsvwwp532oQ==", - "dev": true, - "requires": { - "axe-core": "~4.11.0" - } - }, - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", - "dev": true - }, - "@babel/core": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", - "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.12", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.10", - "@babel/types": "^7.16.8", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true - }, - "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true - }, - "@babel/helpers": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", - "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - } - }, - "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", - "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", - "dev": true, - "requires": { - "@babel/types": "^7.26.5" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, - "@babel/types": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", - "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@capacitor/core": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.4.tgz", - "integrity": "sha512-xzjxpr+d2zwTpCaN0k+C6wKSZzWFAb9OVEUtmO72ihjr/NEDoLvsGl4WLfjWPcCO2zOy0b2X52tfRWjECFUjtw==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "@capacitor/haptics": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@capacitor/haptics/-/haptics-7.0.2.tgz", - "integrity": "sha512-vqfeEM6s2zMgLjpITCTUIy7P/hadq/Gr5E/RClFgMJPB41Y5FsqOKD+j85/uwh8N2cf/aWaPeXUmjnTzJbEB2g==", - "dev": true, - "requires": {} - }, - "@capacitor/keyboard": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@capacitor/keyboard/-/keyboard-7.0.3.tgz", - "integrity": "sha512-BIBKjmky5rOYNhvYhNeDi0MMvjwYZ6YF9JoCYcGKvKY+XLJKtezsEL78XfOlgWZBkbfR8uq3tzktY6PqgoYLKA==", - "dev": true, - "requires": {} - }, - "@capacitor/status-bar": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-7.0.3.tgz", - "integrity": "sha512-JyRpVnKwHij9hgPWolF6PK+HT3e2HSPjN11/h2OmKxq8GAdPGARFLv+97eZl0pvuvm0Kka/LpiLb5whXISBg7Q==", - "dev": true, - "requires": {} - }, - "@clack/core": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.5.0.tgz", - "integrity": "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==", - "dev": true, - "requires": { - "picocolors": "^1.0.0", - "sisteransi": "^1.0.5" - } - }, - "@clack/prompts": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.11.0.tgz", - "integrity": "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==", - "dev": true, - "requires": { - "@clack/core": "0.5.0", - "picocolors": "^1.0.0", - "sisteransi": "^1.0.5" - } - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@ionic/eslint-config": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@ionic/eslint-config/-/eslint-config-0.3.0.tgz", - "integrity": "sha512-Uf1hS2YIoHlcvXPF5LnsPM6auMewEdChQhR117Rt3sVEAutbyKMpFP4slNC2a6up3a5Q34zepqlf61Qgkf9XeQ==", - "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "^4.1.0", - "@typescript-eslint/parser": "^4.1.0", - "eslint-config-prettier": "^6.11.0", - "eslint-plugin-import": "^2.22.0" - }, - "dependencies": { - "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - } - }, - "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "eslint-config-prettier": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", - "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", - "dev": true, - "requires": { - "get-stdin": "^6.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@ionic/prettier-config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ionic/prettier-config/-/prettier-config-2.0.0.tgz", - "integrity": "sha512-ageMx54B9qqS1scnFW3kQW2NW8HyXwUM/p9c1YSWFKr6Yct7YVNbJFY3EcFapaNTiDnwo+GLlPRt+wST6E8AfA==", - "dev": true, - "requires": {} - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "requires": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - } - }, - "@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "requires": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - } - }, - "@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "requires": { - "jest-get-type": "^29.6.3" - } - }, - "@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - } - }, - "@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.27.8" - } - }, - "@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "requires": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - } - } - }, - "@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" - } - }, - "@playwright/test": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz", - "integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==", - "dev": true, - "requires": { - "playwright": "1.56.1" - } - }, - "@rollup/plugin-node-resolve": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz", - "integrity": "sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deep-freeze": "^0.0.1", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.17.0" - } - }, - "@rollup/plugin-virtual": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-2.0.3.tgz", - "integrity": "sha512-pw6ziJcyjZtntQ//bkad9qXaBx665SgEL8C8KI5wO8G5iU5MPxvdWrQyVaAvjojGm9tJoS8M9Z/EEepbqieYmw==", - "dev": true, - "requires": {} - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - } - }, - "@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", - "optional": true - }, - "@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", - "optional": true - }, - "@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", - "optional": true - }, - "@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", - "optional": true - }, - "@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", - "optional": true - }, - "@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", - "optional": true - }, - "@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", - "optional": true - }, - "@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", - "optional": true - }, - "@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.0" - } - }, - "@stencil/angular-output-target": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@stencil/angular-output-target/-/angular-output-target-0.10.2.tgz", - "integrity": "sha512-jPRa2NMAPtm/iMY+mUaWATbIhgY5zPJfUNQyF8nwC0rMrfXifPoRCf6BbH2S4Gy7SX0X4hlP+jAbVUjQNg/P+Q==", - "dev": true, - "requires": {} - }, - "@stencil/core": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", - "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", - "requires": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" - } - }, - "@stencil/react-output-target": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@stencil/react-output-target/-/react-output-target-0.5.3.tgz", - "integrity": "sha512-68jwRp35CjAcwhTJ9yFD/3n+jrHOqvEH2jreVuPVvZK+4tkhPlYlwz0d1E1RlF3jyifUSfdkWUGgXIEy8Fo3yw==", - "dev": true, - "requires": {} - }, - "@stencil/sass": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-3.0.9.tgz", - "integrity": "sha512-GtPMjf5r4/BVBCO3LvcoMSIfOa6T+0wq+SrTGEilC4NCZpuZdAlZffWxXi80caZ1jDclwdzJ2qGwEgCAfvGoNA==", - "dev": true, - "requires": {} - }, - "@stencil/vue-output-target": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.10.8.tgz", - "integrity": "sha512-/a20LG29xqy/lxBqo6zc1LbyS20GW9xghypZ7vYdo5fQB8jHClAQDkn+c8aykQlre5TtHiODgvr/rRDUrQKwyg==", - "dev": true, - "requires": {} - }, - "@stylelint/postcss-css-in-js": { - "version": "0.37.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", - "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", - "dev": true, - "requires": { - "@babel/core": ">=7.9.0" - } - }, - "@types/babel__core": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz", - "integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.6", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz", - "integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz", - "integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz", - "integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==", - "dev": true, - "requires": { - "@babel/types": "^7.20.7" - } - }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "@types/graceful-fs": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.8.tgz", - "integrity": "sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz", - "integrity": "sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz", - "integrity": "sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "29.5.6", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.6.tgz", - "integrity": "sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w==", - "dev": true, - "requires": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "@types/json-schema": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", - "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, - "@types/mdast": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", - "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/node": { - "version": "16.18.126", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", - "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", - "dev": true - }, - "@types/stack-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.2.tgz", - "integrity": "sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==", - "dev": true - }, - "@types/unist": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", - "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", - "dev": true - }, - "@types/yargs": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz", - "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz", - "integrity": "sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.2.tgz", - "integrity": "sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/type-utils": "6.7.2", - "@typescript-eslint/utils": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - } - }, - "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/parser": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.2.tgz", - "integrity": "sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/typescript-estree": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", - "debug": "^4.3.4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, - "@typescript-eslint/scope-manager": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.2.tgz", - "integrity": "sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2" - } - }, - "@typescript-eslint/type-utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.2.tgz", - "integrity": "sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "6.7.2", - "@typescript-eslint/utils": "6.7.2", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, - "@typescript-eslint/types": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.2.tgz", - "integrity": "sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz", - "integrity": "sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.2.tgz", - "integrity": "sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/typescript-estree": "6.7.2", - "semver": "^7.5.4" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz", - "integrity": "sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.7.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "@vue/compiler-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", - "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", - "dev": true, - "peer": true, - "requires": { - "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.13", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - }, - "dependencies": { - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "peer": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "peer": true - } - } - }, - "@vue/compiler-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", - "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", - "dev": true, - "peer": true, - "requires": { - "@vue/compiler-core": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "@vue/compiler-sfc": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", - "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.13", - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.11", - "postcss": "^8.4.48", - "source-map-js": "^1.2.0" - }, - "dependencies": { - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "peer": true - }, - "postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", - "dev": true, - "peer": true, - "requires": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - } - } - } - }, - "@vue/compiler-ssr": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", - "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", - "dev": true, - "peer": true, - "requires": { - "@vue/compiler-dom": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "@vue/reactivity": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", - "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", - "dev": true, - "peer": true, - "requires": { - "@vue/shared": "3.5.13" - } - }, - "@vue/runtime-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", - "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", - "dev": true, - "peer": true, - "requires": { - "@vue/reactivity": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "@vue/runtime-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", - "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", - "dev": true, - "peer": true, - "requires": { - "@vue/reactivity": "3.5.13", - "@vue/runtime-core": "3.5.13", - "@vue/shared": "3.5.13", - "csstype": "^3.1.3" - } - }, - "@vue/server-renderer": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", - "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", - "dev": true, - "peer": true, - "requires": { - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "@vue/shared": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", - "dev": true, - "peer": true - }, - "@zeit/schemas": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz", - "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", - "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "requires": { - "string-width": "^4.1.0" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true - }, - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "autoprefixer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - } - }, - "axe-core": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz", - "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", - "dev": true - }, - "babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "requires": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true - }, - "boxen": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", - "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", - "dev": true, - "requires": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.0", - "chalk": "^5.0.1", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "camelcase": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", - "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "caniuse-lite": { - "version": "1.0.30001319", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz", - "integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==", - "dev": true - }, - "chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true - }, - "chalk-template": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", - "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", - "dev": true, - "requires": { - "chalk": "^4.1.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "clean-css": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - } - }, - "clean-css-cli": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.6.1.tgz", - "integrity": "sha512-/StJu1YODZY6cOwkBx5FMhSoc9YmvEJXtwNN+udGg1GIKrr4PkdsCdUqC26GfdPdt5IuZnu+5y9/3mrdIJa40Q==", - "dev": true, - "requires": { - "chokidar": "^3.5.2", - "clean-css": "^5.3.1", - "commander": "7.x", - "glob": "^7.1.6" - } - }, - "cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "dev": true - }, - "clipboardy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", - "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", - "dev": true, - "requires": { - "arch": "^2.2.0", - "execa": "^5.1.1", - "is-wsl": "^2.2.0" - }, - "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - } - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "clone-regexp": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", - "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", - "dev": true, - "requires": { - "is-regexp": "^2.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", - "dev": true - }, - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, - "peer": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true - } - } - }, - "dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true, - "requires": {} - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-freeze": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", - "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - } - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domino": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz", - "integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==", - "dev": true - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.89", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.89.tgz", - "integrity": "sha512-z1Axg0Fu54fse8wN4fd+GAINdU5mJmLtcl6bqIcYyzNVGONcfHAeeJi88KYMQVKalhXlYuVPzKkFIU5VD0raUw==", - "dev": true - }, - "emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", - "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "requires": {} - }, - "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - } - } - }, - "eslint-plugin-custom-rules": { - "version": "file:custom-rules" - }, - "eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", - "has": "^1.0.3", - "is-core-module": "^2.8.0", - "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "dependencies": { - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - } - } - }, - "execall": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", - "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", - "dev": true, - "requires": { - "clone-regexp": "^2.1.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "requires": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", - "dev": true, - "requires": { - "punycode": "^1.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "fastq": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", - "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "dependencies": { - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true - }, - "get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", - "dev": true - }, - "gonzales-pe": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", - "dev": true - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "html-tags": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", - "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", - "dev": true - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, - "import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "ionicons": { - "version": "8.0.13", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-8.0.13.tgz", - "integrity": "sha512-2QQVyG2P4wszne79jemMjWYLp0DBbDhr4/yFroPCxvPP1wtMxgdIV3l5n+XZ5E9mgoXU79w7yTWpm2XzJsISxQ==", - "requires": { - "@stencil/core": "^4.35.3" - } - }, - "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true - }, - "is-port-reachable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", - "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-regexp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", - "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true - }, - "is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, - "istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "requires": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - } - }, - "jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - } - } - }, - "jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - } - } - }, - "jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "requires": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } - } - }, - "jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true - }, - "jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "requires": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true - }, - "jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "requires": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - } - }, - "jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - } - } - }, - "jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "requires": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "known-css-properties": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", - "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", - "dev": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "requires": { - "semver": "^7.5.3" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true - }, - "mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true - }, - "mdast-util-from-markdown": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.4.tgz", - "integrity": "sha512-jj891B5pV2r63n2kBTFh8cRI2uR9LQHsXG1zSDqfhXkIlDzrTcIlbB5+5aaYEkl8vOPIOPLf8VT7Ere1wWTMdw==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "mdast-util-to-markdown": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.1.tgz", - "integrity": "sha512-4qJtZ0qdyYeexAXoOZiU0uHIFVncJAmCkHkSluAsvDaVWODtPyNEo9I1ns0T4ulxu2EHRH5u/bt1cV0pdHCX+A==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - } - }, - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true - }, - "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromark": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.2.tgz", - "integrity": "sha512-IXuP76p2uj8uMg4FQc1cRE7lPCLsfAXuEfdjtdO55VRiFO1asrCSQ5g43NmPqFtRwzEnEhafRVzn2jg0UiKArQ==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "peer": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-selector": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", - "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", - "dev": true - }, - "npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "requires": { - "path-key": "^4.0.0" - }, - "dependencies": { - "path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true - } - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "requires": { - "mimic-fn": "^4.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, - "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "playwright": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", - "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", - "dev": true, - "requires": { - "fsevents": "2.3.2", - "playwright-core": "1.56.1" - } - }, - "playwright-core": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", - "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", - "dev": true - }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", - "dev": true, - "requires": { - "htmlparser2": "^3.10.0" - } - }, - "postcss-less": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", - "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - } - }, - "postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", - "dev": true - }, - "postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", - "dev": true - }, - "postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", - "dev": true, - "requires": { - "postcss": "^7.0.26" - } - }, - "postcss-sass": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", - "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", - "dev": true, - "requires": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" - } - }, - "postcss-scss": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", - "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", - "dev": true, - "requires": { - "postcss": "^7.0.6" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-sorting": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-5.0.1.tgz", - "integrity": "sha512-Y9fUFkIhfrm6i0Ta3n+89j56EFqaNRdUKqXyRp6kvTcSXnmgEjaVowCXH+JBe9+YKWqd4nc28r2sgwnzJalccA==", - "dev": true, - "requires": { - "lodash": "^4.17.14", - "postcss": "^7.0.17" - } - }, - "postcss-syntax": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", - "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", - "dev": true, - "requires": {} - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - }, - "prettier": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", - "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", - "dev": true - }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", - "dev": true - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", - "dev": true, - "requires": { - "rc": "^1.0.1" - } - }, - "remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "dev": true, - "requires": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - } - }, - "remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dev": true, - "requires": { - "mdast-util-from-markdown": "^0.8.0" - } - }, - "remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "dev": true, - "requires": { - "mdast-util-to-markdown": "^0.6.0" - } - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "2.35.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.35.1.tgz", - "integrity": "sha512-q5KxEyWpprAIcainhVy6HfRttD9kutQpHbeqDTWnqAFNJotiojetK6uqmcydNMymBEtC4I8bCYR+J3mTMqeaUA==", - "dev": true, - "requires": { - "fsevents": "~2.1.2" - }, - "dependencies": { - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - } - } - }, - "run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "sass": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.33.0.tgz", - "integrity": "sha512-9v0MUXnSi62FtfjqcwZ+b8B9FIxdwFEb3FPUkjEPXWd0b5KcnPGSp2XF9WrzcH1ZxedfgJVTdA3A1j4eEj53xg==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "serve": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/serve/-/serve-14.0.1.tgz", - "integrity": "sha512-tNGwxl27FwA8TbmMQqN0jTaSx8/trL532qZsJHX1VdiEIjjtMJHCs7AFS6OvtC7cTHOvmjXqt5yczejU6CV2Xg==", - "dev": true, - "requires": { - "@zeit/schemas": "2.21.0", - "ajv": "8.11.0", - "arg": "5.0.2", - "boxen": "7.0.0", - "chalk": "5.0.1", - "chalk-template": "0.4.0", - "clipboardy": "3.0.0", - "compression": "1.7.4", - "is-port-reachable": "4.0.0", - "serve-handler": "6.1.3", - "update-check": "1.5.4" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "chalk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", - "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "serve-handler": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", - "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-disposition": "0.5.2", - "fast-url-parser": "1.1.3", - "mime-types": "2.1.18", - "minimatch": "3.0.4", - "path-is-inside": "1.0.2", - "path-to-regexp": "2.2.1", - "range-parser": "1.2.0" - }, - "dependencies": { - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "requires": { - "mime-db": "~1.33.0" - } - } - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "peer": true - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true - }, - "specificity": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", - "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - } - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true - }, - "style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", - "dev": true - }, - "stylelint": { - "version": "13.13.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", - "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", - "dev": true, - "requires": { - "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", - "autoprefixer": "^9.8.6", - "balanced-match": "^2.0.0", - "chalk": "^4.1.1", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", - "execall": "^2.0.0", - "fast-glob": "^3.2.5", - "fastest-levenshtein": "^1.0.12", - "file-entry-cache": "^6.0.1", - "get-stdin": "^8.0.0", - "global-modules": "^2.0.0", - "globby": "^11.0.3", - "globjoin": "^0.1.4", - "html-tags": "^3.1.0", - "ignore": "^5.1.8", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "known-css-properties": "^0.21.0", - "lodash": "^4.17.21", - "log-symbols": "^4.1.0", - "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.4", - "normalize-selector": "^0.2.0", - "postcss": "^7.0.35", - "postcss-html": "^0.36.0", - "postcss-less": "^3.1.4", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", - "postcss-scss": "^2.1.1", - "postcss-selector-parser": "^6.0.5", - "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^4.1.0", - "resolve-from": "^5.0.0", - "slash": "^3.0.0", - "specificity": "^0.4.1", - "string-width": "^4.2.2", - "strip-ansi": "^6.0.0", - "style-search": "^0.1.0", - "sugarss": "^2.0.0", - "svg-tags": "^1.0.0", - "table": "^6.6.0", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^3.0.3" - }, - "dependencies": { - "@stylelint/postcss-markdown": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", - "dev": true, - "requires": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, - "stylelint-order": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-4.1.0.tgz", - "integrity": "sha512-sVTikaDvMqg2aJjh4r48jsdfmqLT+nqB1MOsaBnvM3OwLx4S+WXcsxsgk5w18h/OZoxZCxuyXMh61iBHcj9Qiw==", - "dev": true, - "requires": { - "lodash": "^4.17.15", - "postcss": "^7.0.31", - "postcss-sorting": "^5.0.1" - } - }, - "sugarss": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", - "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - } - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", - "dev": true - }, - "table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true - }, - "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true - }, - "ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", - "dev": true, - "requires": {} - }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "peer": true - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", - "dev": true, - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "dependencies": { - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - } - } - }, - "unist-util-find-all-after": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", - "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", - "dev": true, - "requires": { - "unist-util-is": "^4.0.0" - } - }, - "unist-util-is": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.4.tgz", - "integrity": "sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA==", - "dev": true - }, - "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, - "requires": { - "@types/unist": "^2.0.2" - } - }, - "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true - }, - "update-check": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz", - "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", - "dev": true, - "requires": { - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0" - } - }, - "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "dependencies": { - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - } - }, - "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "vue": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", - "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", - "dev": true, - "peer": true, - "requires": { - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-sfc": "3.5.13", - "@vue/runtime-dom": "3.5.13", - "@vue/server-renderer": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "dev": true, - "requires": { - "string-width": "^5.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrap-ansi": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", - "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", - "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true - }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "dev": true - } } } diff --git a/core/package.json b/core/package.json index a4fee0ea20f..b31b79e32de 100644 --- a/core/package.json +++ b/core/package.json @@ -65,6 +65,7 @@ "fs-extra": "^9.0.1", "jest": "^29.7.0", "jest-cli": "^29.7.0", + "playwright-core": "^1.56.1", "prettier": "^2.6.1", "rollup": "^2.26.4", "sass": "^1.33.0", From 76e4901189c2f6d4a5fd1dfc1b9c59edd35aa79a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Dec 2025 09:43:34 -0500 Subject: [PATCH 045/126] chore(deps): update actions/setup-node action to v6.1.0 (#30834) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/setup-node](https://redirect.github.com/actions/setup-node) | action | minor | `v6.0.0` -> `v6.1.0` | --- ### Release Notes
actions/setup-node (actions/setup-node) ### [`v6.1.0`](https://redirect.github.com/actions/setup-node/releases/tag/v6.1.0) [Compare Source](https://redirect.github.com/actions/setup-node/compare/v6.0.0...v6.1.0) #### What's Changed ##### Enhancement: - Remove always-auth configuration handling by [@​priyagupta108](https://redirect.github.com/priyagupta108) in [#​1436](https://redirect.github.com/actions/setup-node/pull/1436) ##### Dependency updates: - Upgrade [@​actions/cache](https://redirect.github.com/actions/cache) from 4.0.3 to 4.1.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1384](https://redirect.github.com/actions/setup-node/pull/1384) - Upgrade actions/checkout from 5 to 6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1439](https://redirect.github.com/actions/setup-node/pull/1439) - Upgrade js-yaml from 3.14.1 to 3.14.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1435](https://redirect.github.com/actions/setup-node/pull/1435) ##### Documentation update: - Add example for restore-only cache in documentation by [@​aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) in [#​1419](https://redirect.github.com/actions/setup-node/pull/1419) **Full Changelog**:
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/actions/publish-npm/action.yml | 2 +- .github/workflows/actions/build-angular-server/action.yml | 2 +- .../workflows/actions/build-core-stencil-prerelease/action.yml | 2 +- .github/workflows/actions/build-core/action.yml | 2 +- .github/workflows/actions/build-react-router/action.yml | 2 +- .github/workflows/actions/build-react/action.yml | 2 +- .github/workflows/actions/build-vue-router/action.yml | 2 +- .github/workflows/actions/build-vue/action.yml | 2 +- .github/workflows/actions/test-angular-e2e/action.yml | 2 +- .github/workflows/actions/test-core-clean-build/action.yml | 2 +- .github/workflows/actions/test-core-lint/action.yml | 2 +- .github/workflows/actions/test-core-screenshot/action.yml | 2 +- .github/workflows/actions/test-core-spec/action.yml | 2 +- .github/workflows/actions/test-react-e2e/action.yml | 2 +- .github/workflows/actions/test-react-router-e2e/action.yml | 2 +- .github/workflows/actions/test-vue-e2e/action.yml | 2 +- .../workflows/actions/update-reference-screenshots/action.yml | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/actions/publish-npm/action.yml b/.github/actions/publish-npm/action.yml index 3e58ba9bcc6..0b5e9924719 100644 --- a/.github/actions/publish-npm/action.yml +++ b/.github/actions/publish-npm/action.yml @@ -22,7 +22,7 @@ runs: using: 'composite' steps: - name: 🟒 Configure Node for Publish - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ inputs.node-version }} registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/actions/build-angular-server/action.yml b/.github/workflows/actions/build-angular-server/action.yml index 0bf8392c2b5..a90da3676c1 100644 --- a/.github/workflows/actions/build-angular-server/action.yml +++ b/.github/workflows/actions/build-angular-server/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic Angular Server' runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/build-core-stencil-prerelease/action.yml b/.github/workflows/actions/build-core-stencil-prerelease/action.yml index 65043b88eaf..8b8183144ab 100644 --- a/.github/workflows/actions/build-core-stencil-prerelease/action.yml +++ b/.github/workflows/actions/build-core-stencil-prerelease/action.yml @@ -9,7 +9,7 @@ runs: using: 'composite' steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x diff --git a/.github/workflows/actions/build-core/action.yml b/.github/workflows/actions/build-core/action.yml index b7f2c2ef18f..efe15b8b4dd 100644 --- a/.github/workflows/actions/build-core/action.yml +++ b/.github/workflows/actions/build-core/action.yml @@ -9,7 +9,7 @@ runs: using: 'composite' steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - name: πŸ•ΈοΈ Install Dependencies diff --git a/.github/workflows/actions/build-react-router/action.yml b/.github/workflows/actions/build-react-router/action.yml index fd997ea2386..a003fd83d6c 100644 --- a/.github/workflows/actions/build-react-router/action.yml +++ b/.github/workflows/actions/build-react-router/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic React Router' runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/build-react/action.yml b/.github/workflows/actions/build-react/action.yml index 5de023a258f..b65292f5dc7 100644 --- a/.github/workflows/actions/build-react/action.yml +++ b/.github/workflows/actions/build-react/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic React' runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/build-vue-router/action.yml b/.github/workflows/actions/build-vue-router/action.yml index b2e375bb7ae..b5bb65c6f89 100644 --- a/.github/workflows/actions/build-vue-router/action.yml +++ b/.github/workflows/actions/build-vue-router/action.yml @@ -3,7 +3,7 @@ description: 'Builds Ionic Vue Router' runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/build-vue/action.yml b/.github/workflows/actions/build-vue/action.yml index 317f6f124ab..e660c31bbbd 100644 --- a/.github/workflows/actions/build-vue/action.yml +++ b/.github/workflows/actions/build-vue/action.yml @@ -3,7 +3,7 @@ description: 'Build Ionic Vue' runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/test-angular-e2e/action.yml b/.github/workflows/actions/test-angular-e2e/action.yml index 0b99e99f1e2..9c3ac716d53 100644 --- a/.github/workflows/actions/test-angular-e2e/action.yml +++ b/.github/workflows/actions/test-angular-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/test-core-clean-build/action.yml b/.github/workflows/actions/test-core-clean-build/action.yml index 1f78cfaef74..b69a485b33f 100644 --- a/.github/workflows/actions/test-core-clean-build/action.yml +++ b/.github/workflows/actions/test-core-clean-build/action.yml @@ -3,7 +3,7 @@ description: 'Test Core Clean Build' runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x diff --git a/.github/workflows/actions/test-core-lint/action.yml b/.github/workflows/actions/test-core-lint/action.yml index 35fc84da48a..8e81bd6a635 100644 --- a/.github/workflows/actions/test-core-lint/action.yml +++ b/.github/workflows/actions/test-core-lint/action.yml @@ -3,7 +3,7 @@ description: 'Test Core Lint' runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - name: πŸ•ΈοΈ Install Dependencies diff --git a/.github/workflows/actions/test-core-screenshot/action.yml b/.github/workflows/actions/test-core-screenshot/action.yml index 0c3965d632d..aef3b3620c6 100644 --- a/.github/workflows/actions/test-core-screenshot/action.yml +++ b/.github/workflows/actions/test-core-screenshot/action.yml @@ -13,7 +13,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/test-core-spec/action.yml b/.github/workflows/actions/test-core-spec/action.yml index af0684d243e..ee54ae604cf 100644 --- a/.github/workflows/actions/test-core-spec/action.yml +++ b/.github/workflows/actions/test-core-spec/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - name: πŸ•ΈοΈ Install Dependencies diff --git a/.github/workflows/actions/test-react-e2e/action.yml b/.github/workflows/actions/test-react-e2e/action.yml index ad5148d9151..d27dd9f836e 100644 --- a/.github/workflows/actions/test-react-e2e/action.yml +++ b/.github/workflows/actions/test-react-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/test-react-router-e2e/action.yml b/.github/workflows/actions/test-react-router-e2e/action.yml index 784e354465a..b4e627ee896 100644 --- a/.github/workflows/actions/test-react-router-e2e/action.yml +++ b/.github/workflows/actions/test-react-router-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/test-vue-e2e/action.yml b/.github/workflows/actions/test-vue-e2e/action.yml index 228732067e9..c0adfd409b9 100644 --- a/.github/workflows/actions/test-vue-e2e/action.yml +++ b/.github/workflows/actions/test-vue-e2e/action.yml @@ -6,7 +6,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - uses: ./.github/workflows/actions/download-archive diff --git a/.github/workflows/actions/update-reference-screenshots/action.yml b/.github/workflows/actions/update-reference-screenshots/action.yml index e6f0aa817a3..991913477bc 100644 --- a/.github/workflows/actions/update-reference-screenshots/action.yml +++ b/.github/workflows/actions/update-reference-screenshots/action.yml @@ -7,7 +7,7 @@ on: runs: using: 'composite' steps: - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - uses: actions/download-artifact@v6 From 3709bba41e3f8cb479bed851c57a4cbf00cb7c8f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Dec 2025 15:50:17 -0500 Subject: [PATCH 046/126] chore(deps): update actions/checkout action to v6.0.1 (#30832) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | patch | `v6.0.0` -> `v6.0.1` | --- ### Release Notes
actions/checkout (actions/checkout) ### [`v6.0.1`](https://redirect.github.com/actions/checkout/compare/v6.0.0...v6.0.1) [Compare Source](https://redirect.github.com/actions/checkout/compare/v6.0.0...v6.0.1)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../build-core-stencil-prerelease/action.yml | 2 +- .../workflows/actions/build-core/action.yml | 2 +- .github/workflows/build.yml | 30 +++++++++---------- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dev-build.yml | 2 +- .github/workflows/nightly.yml | 2 +- .github/workflows/release-ionic.yml | 16 +++++----- .github/workflows/release.yml | 4 +-- .github/workflows/stencil-nightly.yml | 30 +++++++++---------- .github/workflows/update-screenshots.yml | 6 ++-- 10 files changed, 48 insertions(+), 48 deletions(-) diff --git a/.github/workflows/actions/build-core-stencil-prerelease/action.yml b/.github/workflows/actions/build-core-stencil-prerelease/action.yml index 8b8183144ab..7bfb3fdfcb5 100644 --- a/.github/workflows/actions/build-core-stencil-prerelease/action.yml +++ b/.github/workflows/actions/build-core-stencil-prerelease/action.yml @@ -8,7 +8,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x diff --git a/.github/workflows/actions/build-core/action.yml b/.github/workflows/actions/build-core/action.yml index efe15b8b4dd..71fc61f6991 100644 --- a/.github/workflows/actions/build-core/action.yml +++ b/.github/workflows/actions/build-core/action.yml @@ -8,7 +8,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3c423cc569e..d3d52e048be 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: build-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-core with: ionicons-version: ${{ inputs.ionicons_npm_release_tag }} @@ -31,21 +31,21 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-core-clean-build test-core-lint: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-core-lint test-core-spec: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-core-spec test-core-screenshot: @@ -62,7 +62,7 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -90,14 +90,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-vue build-vue-router: needs: [build-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-vue-router test-vue-e2e: @@ -108,7 +108,7 @@ jobs: needs: [build-vue, build-vue-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-vue-e2e with: app: ${{ matrix.apps }} @@ -126,14 +126,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-angular build-angular-server: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-angular-server test-angular-e2e: @@ -144,7 +144,7 @@ jobs: needs: [build-angular, build-angular-server] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-angular-e2e with: app: ${{ matrix.apps }} @@ -162,14 +162,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-react build-react-router: needs: [build-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-react-router test-react-router-e2e: @@ -180,7 +180,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-react-router-e2e with: app: ${{ matrix.apps }} @@ -202,7 +202,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-react-e2e with: app: ${{ matrix.apps }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 272e705cf65..2844a4f9b01 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -14,7 +14,7 @@ jobs: permissions: security-events: write steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: github/codeql-action/init@v4 with: languages: javascript diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index 0b4856a399d..2c459097e67 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -13,7 +13,7 @@ jobs: outputs: dev-hash: ${{ steps.create-dev-hash.outputs.DEV_HASH }} steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # A 1 is required before the timestamp # as lerna will fail when there is a leading 0 # See https://github.com/lerna/lerna/issues/2840 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index fbbdfb8ac93..dc2fa5860a9 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -13,7 +13,7 @@ jobs: outputs: nightly-hash: ${{ steps.create-nightly-hash.outputs.NIGHTLY_HASH }} steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # A 1 is required before the timestamp # as lerna will fail when there is a leading 0 # See https://github.com/lerna/lerna/issues/2840 diff --git a/.github/workflows/release-ionic.yml b/.github/workflows/release-ionic.yml index e52b8a023b5..c3f9e5740b6 100644 --- a/.github/workflows/release-ionic.yml +++ b/.github/workflows/release-ionic.yml @@ -23,7 +23,7 @@ jobs: release-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/actions/publish-npm with: scope: '@ionic/core' @@ -48,7 +48,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Restore @ionic/docs built cache uses: ./.github/workflows/actions/download-archive with: @@ -67,7 +67,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -93,7 +93,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -118,7 +118,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -143,7 +143,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -163,7 +163,7 @@ jobs: needs: [release-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -188,7 +188,7 @@ jobs: needs: [release-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 96640319e59..a3bb4491cf5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -58,7 +58,7 @@ jobs: contents: write id-token: write steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: token: ${{ secrets.IONITRON_TOKEN }} fetch-depth: 0 @@ -89,7 +89,7 @@ jobs: contents: write id-token: write steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # Pull the latest version of the reference # branch instead of the revision that triggered # the workflow otherwise we won't get the commit diff --git a/.github/workflows/stencil-nightly.yml b/.github/workflows/stencil-nightly.yml index 6af9474e350..b00ac8c42a0 100644 --- a/.github/workflows/stencil-nightly.yml +++ b/.github/workflows/stencil-nightly.yml @@ -26,7 +26,7 @@ jobs: build-core-with-stencil-nightly: runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-core-stencil-prerelease with: stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} @@ -35,21 +35,21 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-core-clean-build test-core-lint: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-core-lint test-core-spec: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-core-spec with: stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} @@ -72,7 +72,7 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -100,14 +100,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-vue build-vue-router: needs: [build-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-vue-router test-vue-e2e: @@ -118,7 +118,7 @@ jobs: needs: [build-vue, build-vue-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-vue-e2e with: app: ${{ matrix.apps }} @@ -136,14 +136,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-angular build-angular-server: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-angular-server test-angular-e2e: @@ -154,7 +154,7 @@ jobs: needs: [build-angular, build-angular-server] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-angular-e2e with: app: ${{ matrix.apps }} @@ -172,14 +172,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-react build-react-router: needs: [build-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-react-router test-react-router-e2e: @@ -190,7 +190,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-react-router-e2e with: app: ${{ matrix.apps }} @@ -212,7 +212,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-react-e2e with: app: ${{ matrix.apps }} diff --git a/.github/workflows/update-screenshots.yml b/.github/workflows/update-screenshots.yml index 8bd687d5b20..eefcddcb893 100644 --- a/.github/workflows/update-screenshots.yml +++ b/.github/workflows/update-screenshots.yml @@ -26,7 +26,7 @@ jobs: build-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/build-core test-core-screenshot: @@ -47,7 +47,7 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -59,7 +59,7 @@ jobs: runs-on: ubuntu-latest needs: [test-core-screenshot] steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # Normally, we could just push with the # default GITHUB_TOKEN, but that will # not cause the build workflow From 57687623aa8e62060271f4ff01490dae2b114815 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Mon, 8 Dec 2025 09:16:10 -0800 Subject: [PATCH 047/126] chore(renovate): configure node version consistency (#30816) Issue number: N/A --------- ## What is the current behavior? Core does not indicate what node version we should be running, which can lead to inconsistent versions between local and workflows. These inconsistencies can lead to workflow failures. ## What is the new behavior? - Provides the node version within package - Updates the node version of workflows and package at the same time ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information --- core/package.json | 3 +++ renovate.json5 | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/core/package.json b/core/package.json index b31b79e32de..b0f0db7b189 100644 --- a/core/package.json +++ b/core/package.json @@ -2,6 +2,9 @@ "name": "@ionic/core", "version": "8.7.11", "description": "Base components for Ionic", + "engines": { + "node": "24.x" + }, "keywords": [ "ionic", "framework", diff --git a/renovate.json5 b/renovate.json5 index a14bdb1860c..8435d337f6c 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -96,6 +96,15 @@ "package.json" ], enabled: false + }, + { + /** + * Group Node version updates into a single PR to update + * the workflows and core package.json simultaneously. + */ + matchDatasources: ["node-version"], + matchPackagePatterns: ["node"], + groupName: "node-version-updates" } ], dependencyDashboard: false, From 39a0be848c9d50872a420102149aad75480d326f Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Mon, 8 Dec 2025 13:56:29 -0500 Subject: [PATCH 048/126] docs(testing): add a note on flaky tests to usage instructions (#30843) Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- docs/core/testing/usage-instructions.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/core/testing/usage-instructions.md b/docs/core/testing/usage-instructions.md index 66564468a44..cccac3b8a55 100644 --- a/docs/core/testing/usage-instructions.md +++ b/docs/core/testing/usage-instructions.md @@ -186,7 +186,21 @@ test.describe.only('group of tests', () => { > [!IMPORTANT] > After debugging, make sure to remove the `.only` suffix to ensure all tests run again during normal execution. -#### 3. Pausing Test Execution +#### 3. Repeating Tests to Reproduce Flaky Failures + +Flaky tests may not fail consistently. To help reproduce intermittent failures locally, you can use Playwright's `--repeat-each` flag to run the same test multiple times in a row. + +This is especially useful when CI reports a failure you cannot reproduce on your first local run. + +**Example:** + +```shell +npm run test.e2e.docker.update-snapshots src/components/radio/test/a11y/radio.e2e.ts -- --repeat-each=10 +``` + +This runs the test 10 times, increasing the chance of catching the flaky behavior. + +#### 4. Pausing Test Execution Additionally, you can pause execution of a test by using the `page.pause()` method. This pauses the script execution and allows you to manually inspect the page in the browser. From 3129565e4ebee327adb6045478b30fa06501a8e9 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Mon, 8 Dec 2025 12:23:53 -0800 Subject: [PATCH 049/126] test(scripts): update palette query (#30842) Issue number: N/A --------- ## What is the current behavior? `high-contrast` and `high-contrast-dark` palettes were not working when requested through a URL query or hash for a test page. This was due to the `match` not accepting hyphens so it would only save `high` which is not a valid palette. ## What is the new behavior? - Updated `match` to accept hyphens - Added an error if an invalid palette is provided - Added a palette fallback if an invalid palette is provided - Added a class check for high contrast and high contrast dark ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information How to test: 1. Verify that `?palette=high-contrast`, `?palette=high-contrast-dark`, `#palette=high-contrast`, and `#palette=high-contrast-dark` render correctly (I recommend using [button basic page](https://ionic-framework-git-scripts-ionic1.vercel.app/src/components/button/test/basic/)) --------- Co-authored-by: Brandy Smith --- core/scripts/testing/scripts.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/core/scripts/testing/scripts.js b/core/scripts/testing/scripts.js index 965bd8183e3..ff8236c6a0f 100644 --- a/core/scripts/testing/scripts.js +++ b/core/scripts/testing/scripts.js @@ -57,11 +57,19 @@ * Values can be `light`, `dark`, `high-contrast`, * or `high-contrast-dark`. Default to `light` for tests. */ - const paletteQuery = window.location.search.match(/palette=([a-z]+)/); - const paletteHash = window.location.hash.match(/palette=([a-z]+)/); + const validPalettes = ['light', 'dark', 'high-contrast', 'high-contrast-dark']; + const paletteQuery = window.location.search.match(/palette=([a-z-]+)/); + const paletteHash = window.location.hash.match(/palette=([a-z-]+)/); const darkClass = document.body?.classList.contains('ion-palette-dark') ? 'dark' : null; + const highContrastClass = document.body?.classList.contains('ion-palette-high-contrast') ? 'high-contrast' : null; + const highContrastDarkClass = darkClass && highContrastClass ? 'high-contrast-dark' : null; - const paletteName = paletteQuery?.[1] || paletteHash?.[1] || darkClass || 'light'; + let paletteName = paletteQuery?.[1] || paletteHash?.[1] || highContrastDarkClass || darkClass || highContrastClass || 'light'; + + if (!validPalettes.includes(paletteName)) { + console.warn(`Invalid palette name: '${paletteName}'. Falling back to 'light' palette.`); + paletteName = 'light'; + } if (paletteName !== 'light') { const linkTag = document.createElement('link'); From 1c89cf06ac959f9c9a35a66f811227c244d3198b Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Mon, 8 Dec 2025 12:50:46 -0800 Subject: [PATCH 050/126] fix(select, action-sheet): use radio role for options (#30769) Issue number: internal --------- ## What is the current behavior? The screen reader does not announce when an option is selected within the action sheet interface. This is because the action sheet uses standard buttons, which do not support a detectable selected state via native properties or ARIA attributes like `aria-checked` or `aria-selected`, creating an inconsistent user experience across different interface types. ## What is the new behavior? - Updated the action sheet buttons to accept `role="radio"` - Added keyboard navigation to follow the pattern for radio group - Added test ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information [Basic](https://ionic-framework-git-fw-6818-ionic1.vercel.app/src/components/select/test/basic/) --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Co-authored-by: Shane Co-authored-by: Brandy Smith --- .../components/action-sheet/action-sheet.tsx | 257 ++++++++++++++++-- .../test/a11y/action-sheet.e2e.ts | 55 ++++ .../action-sheet/test/a11y/index.html | 27 ++ core/src/components/select/select.tsx | 7 +- .../components/select/test/a11y/select.e2e.ts | 2 +- 5 files changed, 327 insertions(+), 21 deletions(-) diff --git a/core/src/components/action-sheet/action-sheet.tsx b/core/src/components/action-sheet/action-sheet.tsx index dcd7c03847b..beda9b01ac0 100644 --- a/core/src/components/action-sheet/action-sheet.tsx +++ b/core/src/components/action-sheet/action-sheet.tsx @@ -1,5 +1,5 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; -import { Watch, Component, Element, Event, Host, Method, Prop, h, readTask } from '@stencil/core'; +import { Watch, Component, Element, Event, Host, Listen, Method, Prop, State, h, readTask } from '@stencil/core'; import type { Gesture } from '@utils/gesture'; import { createButtonActiveGesture } from '@utils/gesture/button-active'; import { raf } from '@utils/helpers'; @@ -46,11 +46,18 @@ export class ActionSheet implements ComponentInterface, OverlayInterface { private wrapperEl?: HTMLElement; private groupEl?: HTMLElement; private gesture?: Gesture; + private hasRadioButtons = false; presented = false; lastFocus?: HTMLElement; animation?: any; + /** + * The ID of the currently active/selected radio button. + * Used for keyboard navigation and ARIA attributes. + */ + @State() activeRadioId?: string; + @Element() el!: HTMLIonActionSheetElement; /** @internal */ @@ -81,6 +88,22 @@ export class ActionSheet implements ComponentInterface, OverlayInterface { * An array of buttons for the action sheet. */ @Prop() buttons: (ActionSheetButton | string)[] = []; + @Watch('buttons') + buttonsChanged() { + const radioButtons = this.getRadioButtons(); + this.hasRadioButtons = radioButtons.length > 0; + + // Initialize activeRadioId when buttons change + if (this.hasRadioButtons) { + const checkedButton = radioButtons.find((b) => b.htmlAttributes?.['aria-checked'] === 'true'); + + if (checkedButton) { + const allButtons = this.getButtons(); + const checkedIndex = allButtons.indexOf(checkedButton); + this.activeRadioId = this.getButtonId(checkedButton, checkedIndex); + } + } + } /** * Additional classes to apply for custom CSS. If multiple classes are @@ -277,12 +300,53 @@ export class ActionSheet implements ComponentInterface, OverlayInterface { return true; } + /** + * Get all buttons regardless of role. + */ private getButtons(): ActionSheetButton[] { return this.buttons.map((b) => { return typeof b === 'string' ? { text: b } : b; }); } + /** + * Get all radio buttons (buttons with role="radio"). + */ + private getRadioButtons(): ActionSheetButton[] { + return this.getButtons().filter((b) => { + const role = b.htmlAttributes?.role; + return role === 'radio' && !isCancel(role); + }); + } + + /** + * Handle radio button selection and update aria-checked state. + * + * @param button The radio button that was selected. + */ + private selectRadioButton(button: ActionSheetButton) { + const buttonId = this.getButtonId(button); + + // Set the active radio ID (this will trigger a re-render and update aria-checked) + this.activeRadioId = buttonId; + } + + /** + * Get or generate an ID for a button. + * + * @param button The button for which to get the ID. + * @param index Optional index of the button in the buttons array. + * @returns The ID of the button. + */ + private getButtonId(button: ActionSheetButton, index?: number): string { + if (button.id) { + return button.id; + } + const allButtons = this.getButtons(); + const buttonIndex = index !== undefined ? index : allButtons.indexOf(button); + return `action-sheet-button-${this.overlayIndex}-${buttonIndex}`; + } + private onBackdropTap = () => { this.dismiss(undefined, BACKDROP); }; @@ -295,6 +359,96 @@ export class ActionSheet implements ComponentInterface, OverlayInterface { } }; + /** + * When the action sheet has radio buttons, we want to follow the + * keyboard navigation pattern for radio groups: + * - Arrow Down/Right: Move to the next radio button (wrap to first if at end) + * - Arrow Up/Left: Move to the previous radio button (wrap to last if at start) + * - Space/Enter: Select the focused radio button and trigger its handler + */ + @Listen('keydown') + onKeydown(ev: KeyboardEvent) { + // Only handle keyboard navigation if we have radio buttons + if (!this.hasRadioButtons || !this.presented) { + return; + } + + const target = ev.target as HTMLElement; + + // Ignore if the target element is not within the action sheet or not a radio button + if ( + !this.el.contains(target) || + !target.classList.contains('action-sheet-button') || + target.getAttribute('role') !== 'radio' + ) { + return; + } + + // Get all radio button elements and filter out disabled ones + const radios = Array.from(this.el.querySelectorAll('.action-sheet-button[role="radio"]')).filter( + (el) => !(el as HTMLButtonElement).disabled + ) as HTMLButtonElement[]; + const currentIndex = radios.findIndex((radio) => radio.id === target.id); + + if (currentIndex === -1) { + return; + } + + const allButtons = this.getButtons(); + const radioButtons = this.getRadioButtons(); + /** + * Build a map of button element IDs to their ActionSheetButton + * config objects. + * This allows us to quickly look up which button config corresponds + * to a DOM element when handling keyboard navigation + * (e.g., whenuser presses Space/Enter or arrow keys). + * The key is the ID that was set on the DOM element during render, + * and the value is the ActionSheetButton config that contains the + * handler and other properties. + */ + const buttonIdMap = new Map(); + + radioButtons.forEach((b) => { + const allIndex = allButtons.indexOf(b); + const buttonId = this.getButtonId(b, allIndex); + buttonIdMap.set(buttonId, b); + }); + + let nextEl: HTMLButtonElement | undefined; + + if (['ArrowDown', 'ArrowRight'].includes(ev.key)) { + ev.preventDefault(); + ev.stopPropagation(); + + nextEl = currentIndex === radios.length - 1 ? radios[0] : radios[currentIndex + 1]; + } else if (['ArrowUp', 'ArrowLeft'].includes(ev.key)) { + ev.preventDefault(); + ev.stopPropagation(); + + nextEl = currentIndex === 0 ? radios[radios.length - 1] : radios[currentIndex - 1]; + } else if (ev.key === ' ' || ev.key === 'Enter') { + ev.preventDefault(); + ev.stopPropagation(); + + const button = buttonIdMap.get(target.id); + if (button) { + this.selectRadioButton(button); + this.buttonClick(button); + } + + return; + } + + // Focus the next radio button + if (nextEl) { + const button = buttonIdMap.get(nextEl.id); + if (button) { + this.selectRadioButton(button); + nextEl.focus(); + } + } + } + connectedCallback() { prepareOverlay(this.el); this.triggerChanged(); @@ -312,6 +466,8 @@ export class ActionSheet implements ComponentInterface, OverlayInterface { if (!this.htmlAttributes?.id) { setOverlayId(this.el); } + // Initialize activeRadioId for radio buttons + this.buttonsChanged(); } componentDidLoad() { @@ -355,8 +511,82 @@ export class ActionSheet implements ComponentInterface, OverlayInterface { this.triggerChanged(); } + private renderActionSheetButtons(filteredButtons: ActionSheetButton[]) { + const mode = getIonMode(this); + const { activeRadioId } = this; + + return filteredButtons.map((b, index) => { + const isRadio = b.htmlAttributes?.role === 'radio'; + const buttonId = this.getButtonId(b, index); + const radioButtons = this.getRadioButtons(); + const isActiveRadio = isRadio && buttonId === activeRadioId; + const isFirstRadio = isRadio && b === radioButtons[0]; + + // For radio buttons, set tabindex: 0 for the active one, -1 for others + // For non-radio buttons, use default tabindex (undefined, which means 0) + + /** + * For radio buttons, set tabindex based on activeRadioId + * - If the button is the active radio, tabindex is 0 + * - If no radio is active, the first radio button should have tabindex 0 + * - All other radio buttons have tabindex -1 + * For non-radio buttons, use default tabindex (undefined, which means 0) + */ + let tabIndex: number | undefined; + + if (isRadio) { + // Focus on the active radio button + if (isActiveRadio) { + tabIndex = 0; + } else if (!activeRadioId && isFirstRadio) { + // No active radio, first radio gets focus + tabIndex = 0; + } else { + // All other radios are not focusable + tabIndex = -1; + } + } else { + tabIndex = undefined; + } + + // For radio buttons, set aria-checked based on activeRadioId + // Otherwise, use the value from htmlAttributes if provided + const htmlAttrs = { ...b.htmlAttributes }; + if (isRadio) { + htmlAttrs['aria-checked'] = isActiveRadio ? 'true' : 'false'; + } + + return ( + + ); + }); + } + render() { - const { header, htmlAttributes, overlayIndex } = this; + const { header, htmlAttributes, overlayIndex, hasRadioButtons } = this; const mode = getIonMode(this); const allButtons = this.getButtons(); const cancelButton = allButtons.find((b) => b.role === 'cancel'); @@ -388,7 +618,11 @@ export class ActionSheet implements ComponentInterface, OverlayInterface {
(this.wrapperEl = el)}>
-
(this.groupEl = el)}> +
(this.groupEl = el)} + role={hasRadioButtons ? 'radiogroup' : undefined} + > {header !== undefined && (
{this.subHeader}
}
)} - {buttons.map((b) => ( - - ))} + {this.renderActionSheetButtons(buttons)}
{cancelButton && ( diff --git a/core/src/components/action-sheet/test/a11y/action-sheet.e2e.ts b/core/src/components/action-sheet/test/a11y/action-sheet.e2e.ts index abe16b55a75..0d6da17d321 100644 --- a/core/src/components/action-sheet/test/a11y/action-sheet.e2e.ts +++ b/core/src/components/action-sheet/test/a11y/action-sheet.e2e.ts @@ -134,3 +134,58 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { }); }); }); + +/** + * This behavior does not vary across modes/directions. + */ +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('action-sheet: radio buttons'), () => { + test('should render action sheet with radio buttons correctly', async ({ page }) => { + await page.goto(`/src/components/action-sheet/test/a11y`, config); + + const ionActionSheetDidPresent = await page.spyOnEvent('ionActionSheetDidPresent'); + const button = page.locator('#radioButtons'); + + await button.click(); + await ionActionSheetDidPresent.next(); + + const actionSheet = page.locator('ion-action-sheet'); + + const radioButtons = actionSheet.locator('.action-sheet-button[role="radio"]'); + await expect(radioButtons).toHaveCount(2); + }); + + test('should navigate radio buttons with keyboard', async ({ page, pageUtils }) => { + await page.goto(`/src/components/action-sheet/test/a11y`, config); + + const ionActionSheetDidPresent = await page.spyOnEvent('ionActionSheetDidPresent'); + const button = page.locator('#radioButtons'); + + await button.click(); + await ionActionSheetDidPresent.next(); + + // Focus on the radios + await pageUtils.pressKeys('Tab'); + + // Verify the first focusable radio button is focused + let focusedElement = await page.evaluate(() => document.activeElement?.textContent?.trim()); + expect(focusedElement).toBe('Option 2'); + + // Navigate to the next radio button + await page.keyboard.press('ArrowDown'); + + // Verify the first radio button is focused again (wrap around) + focusedElement = await page.evaluate(() => document.activeElement?.textContent?.trim()); + expect(focusedElement).toBe('Option 1'); + + // Navigate to the next radio button + await page.keyboard.press('ArrowDown'); + + // Navigate to the cancel button + await pageUtils.pressKeys('Tab'); + + focusedElement = await page.evaluate(() => document.activeElement?.textContent?.trim()); + expect(focusedElement).toBe('Cancel'); + }); + }); +}); diff --git a/core/src/components/action-sheet/test/a11y/index.html b/core/src/components/action-sheet/test/a11y/index.html index 8bb0a4ad9d7..181ada7fba7 100644 --- a/core/src/components/action-sheet/test/a11y/index.html +++ b/core/src/components/action-sheet/test/a11y/index.html @@ -27,6 +27,7 @@

Action Sheet - A11y

+ diff --git a/core/src/components/select/select.tsx b/core/src/components/select/select.tsx index ed967b9f83b..b8de35c4843 100644 --- a/core/src/components/select/select.tsx +++ b/core/src/components/select/select.tsx @@ -556,14 +556,19 @@ export class Select implements ComponentInterface { .filter((cls) => cls !== 'hydrated') .join(' '); const optClass = `${OPTION_CLASS} ${copyClasses}`; + const isSelected = isOptionSelected(selectValue, value, this.compareWith); return { - role: isOptionSelected(selectValue, value, this.compareWith) ? 'selected' : '', + role: isSelected ? 'selected' : '', text: option.textContent, cssClass: optClass, handler: () => { this.setValue(value); }, + htmlAttributes: { + 'aria-checked': isSelected ? 'true' : 'false', + role: 'radio', + }, } as ActionSheetButton; }); diff --git a/core/src/components/select/test/a11y/select.e2e.ts b/core/src/components/select/test/a11y/select.e2e.ts index 063add891dc..bae522faf64 100644 --- a/core/src/components/select/test/a11y/select.e2e.ts +++ b/core/src/components/select/test/a11y/select.e2e.ts @@ -3,7 +3,7 @@ import { expect } from '@playwright/test'; import { configs, test } from '@utils/test/playwright'; configs({ directions: ['ltr'], palettes: ['light', 'dark'] }).forEach(({ title, config }) => { - test.describe(title('textarea: a11y'), () => { + test.describe(title('select: a11y'), () => { test('default layout should not have accessibility violations', async ({ page }) => { await page.setContent( ` From 6643f6a115664299d7874a2eb77eadb396581082 Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Wed, 10 Dec 2025 15:34:08 -0500 Subject: [PATCH 051/126] chore(angular): add @types/node dep to ng17 test app (#30855) Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- .../angular/test/apps/ng17/package-lock.json | 59 +++++++++++++------ packages/angular/test/apps/ng17/package.json | 1 + 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/packages/angular/test/apps/ng17/package-lock.json b/packages/angular/test/apps/ng17/package-lock.json index 10d9ab64a99..0df860d50aa 100644 --- a/packages/angular/test/apps/ng17/package-lock.json +++ b/packages/angular/test/apps/ng17/package-lock.json @@ -40,6 +40,7 @@ "@angular/language-service": "^17.0.2", "@playwright/test": "^1.54.2", "@types/express": "^4.17.7", + "@types/node": "^18.19.0", "@types/ws": "8.5.3", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", @@ -567,17 +568,6 @@ "node": ">=12" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@types/node": { - "version": "20.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", - "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/@vitejs/plugin-basic-ssl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", @@ -595,6 +585,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", "dev": true, + "peer": true, "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", @@ -848,6 +839,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.0.2.tgz", "integrity": "sha512-32RHWhTgFLMonI3kRdstACay/nvetfxXjdwcTtABjcvBoND7nD9GMhkISQdgS+hcR/IhgXxaPidq8f2UAY5DBw==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -863,6 +855,7 @@ "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.0.0.tgz", "integrity": "sha512-VzKYmN+1wSE2wLBEFu/NHSrRQbeaKkEDO9aZxd7nAnxC5T1Zcva7dfqZIXMHXH2HESYAZCvOS8ikBE/7DCtWWw==", "dev": true, + "peer": true, "dependencies": { "@angular-devkit/architect": "0.1700.0", "@angular-devkit/core": "17.0.0", @@ -896,6 +889,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.0.2.tgz", "integrity": "sha512-hCW0njHgrcwTWNoKZDwf02DnhYLVWNXM2FMw66MKpfxTp7McSyaXjGBU9/hchW3dZJ0xTwyxoyoqJFoHYvg0yg==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -911,6 +905,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.0.2.tgz", "integrity": "sha512-ewUFbKhMEhAmw2dGfk0ImhTlyrO2y4pJSKIZdFrkR1d0HiJX8bCHUdTiiR/2jeP7w2eamjXj15Rptb+iZZes2Q==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -931,6 +926,7 @@ "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.0.2.tgz", "integrity": "sha512-IUYL3Yz5RbR0Z0/x7it4GK3sMb2qVihxu0tlgfUW53P1Vi6nU/Zda0bCJTu6Z64qEtS8zwCwF1Ekomuq6UaiKg==", "dev": true, + "peer": true, "dependencies": { "@babel/core": "7.23.2", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -958,6 +954,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.0.2.tgz", "integrity": "sha512-MjDxWeyn3Txi0qo/V/I+B/gndh0uptQ0XWgBRwOx6Wcr5zRGeZIFlXBxPpyXnGTlJkeyErsTN7FfFCZ4C3kCPA==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -973,6 +970,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.0.2.tgz", "integrity": "sha512-w1QKifaVG4daxUktcBNZqBtOH1vn8t0YiwDR3woEdUYt0XYKMipfDzQfyIK+6fIVPOJUd42pRns1nbWJQHOInA==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -999,6 +997,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.0.2.tgz", "integrity": "sha512-eTnPILEA/eAMkVUR/+g6fWhhMTmnmOzcZSGX/bBgQcvOhayZrDDxA6/Qf+jIB4RwC0wd3KA9zT5BCMmNojoUsg==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -1037,6 +1036,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-17.0.2.tgz", "integrity": "sha512-+1uCnAw7Ql2r4BDnfaRvQrXI1H5qUB/1f8CwCjaVoIn7kLJs/ps4I0WbOVtujJ2VPnxIggfVtenXRRMlungZlg==", + "peer": true, "dependencies": { "tslib": "^2.3.0", "xhr2": "^0.2.0" @@ -1056,6 +1056,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.0.2.tgz", "integrity": "sha512-A1Ulv4qBAtJyK5g1yBlK1qZHe+KaaL5vMPAaPWUxICH8lHEodDkJlbYAUI2e4VL2BN7zBmdOep6tlBKPmHY3mw==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -1115,6 +1116,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", @@ -4492,10 +4494,14 @@ "dev": true }, "node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true + "version": "18.19.130", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", + "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/node-forge": { "version": "1.3.9", @@ -4617,6 +4623,7 @@ "version": "6.10.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.10.0.tgz", "integrity": "sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.10.0", "@typescript-eslint/types": "6.10.0", @@ -5024,6 +5031,7 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5095,6 +5103,7 @@ "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -5822,6 +5831,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001541", "electron-to-chromium": "^1.4.535", @@ -7605,6 +7615,7 @@ "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "peer": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -9838,6 +9849,7 @@ "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, + "peer": true, "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -11135,6 +11147,7 @@ "integrity": "sha512-VShJISKCYt3iVJoMUPZiv67+0tiItxWMnfVmTmPZPio2Fu+wGc9U4ijjPxcmp2RJmLRaxkB9cn5rlrAvkIrNMA==", "dev": true, "hasInstallScript": true, + "peer": true, "dependencies": { "@nrwl/tao": "17.0.3", "@yarnpkg/lockfile": "^1.1.0", @@ -12111,6 +12124,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -12856,6 +12870,7 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -12889,6 +12904,7 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", "dev": true, + "peer": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -13913,6 +13929,7 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", "dev": true, + "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -13965,6 +13982,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -14275,6 +14293,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -14332,9 +14351,7 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -14586,6 +14603,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dev": true, + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -14633,6 +14651,7 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, + "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", @@ -14717,6 +14736,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, + "peer": true, "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -14891,6 +14911,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -14912,6 +14933,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -15251,6 +15273,7 @@ "version": "0.14.2", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.2.tgz", "integrity": "sha512-X4U7J1isDhoOmHmFWiLhloWc2lzMkdnumtfQ1LXzf/IOZp5NQYuMUTaviVzG/q1ugMBIXzin2AqeVJUoSEkNyQ==", + "peer": true, "dependencies": { "tslib": "^2.3.0" } diff --git a/packages/angular/test/apps/ng17/package.json b/packages/angular/test/apps/ng17/package.json index 63e0a1892ec..bea003e821e 100644 --- a/packages/angular/test/apps/ng17/package.json +++ b/packages/angular/test/apps/ng17/package.json @@ -48,6 +48,7 @@ "@angular/language-service": "^17.0.2", "@playwright/test": "^1.54.2", "@types/express": "^4.17.7", + "@types/node": "^18.19.0", "@types/ws": "8.5.3", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", From 99dcf3810a0c32416996d1e992ddf63359965cfc Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Wed, 10 Dec 2025 15:56:59 -0500 Subject: [PATCH 052/126] fix(popover): recalculate the content dimensions after the header has fully loaded (#30853) Issue number: internal --------- ## What is the current behavior? A translucent header in a popover does not consistently render as translucent upon presenting due to the `offset-top` of the content being set to `0`. ## What is the new behavior? Watch the header for height changes using `ResizeObserver` and recalculate the content dimensions when the header height is greater than `0`. ## Does this introduce a breaking change? - [ ] Yes - [x] No --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/src/components.d.ts | 4 +++ core/src/components/content/content.tsx | 11 +++++++ core/src/components/popover/popover.tsx | 41 +++++++++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 7721801eb60..5e47667392b 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -868,6 +868,10 @@ export namespace Components { * Get the element where the actual scrolling takes place. This element can be used to subscribe to `scroll` events or manually modify `scrollTop`. However, it's recommended to use the API provided by `ion-content`: i.e. Using `ionScroll`, `ionScrollStart`, `ionScrollEnd` for scrolling events and `scrollToPoint()` to scroll the content into a certain point. */ "getScrollElement": () => Promise; + /** + * Recalculate content dimensions. Called by overlays (e.g., popover) when sibling elements like headers or footers have finished rendering and their heights are available, ensuring accurate offset-top calculations. + */ + "recalculateDimensions": () => Promise; /** * Scroll by a specified X/Y distance in the component. * @param x The amount to scroll by on the horizontal axis. diff --git a/core/src/components/content/content.tsx b/core/src/components/content/content.tsx index 74e44c63597..361939f7c27 100644 --- a/core/src/components/content/content.tsx +++ b/core/src/components/content/content.tsx @@ -254,6 +254,17 @@ export class Content implements ComponentInterface { } } + /** + * Recalculate content dimensions. Called by overlays (e.g., popover) when + * sibling elements like headers or footers have finished rendering and their + * heights are available, ensuring accurate offset-top calculations. + * @internal + */ + @Method() + async recalculateDimensions(): Promise { + readTask(() => this.readDimensions()); + } + private readDimensions() { const page = getPageElement(this.el); const top = Math.max(this.el.offsetTop, 0); diff --git a/core/src/components/popover/popover.tsx b/core/src/components/popover/popover.tsx index 9b07ab2f275..af0e613297d 100644 --- a/core/src/components/popover/popover.tsx +++ b/core/src/components/popover/popover.tsx @@ -64,6 +64,7 @@ export class Popover implements ComponentInterface, PopoverInterface { private destroyTriggerInteraction?: () => void; private destroyKeyboardInteraction?: () => void; private destroyDismissInteraction?: () => void; + private headerResizeObserver?: ResizeObserver; private inline = false; private workingDelegate?: FrameworkDelegate; @@ -361,6 +362,11 @@ export class Popover implements ComponentInterface, PopoverInterface { if (destroyTriggerInteraction) { destroyTriggerInteraction(); } + + if (this.headerResizeObserver) { + this.headerResizeObserver.disconnect(); + this.headerResizeObserver = undefined; + } } componentWillLoad() { @@ -491,6 +497,8 @@ export class Popover implements ComponentInterface, PopoverInterface { inline ); + this.recalculateContentOnHeaderReady(); + if (!this.keyboardEvents) { this.configureKeyboardInteraction(); } @@ -540,6 +548,39 @@ export class Popover implements ComponentInterface, PopoverInterface { unlock(); } + /** + * Watch the header for height changes and trigger content dimension + * recalculation when the header has a height > 0. This sets the offset-top + * of the content to the height of the header correctly. + */ + private recalculateContentOnHeaderReady() { + const popoverContent = this.el.shadowRoot?.querySelector('.popover-content'); + if (!popoverContent) { + return; + } + + const contentContainer = this.usersElement || popoverContent; + + const header = contentContainer.querySelector('ion-header') as HTMLElement | null; + const contentElements = contentContainer.querySelectorAll('ion-content'); + + if (!header || contentElements.length === 0) { + return; + } + + this.headerResizeObserver = new ResizeObserver(async () => { + if (header.offsetHeight > 0) { + this.headerResizeObserver?.disconnect(); + this.headerResizeObserver = undefined; + for (const contentEl of contentElements) { + await contentEl.recalculateDimensions(); + } + } + }); + + this.headerResizeObserver.observe(header); + } + /** * Dismiss the popover overlay after it has been presented. * This is a no-op if the overlay has not been presented yet. If you want From b9e3cf0f5aae79a1f27a07b102c77e51f24825f4 Mon Sep 17 00:00:00 2001 From: Shane Date: Wed, 10 Dec 2025 13:08:48 -0800 Subject: [PATCH 053/126] fix(modal): allow interaction with parent content through sheet modals in child routes (#30839) Issue number: resolves #30700 --------- ## What is the current behavior? When a sheet modal with showBackdrop=false is rendered in a child route (nested ion-router-outlet), the parent content becomes non-interactive. Clicks on buttons or other interactive elements in the parent component are blocked, even though showBackdrop=false should allow background interaction. Two separate issues contributed to this bug: 1. **Root locking with `backdropBreakpoint`**: The `shouldLockRoot` logic in `overlays.ts` didn't account for `backdropBreakpoint`. Modals with `backdropBreakpoint > 0` were still locking the root with `aria-hidden`, even though developers expect background interaction when the modal is below the backdrop breakpoint. 2. **Child route wrapper blocking**: When a modal is in a child route, the child route's page wrapper (`ion-page`) and its parent `ion-router-outlet` remain in the DOM with `position: absolute` covering the viewport. Even after the modal is moved to `ion-app` and has `pointer-events: none`, these wrapper elements block clicks to the parent page's content. This issue stems from [#30563](https://github.com/ionic-team/ionic-framework/pull/30563), which added root-locking behavior that didn't account for modals that allow background interaction. A partial fix in [#30689](https://github.com/ionic-team/ionic-framework/pull/30689) partially addressed `showBackdrop=false` and `focusTrap=false`, but missed `backdropBreakpoint`. ## What is the new behavior? Sheet modals with showBackdrop=false or focusTrap=false now correctly allow interaction with parent content when the modal is in a child route. Improvements: - Recalculates isSheetModal in present() to handle Angular binding timing - Sets pointer-events: none on the modal element and its original parent elements when background interaction should be allowed - Cleans up pointer-events on dismiss - Adds regression tests ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information Dev build: ``` 8.7.12-dev.11765060985.14ad27fb ``` --- core/src/components/modal/modal.tsx | 100 +++++++++++++++++- core/src/css/core.scss | 9 ++ core/src/utils/overlays.ts | 28 +++-- .../src/standalone/modal-child-route.spec.ts | 38 +++++++ .../standalone/app-standalone/app.routes.ts | 8 ++ .../home-page/home-page.component.html | 5 + .../modal-child-route-child.component.ts | 33 ++++++ .../modal-child-route-parent.component.ts | 38 +++++++ .../ModalSheetChildRoute.tsx | 69 ++++++++++++ .../overlay-components/OverlayComponents.tsx | 6 ++ .../IonModalFocusTrap.cy.ts | 6 +- .../IonModalSheetChildRoute.cy.ts | 37 +++++++ 12 files changed, 365 insertions(+), 12 deletions(-) create mode 100644 packages/angular/test/base/e2e/src/standalone/modal-child-route.spec.ts create mode 100644 packages/angular/test/base/src/app/standalone/modal-child-route/modal-child-route-child.component.ts create mode 100644 packages/angular/test/base/src/app/standalone/modal-child-route/modal-child-route-parent.component.ts create mode 100644 packages/react/test/base/src/pages/overlay-components/ModalSheetChildRoute.tsx create mode 100644 packages/react/test/base/tests/e2e/specs/overlay-components/IonModalSheetChildRoute.cy.ts diff --git a/core/src/components/modal/modal.tsx b/core/src/components/modal/modal.tsx index b1a494430d0..dbed406ca4a 100644 --- a/core/src/components/modal/modal.tsx +++ b/core/src/components/modal/modal.tsx @@ -71,7 +71,7 @@ export class Modal implements ComponentInterface, OverlayInterface { private gesture?: Gesture; private coreDelegate: FrameworkDelegate = CoreDelegate(); private sheetTransition?: Promise; - private isSheetModal = false; + @State() private isSheetModal = false; private currentBreakpoint?: number; private wrapperEl?: HTMLElement; private backdropEl?: HTMLIonBackdropElement; @@ -100,6 +100,8 @@ export class Modal implements ComponentInterface, OverlayInterface { private parentRemovalObserver?: MutationObserver; // Cached original parent from before modal is moved to body during presentation private cachedOriginalParent?: HTMLElement; + // Cached ion-page ancestor for child route passthrough + private cachedPageParent?: HTMLElement | null; lastFocus?: HTMLElement; animation?: Animation; @@ -644,7 +646,14 @@ export class Modal implements ComponentInterface, OverlayInterface { window.addEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback); } - if (this.isSheetModal) { + /** + * Recalculate isSheetModal because framework bindings (e.g., Angular) + * may not have been applied when componentWillLoad ran. + */ + const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined; + this.isSheetModal = isSheetModal; + + if (isSheetModal) { this.initSheetGesture(); } else if (hasCardModal) { this.initSwipeToClose(); @@ -753,6 +762,91 @@ export class Modal implements ComponentInterface, OverlayInterface { this.moveSheetToBreakpoint = moveSheetToBreakpoint; this.gesture.enable(true); + + /** + * When backdrop interaction is allowed, nested router outlets from child routes + * may block pointer events to parent content. Apply passthrough styles only when + * the modal was the sole content of a child route page. + * See https://github.com/ionic-team/ionic-framework/issues/30700 + */ + const backdropNotBlocking = this.showBackdrop === false || this.focusTrap === false || backdropBreakpoint > 0; + if (backdropNotBlocking) { + this.setupChildRoutePassthrough(); + } + } + + /** + * For sheet modals that allow background interaction, sets up pointer-events + * passthrough on child route page wrappers and nested router outlets. + */ + private setupChildRoutePassthrough() { + // Cache the page parent for cleanup + this.cachedPageParent = this.getOriginalPageParent(); + const pageParent = this.cachedPageParent; + + // Skip ion-app (controller modals) and pages with visible sibling content next to the modal + if (!pageParent || pageParent.tagName === 'ION-APP') { + return; + } + + const hasVisibleContent = Array.from(pageParent.children).some( + (child) => + child !== this.el && + !(child instanceof HTMLElement && window.getComputedStyle(child).display === 'none') && + child.tagName !== 'TEMPLATE' && + child.tagName !== 'SLOT' && + !(child.nodeType === Node.TEXT_NODE && !child.textContent?.trim()) + ); + + if (hasVisibleContent) { + return; + } + + // Child route case: page only contained the modal + pageParent.classList.add('ion-page-overlay-passthrough'); + + // Also make nested router outlets passthrough + const routerOutlet = pageParent.parentElement; + if (routerOutlet?.tagName === 'ION-ROUTER-OUTLET' && routerOutlet.parentElement?.tagName !== 'ION-APP') { + routerOutlet.style.setProperty('pointer-events', 'none'); + routerOutlet.setAttribute('data-overlay-passthrough', 'true'); + } + } + + /** + * Finds the ion-page ancestor of the modal's original parent location. + */ + private getOriginalPageParent(): HTMLElement | null { + if (!this.cachedOriginalParent) { + return null; + } + + let pageParent: HTMLElement | null = this.cachedOriginalParent; + while (pageParent && !pageParent.classList.contains('ion-page')) { + pageParent = pageParent.parentElement; + } + return pageParent; + } + + /** + * Removes passthrough styles added by setupChildRoutePassthrough. + */ + private cleanupChildRoutePassthrough() { + const pageParent = this.cachedPageParent; + if (!pageParent) { + return; + } + + pageParent.classList.remove('ion-page-overlay-passthrough'); + + const routerOutlet = pageParent.parentElement; + if (routerOutlet?.hasAttribute('data-overlay-passthrough')) { + routerOutlet.style.removeProperty('pointer-events'); + routerOutlet.removeAttribute('data-overlay-passthrough'); + } + + // Clear the cached reference + this.cachedPageParent = undefined; } private sheetOnDismiss() { @@ -862,6 +956,8 @@ export class Modal implements ComponentInterface, OverlayInterface { } this.cleanupViewTransitionListener(); this.cleanupParentRemovalObserver(); + + this.cleanupChildRoutePassthrough(); } this.currentBreakpoint = undefined; this.animation = undefined; diff --git a/core/src/css/core.scss b/core/src/css/core.scss index cf7560bd348..db694fc6a07 100644 --- a/core/src/css/core.scss +++ b/core/src/css/core.scss @@ -181,6 +181,15 @@ html.ios ion-modal.modal-card .ion-page { z-index: $z-index-page-container; } +/** + * Allows pointer events to pass through child route page wrappers + * when they only contain a sheet modal that permits background interaction. + * https://github.com/ionic-team/ionic-framework/issues/30700 + */ +.ion-page.ion-page-overlay-passthrough { + pointer-events: none; +} + /** * When making custom dialogs, using * ion-content is not required. As a result, diff --git a/core/src/utils/overlays.ts b/core/src/utils/overlays.ts index 5b983158aa5..472a57559d3 100644 --- a/core/src/utils/overlays.ts +++ b/core/src/utils/overlays.ts @@ -38,6 +38,20 @@ let lastId = 0; export const activeAnimations = new WeakMap(); +type OverlayWithFocusTrapProps = HTMLIonOverlayElement & { + focusTrap?: boolean; + showBackdrop?: boolean; + backdropBreakpoint?: number; +}; + +/** + * Determines if the overlay's backdrop is always blocking (no background interaction). + * Returns false if showBackdrop=false or backdropBreakpoint > 0. + */ +const isBackdropAlwaysBlocking = (el: OverlayWithFocusTrapProps): boolean => { + return el.showBackdrop !== false && !((el.backdropBreakpoint ?? 0) > 0); +}; + const createController = (tagName: string) => { return { create(options: Opts): Promise { @@ -539,11 +553,9 @@ export const present = async ( * view container subtree, skip adding aria-hidden/inert there * to avoid disabling the overlay. */ - const overlayEl = overlay.el as HTMLIonOverlayElement & { focusTrap?: boolean; showBackdrop?: boolean }; + const overlayEl = overlay.el as OverlayWithFocusTrapProps; const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false; - // Only lock out root content when backdrop is active. Developers relying on showBackdrop=false - // expect background interaction to remain enabled. - const shouldLockRoot = shouldTrapFocus && overlayEl.showBackdrop !== false; + const shouldLockRoot = shouldTrapFocus && isBackdropAlwaysBlocking(overlayEl); overlay.presented = true; overlay.willPresent.emit(); @@ -680,12 +692,12 @@ export const dismiss = async ( * is dismissed. */ const overlaysLockingRoot = presentedOverlays.filter((o) => { - const el = o as HTMLIonOverlayElement & { focusTrap?: boolean; showBackdrop?: boolean }; - return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && el.showBackdrop !== false; + const el = o as OverlayWithFocusTrapProps; + return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el); }); - const overlayEl = overlay.el as HTMLIonOverlayElement & { focusTrap?: boolean; showBackdrop?: boolean }; + const overlayEl = overlay.el as OverlayWithFocusTrapProps; const locksRoot = - overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && overlayEl.showBackdrop !== false; + overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && isBackdropAlwaysBlocking(overlayEl); /** * If this is the last visible overlay that is trapping focus diff --git a/packages/angular/test/base/e2e/src/standalone/modal-child-route.spec.ts b/packages/angular/test/base/e2e/src/standalone/modal-child-route.spec.ts new file mode 100644 index 00000000000..d479599bccb --- /dev/null +++ b/packages/angular/test/base/e2e/src/standalone/modal-child-route.spec.ts @@ -0,0 +1,38 @@ +import { expect, test } from '@playwright/test'; + +/** + * Tests for sheet modals in child routes with showBackdrop=false. + * Parent has buttons + nested outlet; child route contains only the modal. + * See https://github.com/ionic-team/ionic-framework/issues/30700 + */ +test.describe('Modals: Inline Sheet in Child Route (standalone)', () => { + test.beforeEach(async ({ page }) => { + await page.goto('/standalone/modal-child-route/child'); + }); + + test('should render parent content and child modal', async ({ page }) => { + await expect(page.locator('#increment-btn')).toBeVisible(); + await expect(page.locator('#decrement-btn')).toBeVisible(); + await expect(page.locator('#background-action-count')).toHaveText('0'); + await expect(page.locator('ion-modal.show-modal')).toBeVisible(); + await expect(page.locator('#modal-content-loaded')).toBeVisible(); + }); + + test('should allow interacting with parent content while modal is open in child route', async ({ page }) => { + await expect(page.locator('ion-modal.show-modal')).toBeVisible(); + + await page.locator('#increment-btn').click(); + await expect(page.locator('#background-action-count')).toHaveText('1'); + }); + + test('should allow multiple interactions with parent content while modal is open', async ({ page }) => { + await expect(page.locator('ion-modal.show-modal')).toBeVisible(); + + await page.locator('#increment-btn').click(); + await page.locator('#increment-btn').click(); + await expect(page.locator('#background-action-count')).toHaveText('2'); + + await page.locator('#decrement-btn').click(); + await expect(page.locator('#background-action-count')).toHaveText('1'); + }); +}); diff --git a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts index 007743f905f..667ef672e8b 100644 --- a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts +++ b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts @@ -13,6 +13,14 @@ export const routes: Routes = [ { path: 'modal', loadComponent: () => import('../modal/modal.component').then(c => c.ModalComponent) }, { path: 'modal-sheet-inline', loadComponent: () => import('../modal-sheet-inline/modal-sheet-inline.component').then(c => c.ModalSheetInlineComponent) }, { path: 'modal-dynamic-wrapper', loadComponent: () => import('../modal-dynamic-wrapper/modal-dynamic-wrapper.component').then(c => c.ModalDynamicWrapperComponent) }, + { path: 'modal-child-route', redirectTo: '/standalone/modal-child-route/child', pathMatch: 'full' }, + { + path: 'modal-child-route', + loadComponent: () => import('../modal-child-route/modal-child-route-parent.component').then(c => c.ModalChildRouteParentComponent), + children: [ + { path: 'child', loadComponent: () => import('../modal-child-route/modal-child-route-child.component').then(c => c.ModalChildRouteChildComponent) }, + ] + }, { path: 'programmatic-modal', loadComponent: () => import('../programmatic-modal/programmatic-modal.component').then(c => c.ProgrammaticModalComponent) }, { path: 'router-outlet', loadComponent: () => import('../router-outlet/router-outlet.component').then(c => c.RouterOutletComponent) }, { path: 'back-button', loadComponent: () => import('../back-button/back-button.component').then(c => c.BackButtonComponent) }, diff --git a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html index 7ac9c619180..6dbad643eb2 100644 --- a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html +++ b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html @@ -100,6 +100,11 @@ Modal Dynamic Wrapper Test + + + Modal Child Route Test + + Programmatic Modal Test diff --git a/packages/angular/test/base/src/app/standalone/modal-child-route/modal-child-route-child.component.ts b/packages/angular/test/base/src/app/standalone/modal-child-route/modal-child-route-child.component.ts new file mode 100644 index 00000000000..6fa573fa197 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/modal-child-route/modal-child-route-child.component.ts @@ -0,0 +1,33 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { IonContent, IonHeader, IonModal, IonTitle, IonToolbar } from '@ionic/angular/standalone'; + +/** + * Child route component containing only the sheet modal with showBackdrop=false. + * Verifies issue https://github.com/ionic-team/ionic-framework/issues/30700 + */ +@Component({ + selector: 'app-modal-child-route-child', + template: ` + + + + + Modal in Child Route + + + + + + + + `, + standalone: true, + imports: [CommonModule, IonContent, IonHeader, IonModal, IonTitle, IonToolbar], +}) +export class ModalChildRouteChildComponent {} diff --git a/packages/angular/test/base/src/app/standalone/modal-child-route/modal-child-route-parent.component.ts b/packages/angular/test/base/src/app/standalone/modal-child-route/modal-child-route-parent.component.ts new file mode 100644 index 00000000000..fdd5465ad11 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/modal-child-route/modal-child-route-parent.component.ts @@ -0,0 +1,38 @@ +import { Component } from '@angular/core'; +import { IonButton, IonContent, IonHeader, IonRouterOutlet, IonTitle, IonToolbar } from '@ionic/angular/standalone'; + +/** + * Parent with interactive buttons and nested outlet for child route modal. + * See https://github.com/ionic-team/ionic-framework/issues/30700 + */ +@Component({ + selector: 'app-modal-child-route-parent', + template: ` + + + Parent Page with Nested Route + + + +
+ - +

{{ count }}

+ + +
+ +
+ `, + standalone: true, + imports: [IonButton, IonContent, IonHeader, IonRouterOutlet, IonTitle, IonToolbar], +}) +export class ModalChildRouteParentComponent { + count = 0; + + increment() { + this.count++; + } + + decrement() { + this.count--; + } +} diff --git a/packages/react/test/base/src/pages/overlay-components/ModalSheetChildRoute.tsx b/packages/react/test/base/src/pages/overlay-components/ModalSheetChildRoute.tsx new file mode 100644 index 00000000000..e686bbd00eb --- /dev/null +++ b/packages/react/test/base/src/pages/overlay-components/ModalSheetChildRoute.tsx @@ -0,0 +1,69 @@ +import React, { useState } from 'react'; +import { + IonButton, + IonContent, + IonHeader, + IonModal, + IonPage, + IonRouterOutlet, + IonTitle, + IonToolbar, +} from '@ionic/react'; +import { Route } from 'react-router'; + +/** + * Parent component with counter buttons and nested router outlet. + * This reproduces the issue from https://github.com/ionic-team/ionic-framework/issues/30700 + * where sheet modals in child routes with showBackdrop=false block interaction with parent content. + */ +const ModalSheetChildRouteParent: React.FC = () => { + const [count, setCount] = useState(0); + + return ( + + + + Parent Page with Nested Route + + + +
+ setCount((c) => c - 1)}> + - + +

{count}

+ setCount((c) => c + 1)}> + + + +
+
+ + + +
+ ); +}; + +const ModalSheetChildRouteChild: React.FC = () => { + return ( + + + + + Modal in Child Route + + + + + + + + ); +}; + +export default ModalSheetChildRouteParent; diff --git a/packages/react/test/base/src/pages/overlay-components/OverlayComponents.tsx b/packages/react/test/base/src/pages/overlay-components/OverlayComponents.tsx index 19aebc9081c..75bf98bb734 100644 --- a/packages/react/test/base/src/pages/overlay-components/OverlayComponents.tsx +++ b/packages/react/test/base/src/pages/overlay-components/OverlayComponents.tsx @@ -15,6 +15,7 @@ import AlertComponent from './AlertComponent'; import LoadingComponent from './LoadingComponent'; import ModalComponent from './ModalComponent'; import ModalFocusTrap from './ModalFocusTrap'; +import ModalSheetChildRoute from './ModalSheetChildRoute'; import ModalTeleport from './ModalTeleport'; import PickerComponent from './PickerComponent'; import PopoverComponent from './PopoverComponent'; @@ -32,6 +33,7 @@ const OverlayHooks: React.FC = () => { + @@ -62,6 +64,10 @@ const OverlayHooks: React.FC = () => { Modal Teleport + + + Sheet Child + Picker diff --git a/packages/react/test/base/tests/e2e/specs/overlay-components/IonModalFocusTrap.cy.ts b/packages/react/test/base/tests/e2e/specs/overlay-components/IonModalFocusTrap.cy.ts index 395c642dcc4..78ca7a581e3 100644 --- a/packages/react/test/base/tests/e2e/specs/overlay-components/IonModalFocusTrap.cy.ts +++ b/packages/react/test/base/tests/e2e/specs/overlay-components/IonModalFocusTrap.cy.ts @@ -5,7 +5,9 @@ describe('IonModal: focusTrap regression', () => { it('should allow interacting with background when focusTrap=false', () => { cy.get('#open-non-trapped-modal').click(); - cy.get('ion-modal').should('be.visible'); + // Use 'exist' instead of 'be.visible' because the modal has pointer-events: none + // to allow background interaction, which Cypress interprets as "covered" + cy.get('ion-modal.show-modal').should('exist'); cy.get('#background-action').click(); cy.get('#background-action-count').should('have.text', '1'); @@ -13,7 +15,7 @@ describe('IonModal: focusTrap regression', () => { it('should prevent interacting with background when focusTrap=true', () => { cy.get('#open-trapped-modal').click(); - cy.get('ion-modal').should('be.visible'); + cy.get('ion-modal.show-modal').should('be.visible'); // Ensure backdrop is active and capturing pointer events cy.get('ion-backdrop').should('exist'); diff --git a/packages/react/test/base/tests/e2e/specs/overlay-components/IonModalSheetChildRoute.cy.ts b/packages/react/test/base/tests/e2e/specs/overlay-components/IonModalSheetChildRoute.cy.ts new file mode 100644 index 00000000000..ff791f3aade --- /dev/null +++ b/packages/react/test/base/tests/e2e/specs/overlay-components/IonModalSheetChildRoute.cy.ts @@ -0,0 +1,37 @@ +/** + * Tests for sheet modals in child routes with showBackdrop=false. + * See https://github.com/ionic-team/ionic-framework/issues/30700 + */ +describe('IonModal: Sheet in Child Route with Nested Routing', () => { + beforeEach(() => { + cy.visit('/overlay-components/modal-sheet-child-route/child'); + }); + + it('should render parent content and child modal', () => { + cy.get('#increment-btn').should('exist'); + cy.get('#decrement-btn').should('exist'); + cy.get('#background-action-count').should('have.text', '0'); + cy.get('ion-modal.show-modal').should('exist'); + cy.get('#modal-content-loaded').should('exist'); + }); + + it('should allow interacting with parent content while modal is open in child route', () => { + // Wait for modal to be presented + cy.get('ion-modal.show-modal').should('exist'); + + // Click the increment button in the parent content + cy.get('#increment-btn').click(); + cy.get('#background-action-count').should('have.text', '1'); + }); + + it('should allow multiple interactions with parent content while modal is open', () => { + cy.get('ion-modal.show-modal').should('exist'); + + cy.get('#increment-btn').click(); + cy.get('#increment-btn').click(); + cy.get('#background-action-count').should('have.text', '2'); + + cy.get('#decrement-btn').click(); + cy.get('#background-action-count').should('have.text', '1'); + }); +}); From b1645168a7fb9378dc39a081c207b2de0e180089 Mon Sep 17 00:00:00 2001 From: Shane Date: Wed, 10 Dec 2025 13:11:49 -0800 Subject: [PATCH 054/126] fix(modal): prevent browser hang when using ModalController in Angular (#30845) Issue number: resolves internal --------- ## What is the current behavior? When using ModalController to present a modal in Angular applications, the browser becomes non-responsive and hangs in some circumstances. This regression was introduced in #30544 with the addition of a MutationObserver that watches document.body with subtree: true to detect when a modal's parent element is removed from the DOM. For controller-based modals, this observer fires on every DOM mutation in the document, causing severe performance issues during Angular's change detection cycles. ## What is the new behavior? The MutationObserver for parent removal detection is now skipped for controller-based modals and when the cached parent is the app root (document.body or ion-app). These parents are never removed from the DOM, so observing them is unnecessary. This prevents the performance issues while still maintaining the parent removal detection behavior for inline modals with meaningful parent elements. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information Current dev build: ``` 8.7.12-dev.11765231260.1def96ab ``` --------- Co-authored-by: Maria Hutt --- core/src/components/modal/modal.tsx | 14 +++++++++++ .../components/modal/test/basic/modal.e2e.ts | 24 ++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/core/src/components/modal/modal.tsx b/core/src/components/modal/modal.tsx index dbed406ca4a..174ac2f9d8a 100644 --- a/core/src/components/modal/modal.tsx +++ b/core/src/components/modal/modal.tsx @@ -1279,6 +1279,20 @@ export class Modal implements ComponentInterface, OverlayInterface { return; } + /** + * Don't observe for controller-based modals or when the parent is the + * app root (document.body or ion-app). These parents won't be removed, + * and observing document.body with subtree: true causes performance + * issues with frameworks like Angular during change detection. + */ + if ( + this.hasController || + this.cachedOriginalParent === document.body || + this.cachedOriginalParent.tagName === 'ION-APP' + ) { + return; + } + this.parentRemovalObserver = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.type === 'childList' && mutation.removedNodes.length > 0) { diff --git a/core/src/components/modal/test/basic/modal.e2e.ts b/core/src/components/modal/test/basic/modal.e2e.ts index 325c4b3fbb5..1c9ac92743c 100644 --- a/core/src/components/modal/test/basic/modal.e2e.ts +++ b/core/src/components/modal/test/basic/modal.e2e.ts @@ -1,6 +1,6 @@ import { expect } from '@playwright/test'; -import { configs, test, Viewports } from '@utils/test/playwright'; import type { E2EPage } from '@utils/test/playwright'; +import { configs, test, Viewports } from '@utils/test/playwright'; configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { test.describe(title('modal: focus trapping'), () => { @@ -104,6 +104,28 @@ configs().forEach(({ title, screenshot, config }) => { }); configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('modal: parent removal observer'), () => { + test('should not set up parentRemovalObserver for controller-created modals', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'FW-6766', + }); + + await page.goto('/src/components/modal/test/basic', config); + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#basic-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + const hasObserver = await modal.evaluate((el: any) => { + return el.parentRemovalObserver !== undefined; + }); + + expect(hasObserver).toBe(false); + }); + }); + test.describe(title('modal: backdrop'), () => { test.beforeEach(async ({ page }) => { await page.goto('/src/components/modal/test/basic', config); From afa15d23d21f34aebb3ab33ca446efb986bc4d84 Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 10 Dec 2025 21:33:15 +0000 Subject: [PATCH 055/126] v8.7.12 --- CHANGELOG.md | 14 ++++++++++++++ core/CHANGELOG.md | 14 ++++++++++++++ core/package-lock.json | 6 +++--- core/package.json | 2 +- lerna.json | 2 +- packages/angular-server/CHANGELOG.md | 8 ++++++++ packages/angular-server/package-lock.json | 8 ++++---- packages/angular-server/package.json | 4 ++-- packages/angular/CHANGELOG.md | 11 +++++++++++ packages/angular/package-lock.json | 8 ++++---- packages/angular/package.json | 4 ++-- packages/docs/CHANGELOG.md | 8 ++++++++ packages/docs/package-lock.json | 4 ++-- packages/docs/package.json | 2 +- packages/react-router/CHANGELOG.md | 8 ++++++++ packages/react-router/package-lock.json | 8 ++++---- packages/react-router/package.json | 4 ++-- packages/react/CHANGELOG.md | 11 +++++++++++ packages/react/package-lock.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/CHANGELOG.md | 8 ++++++++ packages/vue-router/package-lock.json | 8 ++++---- packages/vue-router/package.json | 4 ++-- packages/vue/CHANGELOG.md | 8 ++++++++ packages/vue/package-lock.json | 8 ++++---- packages/vue/package.json | 4 ++-- 26 files changed, 134 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59418196b5b..44039ae1102 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) + + +### Bug Fixes + +* **modal:** allow interaction with parent content through sheet modals in child routes ([#30839](https://github.com/ionic-team/ionic-framework/issues/30839)) ([b9e3cf0](https://github.com/ionic-team/ionic-framework/commit/b9e3cf0f5aae79a1f27a07b102c77e51f24825f4)), closes [#30700](https://github.com/ionic-team/ionic-framework/issues/30700) +* **modal:** prevent browser hang when using ModalController in Angular ([#30845](https://github.com/ionic-team/ionic-framework/issues/30845)) ([b164516](https://github.com/ionic-team/ionic-framework/commit/b1645168a7fb9378dc39a081c207b2de0e180089)) +* **popover:** recalculate the content dimensions after the header has fully loaded ([#30853](https://github.com/ionic-team/ionic-framework/issues/30853)) ([99dcf38](https://github.com/ionic-team/ionic-framework/commit/99dcf3810a0c32416996d1e992ddf63359965cfc)) +* **select, action-sheet:** use radio role for options ([#30769](https://github.com/ionic-team/ionic-framework/issues/30769)) ([1c89cf0](https://github.com/ionic-team/ionic-framework/commit/1c89cf06ac959f9c9a35a66f811227c244d3198b)) + + + + + ## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index d1a86679387..3edf5cd89c3 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) + + +### Bug Fixes + +* **modal:** allow interaction with parent content through sheet modals in child routes ([#30839](https://github.com/ionic-team/ionic-framework/issues/30839)) ([b9e3cf0](https://github.com/ionic-team/ionic-framework/commit/b9e3cf0f5aae79a1f27a07b102c77e51f24825f4)), closes [#30700](https://github.com/ionic-team/ionic-framework/issues/30700) +* **modal:** prevent browser hang when using ModalController in Angular ([#30845](https://github.com/ionic-team/ionic-framework/issues/30845)) ([b164516](https://github.com/ionic-team/ionic-framework/commit/b1645168a7fb9378dc39a081c207b2de0e180089)) +* **popover:** recalculate the content dimensions after the header has fully loaded ([#30853](https://github.com/ionic-team/ionic-framework/issues/30853)) ([99dcf38](https://github.com/ionic-team/ionic-framework/commit/99dcf3810a0c32416996d1e992ddf63359965cfc)) +* **select, action-sheet:** use radio role for options ([#30769](https://github.com/ionic-team/ionic-framework/issues/30769)) ([1c89cf0](https://github.com/ionic-team/ionic-framework/commit/1c89cf06ac959f9c9a35a66f811227c244d3198b)) + + + + + ## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) diff --git a/core/package-lock.json b/core/package-lock.json index b4f227b4c43..4aa5600d56d 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "8.7.11", + "version": "8.7.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "8.7.11", + "version": "8.7.12", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -9823,4 +9823,4 @@ } } } -} +} \ No newline at end of file diff --git a/core/package.json b/core/package.json index b0f0db7b189..11f78142274 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "8.7.11", + "version": "8.7.12", "description": "Base components for Ionic", "engines": { "node": "24.x" diff --git a/lerna.json b/lerna.json index 5134a3baffe..3e932560e2a 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "core", "packages/*" ], - "version": "8.7.11" + "version": "8.7.12" } \ No newline at end of file diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index 55109a07286..cdce885d0d8 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) + +**Note:** Version bump only for package @ionic/angular-server + + + + + ## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index fdddce185b1..36674a7cd44 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular-server", - "version": "8.7.11", + "version": "8.7.12", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "8.7.11", + "version": "8.7.12", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.11" + "@ionic/core": "^8.7.12" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^16.0.0", @@ -11286,4 +11286,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index 47aafb0182f..b5c6bd7ea15 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "8.7.11", + "version": "8.7.12", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -62,6 +62,6 @@ }, "prettier": "@ionic/prettier-config", "dependencies": { - "@ionic/core": "^8.7.11" + "@ionic/core": "^8.7.12" } } diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index af9a74674e4..41c9a25bec4 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) + + +### Bug Fixes + +* **modal:** allow interaction with parent content through sheet modals in child routes ([#30839](https://github.com/ionic-team/ionic-framework/issues/30839)) ([b9e3cf0](https://github.com/ionic-team/ionic-framework/commit/b9e3cf0f5aae79a1f27a07b102c77e51f24825f4)), closes [#30700](https://github.com/ionic-team/ionic-framework/issues/30700) + + + + + ## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) **Note:** Version bump only for package @ionic/angular diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 2f8f71c7358..9c785ef51b8 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "8.7.11", + "version": "8.7.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "8.7.11", + "version": "8.7.12", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.11", + "@ionic/core": "^8.7.12", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -9092,4 +9092,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular/package.json b/packages/angular/package.json index 6dc90b223c4..2c015fd9212 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "8.7.11", + "version": "8.7.12", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -48,7 +48,7 @@ } }, "dependencies": { - "@ionic/core": "^8.7.11", + "@ionic/core": "^8.7.12", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md index 63638865fae..4cc3c8f7f8a 100644 --- a/packages/docs/CHANGELOG.md +++ b/packages/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) + +**Note:** Version bump only for package @ionic/docs + + + + + ## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) **Note:** Version bump only for package @ionic/docs diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 3c1391b8cf3..c3e6ed1d233 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/docs", - "version": "8.7.11", + "version": "8.7.12", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "8.7.11", + "version": "8.7.12", "license": "MIT" } } diff --git a/packages/docs/package.json b/packages/docs/package.json index 018947033c8..0c0f81bbf97 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "8.7.11", + "version": "8.7.12", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index dcc56dc20c8..5b01d669edf 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) + +**Note:** Version bump only for package @ionic/react-router + + + + + ## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) **Note:** Version bump only for package @ionic/react-router diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index ca60000c58b..e1366ec9467 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "8.7.11", + "version": "8.7.12", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "8.7.11", + "version": "8.7.12", "license": "MIT", "dependencies": { - "@ionic/react": "^8.7.11", + "@ionic/react": "^8.7.12", "tslib": "*" }, "devDependencies": { @@ -6844,4 +6844,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 6caca04b3dc..7e2f11fc05b 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "8.7.11", + "version": "8.7.12", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^8.7.11", + "@ionic/react": "^8.7.12", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index d0dfb6d60de..550acf8a07c 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) + + +### Bug Fixes + +* **modal:** allow interaction with parent content through sheet modals in child routes ([#30839](https://github.com/ionic-team/ionic-framework/issues/30839)) ([b9e3cf0](https://github.com/ionic-team/ionic-framework/commit/b9e3cf0f5aae79a1f27a07b102c77e51f24825f4)), closes [#30700](https://github.com/ionic-team/ionic-framework/issues/30700) + + + + + ## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) **Note:** Version bump only for package @ionic/react diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 909959cda1b..0d3b0edc67f 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "8.7.11", + "version": "8.7.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "8.7.11", + "version": "8.7.12", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.11", + "@ionic/core": "^8.7.12", "ionicons": "^8.0.13", "tslib": "*" }, @@ -11913,4 +11913,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/react/package.json b/packages/react/package.json index f9407abde68..bb2bfa74b77 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "8.7.11", + "version": "8.7.12", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -40,7 +40,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^8.7.11", + "@ionic/core": "^8.7.12", "ionicons": "^8.0.13", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index 21cc70cb953..a80b6d0a24f 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) + +**Note:** Version bump only for package @ionic/vue-router + + + + + ## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) **Note:** Version bump only for package @ionic/vue-router diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index fa908748990..52233768392 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "8.7.11", + "version": "8.7.12", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "8.7.11", + "version": "8.7.12", "license": "MIT", "dependencies": { - "@ionic/vue": "^8.7.11" + "@ionic/vue": "^8.7.12" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", @@ -12991,4 +12991,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index 2d7e95b40f6..cee8f5e4e54 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "8.7.11", + "version": "8.7.12", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", @@ -44,7 +44,7 @@ }, "homepage": "https://github.com/ionic-team/ionic-framework#readme", "dependencies": { - "@ionic/vue": "^8.7.11" + "@ionic/vue": "^8.7.12" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index 2d82d381e83..e00ea2c3773 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) + +**Note:** Version bump only for package @ionic/vue + + + + + ## [8.7.11](https://github.com/ionic-team/ionic-framework/compare/v8.7.10...v8.7.11) (2025-11-26) **Note:** Version bump only for package @ionic/vue diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 1c127c6af94..70c1dbfd596 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "8.7.11", + "version": "8.7.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "8.7.11", + "version": "8.7.12", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.11", + "@ionic/core": "^8.7.12", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, @@ -4019,4 +4019,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index b10b5b65a00..d89aa3cf61e 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "8.7.11", + "version": "8.7.12", "description": "Vue specific wrapper for @ionic/core", "scripts": { "eslint": "eslint src", @@ -68,7 +68,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^8.7.11", + "@ionic/core": "^8.7.12", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, From 5bf6f6e8251c819af192576e40ea072d87f38471 Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 10 Dec 2025 21:34:28 +0000 Subject: [PATCH 056/126] chore(): update package lock files --- core/package-lock.json | 42 ++++++++++++++--------- packages/angular-server/package-lock.json | 17 +++++---- packages/angular/package-lock.json | 11 +++--- packages/docs/package-lock.json | 2 +- packages/react-router/package-lock.json | 33 ++++++++++-------- packages/react/package-lock.json | 11 +++--- packages/vue-router/package-lock.json | 33 ++++++++++-------- packages/vue/package-lock.json | 11 +++--- 8 files changed, 93 insertions(+), 67 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 4aa5600d56d..362a93bb797 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -50,6 +50,9 @@ "serve": "^14.0.1", "stylelint": "^13.13.1", "stylelint-order": "^4.1.0" + }, + "engines": { + "node": "24.x" } }, "custom-rules": { @@ -91,7 +94,6 @@ "version": "7.16.12", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.16.8", @@ -629,7 +631,6 @@ "version": "7.4.4", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -861,7 +862,6 @@ "version": "4.33.0", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -1799,7 +1799,6 @@ "node_modules/@stencil/core": { "version": "4.38.0", "license": "MIT", - "peer": true, "bin": { "stencil": "bin/stencil" }, @@ -2224,7 +2223,6 @@ "version": "6.7.2", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.7.2", "@typescript-eslint/types": "6.7.2", @@ -2450,6 +2448,7 @@ "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/shared": "3.5.25", @@ -2464,6 +2463,7 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=0.12" }, @@ -2476,7 +2476,8 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@vue/compiler-dom": { "version": "3.5.25", @@ -2484,6 +2485,7 @@ "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-core": "3.5.25", "@vue/shared": "3.5.25" @@ -2495,6 +2497,7 @@ "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/compiler-core": "3.5.25", @@ -2512,7 +2515,8 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@vue/compiler-sfc/node_modules/postcss": { "version": "8.5.6", @@ -2534,6 +2538,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2549,6 +2554,7 @@ "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.25", "@vue/shared": "3.5.25" @@ -2560,6 +2566,7 @@ "integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/shared": "3.5.25" } @@ -2570,6 +2577,7 @@ "integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/shared": "3.5.25" @@ -2581,6 +2589,7 @@ "integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/runtime-core": "3.5.25", @@ -2594,6 +2603,7 @@ "integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-ssr": "3.5.25", "@vue/shared": "3.5.25" @@ -2607,7 +2617,8 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz", "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@zeit/schemas": { "version": "2.21.0", @@ -2630,7 +2641,6 @@ "version": "7.4.0", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3791,7 +3801,8 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/debug": { "version": "2.6.9", @@ -4085,7 +4096,6 @@ "version": "7.32.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -7281,6 +7291,7 @@ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } @@ -7602,6 +7613,7 @@ } ], "license": "MIT", + "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -7956,7 +7968,6 @@ "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "playwright-core": "cli.js" }, @@ -7968,7 +7979,6 @@ "version": "7.0.35", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -8074,7 +8084,6 @@ "version": "0.36.2", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "postcss": ">=5.0.0" } @@ -8123,7 +8132,6 @@ "version": "2.6.1", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -8481,7 +8489,6 @@ "version": "2.35.1", "dev": true, "license": "MIT", - "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -8703,6 +8710,7 @@ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -9823,4 +9831,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 36674a7cd44..4eee627f8dc 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1031,14 +1031,17 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", - "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", + "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" + }, + "engines": { + "node": "24.x" } }, "node_modules/@ionic/eslint-config": { @@ -7306,9 +7309,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", - "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", + "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -11286,4 +11289,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 9c785ef51b8..18d9d9e5f79 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1398,14 +1398,17 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", - "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", + "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" + }, + "engines": { + "node": "24.x" } }, "node_modules/@ionic/eslint-config": { @@ -9092,4 +9095,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index c3e6ed1d233..999970780cd 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -10,4 +10,4 @@ "license": "MIT" } } -} \ No newline at end of file +} diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index e1366ec9467..56b884f97c4 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -238,14 +238,17 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", - "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", + "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" + }, + "engines": { + "node": "24.x" } }, "node_modules/@ionic/eslint-config": { @@ -415,12 +418,12 @@ } }, "node_modules/@ionic/react": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.11.tgz", - "integrity": "sha512-h4j2SVRMgoxZBdr1bluKGrb0xNYEqEDcjHDuHsok669tKH3RnTMfD276zytfhFh3R8gIKWIqxb76NIsW/hfZcQ==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.12.tgz", + "integrity": "sha512-gNm5L++aiwkwJrUFKhcHUUgjqnj9n03gK7UcoL7Oz+271arzmwF/FNd47G85b6PovwiYQXY2CUBvNJ7Nh4qE/A==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.11", + "@ionic/core": "8.7.12", "ionicons": "^8.0.13", "tslib": "*" }, @@ -4175,9 +4178,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", - "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", + "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -4281,11 +4284,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.11.tgz", - "integrity": "sha512-h4j2SVRMgoxZBdr1bluKGrb0xNYEqEDcjHDuHsok669tKH3RnTMfD276zytfhFh3R8gIKWIqxb76NIsW/hfZcQ==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.12.tgz", + "integrity": "sha512-gNm5L++aiwkwJrUFKhcHUUgjqnj9n03gK7UcoL7Oz+271arzmwF/FNd47G85b6PovwiYQXY2CUBvNJ7Nh4qE/A==", "requires": { - "@ionic/core": "8.7.11", + "@ionic/core": "8.7.12", "ionicons": "^8.0.13", "tslib": "*" } @@ -6844,4 +6847,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 0d3b0edc67f..3f35a39caad 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -736,14 +736,17 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", - "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", + "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" + }, + "engines": { + "node": "24.x" } }, "node_modules/@ionic/eslint-config": { @@ -11913,4 +11916,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 52233768392..f7e737b3747 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -673,14 +673,17 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", - "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", + "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" + }, + "engines": { + "node": "24.x" } }, "node_modules/@ionic/eslint-config": { @@ -865,12 +868,12 @@ } }, "node_modules/@ionic/vue": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.11.tgz", - "integrity": "sha512-HDEcjhxWfimVQxvXfghrqlAWpXnJvcUDTIVE2Mvq8ul+s7gL/OZCpXTAODJOfFCBAGJ0o9QXyC7OPjyN4UbO8Q==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.12.tgz", + "integrity": "sha512-fH/acQ7dYYd1XY1HFqKf0Th6klbfNNzhlnYUf9kNQpkHqUpMamSzA8TWDOV5f4PNKYq6X4oKAPPeIQA4DOayUQ==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.11", + "@ionic/core": "8.7.12", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -8041,9 +8044,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", - "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", + "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -8156,11 +8159,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.11.tgz", - "integrity": "sha512-HDEcjhxWfimVQxvXfghrqlAWpXnJvcUDTIVE2Mvq8ul+s7gL/OZCpXTAODJOfFCBAGJ0o9QXyC7OPjyN4UbO8Q==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.12.tgz", + "integrity": "sha512-fH/acQ7dYYd1XY1HFqKf0Th6klbfNNzhlnYUf9kNQpkHqUpMamSzA8TWDOV5f4PNKYq6X4oKAPPeIQA4DOayUQ==", "requires": { - "@ionic/core": "8.7.11", + "@ionic/core": "8.7.12", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -12991,4 +12994,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 70c1dbfd596..12314e4f7a6 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -222,14 +222,17 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.11", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.11.tgz", - "integrity": "sha512-9UX9IeEztWWXymi+xCUMEBnnY+TbaR8crZLOwFnxPUEq4FFWSUCSv5XeHHQBpgZjBO2MJuDGcNv0GCQumIjVcQ==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", + "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" + }, + "engines": { + "node": "24.x" } }, "node_modules/@ionic/core/node_modules/tslib": { @@ -4019,4 +4022,4 @@ "dev": true } } -} \ No newline at end of file +} From 0e110de5e3ebf92ac0256686817eed16e7b8c779 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 11 Dec 2025 13:57:45 -0500 Subject: [PATCH 057/126] chore(deps): update capacitor to v7.0.3 (#30846) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@capacitor/haptics](https://redirect.github.com/ionic-team/capacitor-haptics) | [`7.0.2` -> `7.0.3`](https://renovatebot.com/diffs/npm/@capacitor%2fhaptics/7.0.2/7.0.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fhaptics/7.0.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fhaptics/7.0.2/7.0.3?slim=true) | | [@capacitor/keyboard](https://redirect.github.com/ionic-team/capacitor-keyboard) | [`7.0.3` -> `7.0.4`](https://renovatebot.com/diffs/npm/@capacitor%2fkeyboard/7.0.3/7.0.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fkeyboard/7.0.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fkeyboard/7.0.3/7.0.4?slim=true) | | [@capacitor/status-bar](https://redirect.github.com/ionic-team/capacitor-plugins) | [`7.0.3` -> `7.0.4`](https://renovatebot.com/diffs/npm/@capacitor%2fstatus-bar/7.0.3/7.0.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fstatus-bar/7.0.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fstatus-bar/7.0.3/7.0.4?slim=true) | --- ### Release Notes
ionic-team/capacitor-haptics (@​capacitor/haptics) ### [`v7.0.3`](https://redirect.github.com/ionic-team/capacitor-haptics/compare/v7.0.2...e492876ac85661078e39664652b01ac9e0ab08c7) [Compare Source](https://redirect.github.com/ionic-team/capacitor-haptics/compare/v7.0.2...e492876ac85661078e39664652b01ac9e0ab08c7)
ionic-team/capacitor-keyboard (@​capacitor/keyboard) ### [`v7.0.4`](https://redirect.github.com/ionic-team/capacitor-keyboard/compare/v7.0.3...e492876ac85661078e39664652b01ac9e0ab08c7) [Compare Source](https://redirect.github.com/ionic-team/capacitor-keyboard/compare/v7.0.3...e492876ac85661078e39664652b01ac9e0ab08c7)
ionic-team/capacitor-plugins (@​capacitor/status-bar) ### [`v7.0.4`](https://redirect.github.com/ionic-team/capacitor-plugins/releases/tag/%40capacitor/splash-screen%407.0.4) [Compare Source](https://redirect.github.com/ionic-team/capacitor-plugins/compare/@capacitor/status-bar@7.0.3...@capacitor/status-bar@7.0.4) **Note:** Version bump only for package [@​capacitor/splash-screen](https://redirect.github.com/capacitor/splash-screen)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- core/package-lock.json | 49 +++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 362a93bb797..0bec4769025 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -94,6 +94,7 @@ "version": "7.16.12", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.16.8", @@ -631,12 +632,15 @@ "version": "7.4.4", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@capacitor/haptics": { - "version": "7.0.2", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@capacitor/haptics/-/haptics-7.0.3.tgz", + "integrity": "sha512-6O5W4jtYKPGrulqt3pEeXKH1vWT5deSUoiiN2sVj7F6UgrEOxCmm06XS07Eeum0lDXEmksKARwtA+iQwHPswtA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -644,7 +648,9 @@ } }, "node_modules/@capacitor/keyboard": { - "version": "7.0.3", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@capacitor/keyboard/-/keyboard-7.0.4.tgz", + "integrity": "sha512-kKHsuDOC0q9iC1XANhQBK35S+hFKx4EfY9I+SEMPR6RuUAIuXQXYaA3+D0LkdRdHIf3OrlTDznPvXQ5Dg2WrCA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -652,7 +658,9 @@ } }, "node_modules/@capacitor/status-bar": { - "version": "7.0.3", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-7.0.4.tgz", + "integrity": "sha512-2BszlCqIlBZxHLjRyQbumKyuuisutkeJH+5eSKAEJKaDVJcfmAzr2v3MXWsRLrAHJFteLzRXkOlce5msSy28tQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -862,6 +870,7 @@ "version": "4.33.0", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -1799,6 +1808,7 @@ "node_modules/@stencil/core": { "version": "4.38.0", "license": "MIT", + "peer": true, "bin": { "stencil": "bin/stencil" }, @@ -2223,6 +2233,7 @@ "version": "6.7.2", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.7.2", "@typescript-eslint/types": "6.7.2", @@ -2448,7 +2459,6 @@ "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/shared": "3.5.25", @@ -2463,7 +2473,6 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=0.12" }, @@ -2476,8 +2485,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@vue/compiler-dom": { "version": "3.5.25", @@ -2485,7 +2493,6 @@ "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-core": "3.5.25", "@vue/shared": "3.5.25" @@ -2497,7 +2504,6 @@ "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/compiler-core": "3.5.25", @@ -2515,8 +2521,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@vue/compiler-sfc/node_modules/postcss": { "version": "8.5.6", @@ -2538,7 +2543,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2554,7 +2558,6 @@ "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.25", "@vue/shared": "3.5.25" @@ -2566,7 +2569,6 @@ "integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/shared": "3.5.25" } @@ -2577,7 +2579,6 @@ "integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/shared": "3.5.25" @@ -2589,7 +2590,6 @@ "integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/runtime-core": "3.5.25", @@ -2603,7 +2603,6 @@ "integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-ssr": "3.5.25", "@vue/shared": "3.5.25" @@ -2617,8 +2616,7 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz", "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@zeit/schemas": { "version": "2.21.0", @@ -2641,6 +2639,7 @@ "version": "7.4.0", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3801,8 +3800,7 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/debug": { "version": "2.6.9", @@ -4096,6 +4094,7 @@ "version": "7.32.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -7291,7 +7290,6 @@ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } @@ -7613,7 +7611,6 @@ } ], "license": "MIT", - "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -7968,6 +7965,7 @@ "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "playwright-core": "cli.js" }, @@ -7979,6 +7977,7 @@ "version": "7.0.35", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -8084,6 +8083,7 @@ "version": "0.36.2", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "postcss": ">=5.0.0" } @@ -8132,6 +8132,7 @@ "version": "2.6.1", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -8489,6 +8490,7 @@ "version": "2.35.1", "dev": true, "license": "MIT", + "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -8710,7 +8712,6 @@ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=0.10.0" } From 2ee52d77c86ef29756370f1ed732998589ca2fd8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 11 Dec 2025 19:26:50 +0000 Subject: [PATCH 058/126] chore(deps): update capacitor to v8 (major) (#30847) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@capacitor/core](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`^7.0.0` -> `^8.0.0`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/7.4.4/8.0.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fcore/8.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fcore/7.4.4/8.0.0?slim=true) | | [@capacitor/haptics](https://redirect.github.com/ionic-team/capacitor-haptics) | [`^7.0.0` -> `^8.0.0`](https://renovatebot.com/diffs/npm/@capacitor%2fhaptics/7.0.3/8.0.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fhaptics/8.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fhaptics/7.0.3/8.0.0?slim=true) | | [@capacitor/keyboard](https://redirect.github.com/ionic-team/capacitor-keyboard) | [`^7.0.0` -> `^8.0.0`](https://renovatebot.com/diffs/npm/@capacitor%2fkeyboard/7.0.4/8.0.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fkeyboard/8.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fkeyboard/7.0.4/8.0.0?slim=true) | | [@capacitor/status-bar](https://redirect.github.com/ionic-team/capacitor-plugins) | [`^7.0.0` -> `^8.0.0`](https://renovatebot.com/diffs/npm/@capacitor%2fstatus-bar/7.0.4/8.0.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fstatus-bar/8.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fstatus-bar/7.0.4/8.0.0?slim=true) | --- ### Release Notes
ionic-team/capacitor (@​capacitor/core) ### [`v8.0.0`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#800-2025-12-08) [Compare Source](https://redirect.github.com/ionic-team/capacitor/compare/7.4.4...8.0.0) ##### Bug Fixes - **cli:** Android apk name multi flavor dimensions parsing ([#​7598](https://redirect.github.com/ionic-team/capacitor/issues/7598)) ([2dc20ee](https://redirect.github.com/ionic-team/capacitor/commit/2dc20ee894c2f5761431caa8269e9f418fc222b6)) - **cli:** make migrate update to 8.0.0 ([#​8250](https://redirect.github.com/ionic-team/capacitor/issues/8250)) ([ee8ba7b](https://redirect.github.com/ionic-team/capacitor/commit/ee8ba7bbeeeef6db0461f7a59c91095fd7cbd78b)) - **ios:** move PrivacyInfo.xcprivacy to resource\_bundles to fix build… ([#​8264](https://redirect.github.com/ionic-team/capacitor/issues/8264)) ([e6f50b8](https://redirect.github.com/ionic-team/capacitor/commit/e6f50b8c0c41acaaa21af373e195751508c37e9d)) ##### Features - **android:** Improving SystemBars inset handling ([#​8268](https://redirect.github.com/ionic-team/capacitor/issues/8268)) ([81ae30a](https://redirect.github.com/ionic-team/capacitor/commit/81ae30a503797e417dd125b06262dabc4696c88a))
ionic-team/capacitor-haptics (@​capacitor/haptics) ### [`v8.0.0`](https://redirect.github.com/ionic-team/capacitor-haptics/blob/HEAD/CHANGELOG.md#800-2025-12-08) [Compare Source](https://redirect.github.com/ionic-team/capacitor-haptics/compare/e492876ac85661078e39664652b01ac9e0ab08c7...v8.0.0) ##### Bug Fixes - **android:** use 'propName = value' assignment syntax in build.gradle files ([e0d3987](https://redirect.github.com/ionic-team/capacitor-haptics/commit/e0d3987eead4811e58df1645af525db57cab4f35)) ##### feature - Capacitor 8 support ([7d840c7](https://redirect.github.com/ionic-team/capacitor-haptics/commit/7d840c78256d44bbee74026a8853c9e150be44f8)) ##### BREAKING CHANGES - Capacitor 8 requires major update
ionic-team/capacitor-keyboard (@​capacitor/keyboard) ### [`v8.0.0`](https://redirect.github.com/ionic-team/capacitor-keyboard/blob/HEAD/CHANGELOG.md#800-2025-12-08) [Compare Source](https://redirect.github.com/ionic-team/capacitor-keyboard/compare/e492876ac85661078e39664652b01ac9e0ab08c7...v8.0.0) ##### Bug Fixes - **android:** Adjust WebView sizing during keyboard size changes ([ae75247](https://redirect.github.com/ionic-team/capacitor-keyboard/commit/ae752478ffece97f2693e9f323ec9be8f3cae8bd)) - **android:** use 'propName = value' assignment syntax in build.gradle files ([37b39b0](https://redirect.github.com/ionic-team/capacitor-keyboard/commit/37b39b0c649ee9fb803d05accbb8a5160f10f7b5)) ##### feature - Capacitor 8 support ([f8c21ef](https://redirect.github.com/ionic-team/capacitor-keyboard/commit/f8c21ef521de3ae9c8fda8aae52dac2c4b8343e7)) ##### BREAKING CHANGES - Capacitor 8 requires major update
ionic-team/capacitor-plugins (@​capacitor/status-bar) ### [`v8.0.0`](https://redirect.github.com/ionic-team/capacitor-plugins/releases/tag/%40capacitor/app%408.0.0) [Compare Source](https://redirect.github.com/ionic-team/capacitor-plugins/compare/@capacitor/status-bar@7.0.4...@capacitor/status-bar@8.0.0) **Note:** Version bump only for package [@​capacitor/app](https://redirect.github.com/capacitor/app)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- core/package-lock.json | 36 +++++++++++++++++++----------------- core/package.json | 8 ++++---- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 0bec4769025..f2309b7234e 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -15,10 +15,10 @@ }, "devDependencies": { "@axe-core/playwright": "^4.11.0", - "@capacitor/core": "^7.0.0", - "@capacitor/haptics": "^7.0.0", - "@capacitor/keyboard": "^7.0.0", - "@capacitor/status-bar": "^7.0.0", + "@capacitor/core": "^8.0.0", + "@capacitor/haptics": "^8.0.0", + "@capacitor/keyboard": "^8.0.0", + "@capacitor/status-bar": "^8.0.0", "@clack/prompts": "^0.11.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", @@ -629,7 +629,9 @@ "license": "MIT" }, "node_modules/@capacitor/core": { - "version": "7.4.4", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.0.0.tgz", + "integrity": "sha512-250HTVd/W/KdMygoqaedisvNbHbpbQTN2Hy/8ZYGm1nAqE0Fx7sGss4l0nDg33STxEdDhtVRoL2fIaaiukKseA==", "dev": true, "license": "MIT", "peer": true, @@ -638,33 +640,33 @@ } }, "node_modules/@capacitor/haptics": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@capacitor/haptics/-/haptics-7.0.3.tgz", - "integrity": "sha512-6O5W4jtYKPGrulqt3pEeXKH1vWT5deSUoiiN2sVj7F6UgrEOxCmm06XS07Eeum0lDXEmksKARwtA+iQwHPswtA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@capacitor/haptics/-/haptics-8.0.0.tgz", + "integrity": "sha512-DY1IUOjke1T4ITl7mFHQIKCaJJyHYAYRYHG9bVApU7PDOZiMVGMp48Yjzdqjya+wv/AHS5mDabSTUmhJ5uDvBA==", "dev": true, "license": "MIT", "peerDependencies": { - "@capacitor/core": ">=7.0.0" + "@capacitor/core": ">=8.0.0" } }, "node_modules/@capacitor/keyboard": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@capacitor/keyboard/-/keyboard-7.0.4.tgz", - "integrity": "sha512-kKHsuDOC0q9iC1XANhQBK35S+hFKx4EfY9I+SEMPR6RuUAIuXQXYaA3+D0LkdRdHIf3OrlTDznPvXQ5Dg2WrCA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@capacitor/keyboard/-/keyboard-8.0.0.tgz", + "integrity": "sha512-ycPW6iQyFwzDK95jihesj5EGiyyGSfbBqNek11iNp9tBOB7zDeYkUA2S/vPpOETt3dhP6pWr7a9gNVGuEfj11g==", "dev": true, "license": "MIT", "peerDependencies": { - "@capacitor/core": ">=7.0.0" + "@capacitor/core": ">=8.0.0" } }, "node_modules/@capacitor/status-bar": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-7.0.4.tgz", - "integrity": "sha512-2BszlCqIlBZxHLjRyQbumKyuuisutkeJH+5eSKAEJKaDVJcfmAzr2v3MXWsRLrAHJFteLzRXkOlce5msSy28tQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-8.0.0.tgz", + "integrity": "sha512-aIj3bc7z8lfPgOen8HlrBrkfnxpFnh21OCx6jCUx4Mvv+B6eEkUQ49b32DOddgVfr+igRHLX2SYi7duqIsNDXg==", "dev": true, "license": "MIT", "peerDependencies": { - "@capacitor/core": ">=7.0.0" + "@capacitor/core": ">=8.0.0" } }, "node_modules/@clack/core": { diff --git a/core/package.json b/core/package.json index 11f78142274..c3bf9d21aaa 100644 --- a/core/package.json +++ b/core/package.json @@ -40,10 +40,10 @@ }, "devDependencies": { "@axe-core/playwright": "^4.11.0", - "@capacitor/core": "^7.0.0", - "@capacitor/haptics": "^7.0.0", - "@capacitor/keyboard": "^7.0.0", - "@capacitor/status-bar": "^7.0.0", + "@capacitor/core": "^8.0.0", + "@capacitor/haptics": "^8.0.0", + "@capacitor/keyboard": "^8.0.0", + "@capacitor/status-bar": "^8.0.0", "@clack/prompts": "^0.11.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", From cf3caa287ea177e07c02bd291c26206149c16034 Mon Sep 17 00:00:00 2001 From: Shane Date: Sat, 13 Dec 2025 07:00:20 -0800 Subject: [PATCH 059/126] chore(core): aligning core engine requirement with main ionic-framework requirement (#30869) Issue number: resolves #30868 --------- ## What is the current behavior? Currently, users are unable to use ionic-framework with node < 24. This was an accidental change, not something we actually require. ## What is the new behavior? This change aligns the core file with the [top level package.json](https://github.com/ionic-team/ionic-framework/blob/main/package.json#L9) requirement. We may want to look into upping this at some point in the future, but right now this should be fine. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information --- core/package-lock.json | 39 ++++++++++++++++++++++----------------- core/package.json | 2 +- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index f2309b7234e..8509f61dc28 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -52,7 +52,7 @@ "stylelint-order": "^4.1.0" }, "engines": { - "node": "24.x" + "node": ">= 16" } }, "custom-rules": { @@ -94,7 +94,6 @@ "version": "7.16.12", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.16.8", @@ -634,7 +633,6 @@ "integrity": "sha512-250HTVd/W/KdMygoqaedisvNbHbpbQTN2Hy/8ZYGm1nAqE0Fx7sGss4l0nDg33STxEdDhtVRoL2fIaaiukKseA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -872,7 +870,6 @@ "version": "4.33.0", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -1810,7 +1807,6 @@ "node_modules/@stencil/core": { "version": "4.38.0", "license": "MIT", - "peer": true, "bin": { "stencil": "bin/stencil" }, @@ -2235,7 +2231,6 @@ "version": "6.7.2", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.7.2", "@typescript-eslint/types": "6.7.2", @@ -2461,6 +2456,7 @@ "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/shared": "3.5.25", @@ -2475,6 +2471,7 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=0.12" }, @@ -2487,7 +2484,8 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@vue/compiler-dom": { "version": "3.5.25", @@ -2495,6 +2493,7 @@ "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-core": "3.5.25", "@vue/shared": "3.5.25" @@ -2506,6 +2505,7 @@ "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/compiler-core": "3.5.25", @@ -2523,7 +2523,8 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@vue/compiler-sfc/node_modules/postcss": { "version": "8.5.6", @@ -2545,6 +2546,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2560,6 +2562,7 @@ "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.25", "@vue/shared": "3.5.25" @@ -2571,6 +2574,7 @@ "integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/shared": "3.5.25" } @@ -2581,6 +2585,7 @@ "integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/shared": "3.5.25" @@ -2592,6 +2597,7 @@ "integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/runtime-core": "3.5.25", @@ -2605,6 +2611,7 @@ "integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-ssr": "3.5.25", "@vue/shared": "3.5.25" @@ -2618,7 +2625,8 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz", "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@zeit/schemas": { "version": "2.21.0", @@ -2641,7 +2649,6 @@ "version": "7.4.0", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3802,7 +3809,8 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/debug": { "version": "2.6.9", @@ -4096,7 +4104,6 @@ "version": "7.32.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -7292,6 +7299,7 @@ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } @@ -7613,6 +7621,7 @@ } ], "license": "MIT", + "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -7967,7 +7976,6 @@ "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "playwright-core": "cli.js" }, @@ -7979,7 +7987,6 @@ "version": "7.0.35", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -8085,7 +8092,6 @@ "version": "0.36.2", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "postcss": ">=5.0.0" } @@ -8134,7 +8140,6 @@ "version": "2.6.1", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -8492,7 +8497,6 @@ "version": "2.35.1", "dev": true, "license": "MIT", - "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -8714,6 +8718,7 @@ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", + "peer": true, "engines": { "node": ">=0.10.0" } diff --git a/core/package.json b/core/package.json index c3bf9d21aaa..7e815c3c297 100644 --- a/core/package.json +++ b/core/package.json @@ -3,7 +3,7 @@ "version": "8.7.12", "description": "Base components for Ionic", "engines": { - "node": "24.x" + "node": ">= 16" }, "keywords": [ "ionic", From f775815a134b39c96a31f70938734a57a93e4fa7 Mon Sep 17 00:00:00 2001 From: ionitron Date: Sat, 13 Dec 2025 15:51:51 +0000 Subject: [PATCH 060/126] v8.7.13 --- CHANGELOG.md | 8 ++++++++ core/CHANGELOG.md | 8 ++++++++ core/package-lock.json | 6 +++--- core/package.json | 2 +- lerna.json | 2 +- packages/angular-server/CHANGELOG.md | 8 ++++++++ packages/angular-server/package-lock.json | 8 ++++---- packages/angular-server/package.json | 4 ++-- packages/angular/CHANGELOG.md | 8 ++++++++ packages/angular/package-lock.json | 8 ++++---- packages/angular/package.json | 4 ++-- packages/docs/CHANGELOG.md | 8 ++++++++ packages/docs/package-lock.json | 6 +++--- packages/docs/package.json | 2 +- packages/react-router/CHANGELOG.md | 8 ++++++++ packages/react-router/package-lock.json | 8 ++++---- packages/react-router/package.json | 4 ++-- packages/react/CHANGELOG.md | 8 ++++++++ packages/react/package-lock.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/CHANGELOG.md | 8 ++++++++ packages/vue-router/package-lock.json | 8 ++++---- packages/vue-router/package.json | 4 ++-- packages/vue/CHANGELOG.md | 8 ++++++++ packages/vue/package-lock.json | 8 ++++---- packages/vue/package.json | 4 ++-- 26 files changed, 117 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44039ae1102..f5d8b1ae591 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) + +**Note:** Version bump only for package ionic-framework + + + + + ## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 3edf5cd89c3..d71c543621e 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) + +**Note:** Version bump only for package @ionic/core + + + + + ## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) diff --git a/core/package-lock.json b/core/package-lock.json index 8509f61dc28..2a4bee36007 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "8.7.12", + "version": "8.7.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "8.7.12", + "version": "8.7.13", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -9839,4 +9839,4 @@ } } } -} +} \ No newline at end of file diff --git a/core/package.json b/core/package.json index 7e815c3c297..fc207767f13 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "8.7.12", + "version": "8.7.13", "description": "Base components for Ionic", "engines": { "node": ">= 16" diff --git a/lerna.json b/lerna.json index 3e932560e2a..7d016233960 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "core", "packages/*" ], - "version": "8.7.12" + "version": "8.7.13" } \ No newline at end of file diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index cdce885d0d8..7b4178b5aec 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) + +**Note:** Version bump only for package @ionic/angular-server + + + + + ## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 4eee627f8dc..368e4cf4238 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular-server", - "version": "8.7.12", + "version": "8.7.13", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "8.7.12", + "version": "8.7.13", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.12" + "@ionic/core": "^8.7.13" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^16.0.0", @@ -11289,4 +11289,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index b5c6bd7ea15..ec624d15062 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "8.7.12", + "version": "8.7.13", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -62,6 +62,6 @@ }, "prettier": "@ionic/prettier-config", "dependencies": { - "@ionic/core": "^8.7.12" + "@ionic/core": "^8.7.13" } } diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index 41c9a25bec4..bc4beba98ed 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) + +**Note:** Version bump only for package @ionic/angular + + + + + ## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 18d9d9e5f79..d1aebc656ed 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "8.7.12", + "version": "8.7.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "8.7.12", + "version": "8.7.13", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.12", + "@ionic/core": "^8.7.13", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -9095,4 +9095,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular/package.json b/packages/angular/package.json index 2c015fd9212..e500c50064e 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "8.7.12", + "version": "8.7.13", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -48,7 +48,7 @@ } }, "dependencies": { - "@ionic/core": "^8.7.12", + "@ionic/core": "^8.7.13", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md index 4cc3c8f7f8a..075fa803db3 100644 --- a/packages/docs/CHANGELOG.md +++ b/packages/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) + +**Note:** Version bump only for package @ionic/docs + + + + + ## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) **Note:** Version bump only for package @ionic/docs diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 999970780cd..500ca68d18c 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,13 +1,13 @@ { "name": "@ionic/docs", - "version": "8.7.12", + "version": "8.7.13", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "8.7.12", + "version": "8.7.13", "license": "MIT" } } -} +} \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json index 0c0f81bbf97..7acd7ed7bd2 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "8.7.12", + "version": "8.7.13", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index 5b01d669edf..c5ed4776e11 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) + +**Note:** Version bump only for package @ionic/react-router + + + + + ## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) **Note:** Version bump only for package @ionic/react-router diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 56b884f97c4..c645c3bfd08 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "8.7.12", + "version": "8.7.13", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "8.7.12", + "version": "8.7.13", "license": "MIT", "dependencies": { - "@ionic/react": "^8.7.12", + "@ionic/react": "^8.7.13", "tslib": "*" }, "devDependencies": { @@ -6847,4 +6847,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 7e2f11fc05b..f9010b14e91 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "8.7.12", + "version": "8.7.13", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^8.7.12", + "@ionic/react": "^8.7.13", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 550acf8a07c..d196c993b47 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) + +**Note:** Version bump only for package @ionic/react + + + + + ## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 3f35a39caad..4432a59a243 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "8.7.12", + "version": "8.7.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "8.7.12", + "version": "8.7.13", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.12", + "@ionic/core": "^8.7.13", "ionicons": "^8.0.13", "tslib": "*" }, @@ -11916,4 +11916,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/react/package.json b/packages/react/package.json index bb2bfa74b77..1e559e7880f 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "8.7.12", + "version": "8.7.13", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -40,7 +40,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^8.7.12", + "@ionic/core": "^8.7.13", "ionicons": "^8.0.13", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index a80b6d0a24f..0e409c4d520 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) + +**Note:** Version bump only for package @ionic/vue-router + + + + + ## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) **Note:** Version bump only for package @ionic/vue-router diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index f7e737b3747..62b7dc416b8 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "8.7.12", + "version": "8.7.13", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "8.7.12", + "version": "8.7.13", "license": "MIT", "dependencies": { - "@ionic/vue": "^8.7.12" + "@ionic/vue": "^8.7.13" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", @@ -12994,4 +12994,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index cee8f5e4e54..f4865db2a67 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "8.7.12", + "version": "8.7.13", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", @@ -44,7 +44,7 @@ }, "homepage": "https://github.com/ionic-team/ionic-framework#readme", "dependencies": { - "@ionic/vue": "^8.7.12" + "@ionic/vue": "^8.7.13" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index e00ea2c3773..167449662f6 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) + +**Note:** Version bump only for package @ionic/vue + + + + + ## [8.7.12](https://github.com/ionic-team/ionic-framework/compare/v8.7.11...v8.7.12) (2025-12-10) **Note:** Version bump only for package @ionic/vue diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 12314e4f7a6..d468c882aa9 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "8.7.12", + "version": "8.7.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "8.7.12", + "version": "8.7.13", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.12", + "@ionic/core": "^8.7.13", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, @@ -4022,4 +4022,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index d89aa3cf61e..990152c0ef6 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "8.7.12", + "version": "8.7.13", "description": "Vue specific wrapper for @ionic/core", "scripts": { "eslint": "eslint src", @@ -68,7 +68,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^8.7.12", + "@ionic/core": "^8.7.13", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, From 6205338620666016157e20c610024bb823a6acb3 Mon Sep 17 00:00:00 2001 From: ionitron Date: Sat, 13 Dec 2025 15:52:33 +0000 Subject: [PATCH 061/126] chore(): update package lock files --- core/package-lock.json | 2 +- packages/angular-server/package-lock.json | 16 ++++++------ packages/angular/package-lock.json | 10 +++---- packages/docs/package-lock.json | 2 +- packages/react-router/package-lock.json | 32 +++++++++++------------ packages/react/package-lock.json | 10 +++---- packages/vue-router/package-lock.json | 32 +++++++++++------------ packages/vue/package-lock.json | 10 +++---- 8 files changed, 57 insertions(+), 57 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 2a4bee36007..0449661c83d 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -9839,4 +9839,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 368e4cf4238..b8ca7679bf5 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1031,9 +1031,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", - "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", + "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -1041,7 +1041,7 @@ "tslib": "^2.1.0" }, "engines": { - "node": "24.x" + "node": ">= 16" } }, "node_modules/@ionic/eslint-config": { @@ -7309,9 +7309,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", - "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", + "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -11289,4 +11289,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index d1aebc656ed..5f97715748d 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1398,9 +1398,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", - "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", + "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -1408,7 +1408,7 @@ "tslib": "^2.1.0" }, "engines": { - "node": "24.x" + "node": ">= 16" } }, "node_modules/@ionic/eslint-config": { @@ -9095,4 +9095,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 500ca68d18c..bbc96abd474 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -10,4 +10,4 @@ "license": "MIT" } } -} \ No newline at end of file +} diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index c645c3bfd08..4764e963749 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -238,9 +238,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", - "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", + "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -248,7 +248,7 @@ "tslib": "^2.1.0" }, "engines": { - "node": "24.x" + "node": ">= 16" } }, "node_modules/@ionic/eslint-config": { @@ -418,12 +418,12 @@ } }, "node_modules/@ionic/react": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.12.tgz", - "integrity": "sha512-gNm5L++aiwkwJrUFKhcHUUgjqnj9n03gK7UcoL7Oz+271arzmwF/FNd47G85b6PovwiYQXY2CUBvNJ7Nh4qE/A==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.13.tgz", + "integrity": "sha512-PCuIpaurVYxYZ/CoUN3gP56Fwdx+bx78Qy7V5Ac61nGGW7XpVlV4vM9328Kv7OPs5fkmIvKI6LoY78BnjF0PkA==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.12", + "@ionic/core": "8.7.13", "ionicons": "^8.0.13", "tslib": "*" }, @@ -4178,9 +4178,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", - "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", + "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -4284,11 +4284,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.12.tgz", - "integrity": "sha512-gNm5L++aiwkwJrUFKhcHUUgjqnj9n03gK7UcoL7Oz+271arzmwF/FNd47G85b6PovwiYQXY2CUBvNJ7Nh4qE/A==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.13.tgz", + "integrity": "sha512-PCuIpaurVYxYZ/CoUN3gP56Fwdx+bx78Qy7V5Ac61nGGW7XpVlV4vM9328Kv7OPs5fkmIvKI6LoY78BnjF0PkA==", "requires": { - "@ionic/core": "8.7.12", + "@ionic/core": "8.7.13", "ionicons": "^8.0.13", "tslib": "*" } @@ -6847,4 +6847,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 4432a59a243..ea43a49781a 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -736,9 +736,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", - "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", + "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -746,7 +746,7 @@ "tslib": "^2.1.0" }, "engines": { - "node": "24.x" + "node": ">= 16" } }, "node_modules/@ionic/eslint-config": { @@ -11916,4 +11916,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 62b7dc416b8..7b67f77d65a 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -673,9 +673,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", - "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", + "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -683,7 +683,7 @@ "tslib": "^2.1.0" }, "engines": { - "node": "24.x" + "node": ">= 16" } }, "node_modules/@ionic/eslint-config": { @@ -868,12 +868,12 @@ } }, "node_modules/@ionic/vue": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.12.tgz", - "integrity": "sha512-fH/acQ7dYYd1XY1HFqKf0Th6klbfNNzhlnYUf9kNQpkHqUpMamSzA8TWDOV5f4PNKYq6X4oKAPPeIQA4DOayUQ==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.13.tgz", + "integrity": "sha512-hflvGaNPABYP0Qt68YgrauVaXyjKeHODOkYzJhk36kcr+VexwTWm1FGJG1/nKKgdh6fwDIsubJvlhoZaRhtVtg==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.12", + "@ionic/core": "8.7.13", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -8044,9 +8044,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", - "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", + "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -8159,11 +8159,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.12.tgz", - "integrity": "sha512-fH/acQ7dYYd1XY1HFqKf0Th6klbfNNzhlnYUf9kNQpkHqUpMamSzA8TWDOV5f4PNKYq6X4oKAPPeIQA4DOayUQ==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.13.tgz", + "integrity": "sha512-hflvGaNPABYP0Qt68YgrauVaXyjKeHODOkYzJhk36kcr+VexwTWm1FGJG1/nKKgdh6fwDIsubJvlhoZaRhtVtg==", "requires": { - "@ionic/core": "8.7.12", + "@ionic/core": "8.7.13", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -12994,4 +12994,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index d468c882aa9..f4e71335228 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -222,9 +222,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.12.tgz", - "integrity": "sha512-+QnytOHsMMDEz45hi/t9AN8ATaWMNZ7jNdx621BGSHi0JkEl1c4NylL3cfYIPJ/78y40ZG5NzprwNiR9sXdswg==", + "version": "8.7.13", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", + "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -232,7 +232,7 @@ "tslib": "^2.1.0" }, "engines": { - "node": "24.x" + "node": ">= 16" } }, "node_modules/@ionic/core/node_modules/tslib": { @@ -4022,4 +4022,4 @@ "dev": true } } -} \ No newline at end of file +} From 82de33b96e69c89d596e13638232b69c74b16c2f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 13:31:47 -0800 Subject: [PATCH 062/126] chore(deps): update download + upload artifacts (major) (#30872) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/download-artifact](https://redirect.github.com/actions/download-artifact) | action | major | `v6` -> `v7` | | [actions/upload-artifact](https://redirect.github.com/actions/upload-artifact) | action | major | `v5` -> `v6` | --- ### Release Notes
actions/download-artifact (actions/download-artifact) ### [`v7`](https://redirect.github.com/actions/download-artifact/compare/v6...v7) [Compare Source](https://redirect.github.com/actions/download-artifact/compare/v6...v7)
actions/upload-artifact (actions/upload-artifact) ### [`v6`](https://redirect.github.com/actions/upload-artifact/compare/v5...v6) [Compare Source](https://redirect.github.com/actions/upload-artifact/compare/v5...v6)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/actions/download-archive/action.yml | 2 +- .github/workflows/actions/test-core-screenshot/action.yml | 2 +- .../workflows/actions/update-reference-screenshots/action.yml | 2 +- .github/workflows/actions/upload-archive/action.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/actions/download-archive/action.yml b/.github/workflows/actions/download-archive/action.yml index 70f201e3d67..e61c44a0910 100644 --- a/.github/workflows/actions/download-archive/action.yml +++ b/.github/workflows/actions/download-archive/action.yml @@ -10,7 +10,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: ${{ inputs.name }} path: ${{ inputs.path }} diff --git a/.github/workflows/actions/test-core-screenshot/action.yml b/.github/workflows/actions/test-core-screenshot/action.yml index aef3b3620c6..e3c7d8771d5 100644 --- a/.github/workflows/actions/test-core-screenshot/action.yml +++ b/.github/workflows/actions/test-core-screenshot/action.yml @@ -62,7 +62,7 @@ runs: working-directory: ./core - name: πŸ“¦ Archive Updated Screenshots if: inputs.update == 'true' && steps.test-and-update.outputs.hasUpdatedScreenshots == 'true' - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: updated-screenshots-${{ inputs.shard }}-${{ inputs.totalShards }} path: UpdatedScreenshots-${{ inputs.shard }}-${{ inputs.totalShards }}.zip diff --git a/.github/workflows/actions/update-reference-screenshots/action.yml b/.github/workflows/actions/update-reference-screenshots/action.yml index 991913477bc..ad41d5e724d 100644 --- a/.github/workflows/actions/update-reference-screenshots/action.yml +++ b/.github/workflows/actions/update-reference-screenshots/action.yml @@ -10,7 +10,7 @@ runs: - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: path: ./artifacts - name: πŸ”Ž Extract Archives diff --git a/.github/workflows/actions/upload-archive/action.yml b/.github/workflows/actions/upload-archive/action.yml index e836e84c82d..67465651c88 100644 --- a/.github/workflows/actions/upload-archive/action.yml +++ b/.github/workflows/actions/upload-archive/action.yml @@ -13,7 +13,7 @@ runs: - name: πŸ—„οΈ Create Archive run: zip -q -r ${{ inputs.output }} ${{ inputs.paths }} shell: bash - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v6 with: name: ${{ inputs.name }} path: ${{ inputs.output }} From 03fb422bfa775e3e9dd695ea1857fa88d4245ecd Mon Sep 17 00:00:00 2001 From: Shane Date: Tue, 16 Dec 2025 16:11:10 -0800 Subject: [PATCH 063/126] fix(tabs): select correct tab when routes have similar prefixes (#30863) Issue number: resolves #30448 --------- ## What is the current behavior? When using ion-tabs with routes that share a common prefix (e.g., `/home`, `/home2`, `/home3`), navigating to `/home2` incorrectly highlights the `/home` tab. This occurs because the tab matching logic uses `pathname.startsWith(href)`, which causes `/home2` to match `/home` since `/home2` starts with `/home`. ## What is the new behavior? Tab selection now uses path segment matching instead of simple prefix matching. A tab's href will only match if the pathname is an exact match OR starts with the href followed by a / (for nested routes). This ensures /home2 no longer incorrectly matches /home, while still allowing /home/details to correctly match the /home tab. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information Current dev build: ``` 8.7.13-dev.11765486444.14025098 ``` --------- Co-authored-by: Maria Hutt Co-authored-by: Brandy Smith --- .../src/components/navigation/IonTabBar.tsx | 18 +++- packages/react/test/base/src/App.tsx | 2 + packages/react/test/base/src/pages/Main.tsx | 3 + .../base/src/pages/TabsSimilarPrefixes.tsx | 87 +++++++++++++++++++ .../test/base/tests/e2e/specs/tabs/tabs.cy.ts | 41 +++++++++ packages/vue/src/components/IonTabBar.ts | 21 ++++- packages/vue/test/base/src/router/index.ts | 22 +++++ packages/vue/test/base/src/views/Home.vue | 3 + .../src/views/tabs-similar-prefixes/Home.vue | 16 ++++ .../src/views/tabs-similar-prefixes/Home2.vue | 16 ++++ .../src/views/tabs-similar-prefixes/Home3.vue | 16 ++++ .../TabsSimilarPrefixes.vue | 54 ++++++++++++ .../vue/test/base/tests/e2e/specs/tabs.cy.js | 41 +++++++++ 13 files changed, 337 insertions(+), 3 deletions(-) create mode 100644 packages/react/test/base/src/pages/TabsSimilarPrefixes.tsx create mode 100644 packages/vue/test/base/src/views/tabs-similar-prefixes/Home.vue create mode 100644 packages/vue/test/base/src/views/tabs-similar-prefixes/Home2.vue create mode 100644 packages/vue/test/base/src/views/tabs-similar-prefixes/Home3.vue create mode 100644 packages/vue/test/base/src/views/tabs-similar-prefixes/TabsSimilarPrefixes.vue diff --git a/packages/react/src/components/navigation/IonTabBar.tsx b/packages/react/src/components/navigation/IonTabBar.tsx index 92fde774ddd..124b00f6990 100644 --- a/packages/react/src/components/navigation/IonTabBar.tsx +++ b/packages/react/src/components/navigation/IonTabBar.tsx @@ -40,6 +40,20 @@ interface IonTabBarState { // TODO(FW-2959): types +/** + * Checks if pathname matches the tab's href using path segment matching. + * Avoids false matches like /home2 matching /home by requiring exact match + * or a path segment boundary (/). + */ +const matchesTab = (pathname: string, href: string | undefined): boolean => { + if (href === undefined) { + return false; + } + + const normalizedHref = href.endsWith('/') && href !== '/' ? href.slice(0, -1) : href; + return pathname === normalizedHref || pathname.startsWith(normalizedHref + '/'); +}; + class IonTabBarUnwrapped extends React.PureComponent { context!: React.ContextType; @@ -79,7 +93,7 @@ class IonTabBarUnwrapped extends React.PureComponent { const href = tabs[key].originalHref; - return this.props.routeInfo!.pathname.startsWith(href); + return matchesTab(this.props.routeInfo!.pathname, href); }); if (activeTab) { @@ -121,7 +135,7 @@ class IonTabBarUnwrapped extends React.PureComponent { const href = state.tabs[key].originalHref; - return props.routeInfo!.pathname.startsWith(href); + return matchesTab(props.routeInfo!.pathname, href); }); // Check to see if the tab button href has changed, and if so, update it in the tabs state diff --git a/packages/react/test/base/src/App.tsx b/packages/react/test/base/src/App.tsx index 634af89f075..c8ea117f60e 100644 --- a/packages/react/test/base/src/App.tsx +++ b/packages/react/test/base/src/App.tsx @@ -28,6 +28,7 @@ import Tabs from './pages/Tabs'; import TabsBasic from './pages/TabsBasic'; import NavComponent from './pages/navigation/NavComponent'; import TabsDirectNavigation from './pages/TabsDirectNavigation'; +import TabsSimilarPrefixes from './pages/TabsSimilarPrefixes'; import IonModalConditional from './pages/overlay-components/IonModalConditional'; import IonModalConditionalSibling from './pages/overlay-components/IonModalConditionalSibling'; import IonModalDatetimeButton from './pages/overlay-components/IonModalDatetimeButton'; @@ -67,6 +68,7 @@ const App: React.FC = () => ( + diff --git a/packages/react/test/base/src/pages/Main.tsx b/packages/react/test/base/src/pages/Main.tsx index 3873cd3d5b5..e0dbdffcf6a 100644 --- a/packages/react/test/base/src/pages/Main.tsx +++ b/packages/react/test/base/src/pages/Main.tsx @@ -46,6 +46,9 @@ const Main: React.FC = () => { Tabs with Direct Navigation + + Tabs with Similar Route Prefixes + Icons diff --git a/packages/react/test/base/src/pages/TabsSimilarPrefixes.tsx b/packages/react/test/base/src/pages/TabsSimilarPrefixes.tsx new file mode 100644 index 00000000000..78672dc075d --- /dev/null +++ b/packages/react/test/base/src/pages/TabsSimilarPrefixes.tsx @@ -0,0 +1,87 @@ +import { + IonContent, + IonHeader, + IonIcon, + IonLabel, + IonPage, + IonRouterOutlet, + IonTabBar, + IonTabButton, + IonTabs, + IonTitle, + IonToolbar, +} from '@ionic/react'; +import { homeOutline, radioOutline, libraryOutline } from 'ionicons/icons'; +import React from 'react'; +import { Route, Redirect } from 'react-router-dom'; + +const HomePage: React.FC = () => ( + + + + Home + + + +
Home Content
+
+
+); + +const Home2Page: React.FC = () => ( + + + + Home 2 + + + +
Home 2 Content
+
+
+); + +const Home3Page: React.FC = () => ( + + + + Home 3 + + + +
Home 3 Content
+
+
+); + +const TabsSimilarPrefixes: React.FC = () => { + return ( + + + + } exact={true} /> + } exact={true} /> + } exact={true} /> + + + + + + Home + + + + + Home 2 + + + + + Home 3 + + + + ); +}; + +export default TabsSimilarPrefixes; diff --git a/packages/react/test/base/tests/e2e/specs/tabs/tabs.cy.ts b/packages/react/test/base/tests/e2e/specs/tabs/tabs.cy.ts index 544fdc47c41..34b4ee4f1e6 100644 --- a/packages/react/test/base/tests/e2e/specs/tabs/tabs.cy.ts +++ b/packages/react/test/base/tests/e2e/specs/tabs/tabs.cy.ts @@ -1,4 +1,45 @@ describe('IonTabs', () => { + /** + * Verifies that tabs with similar route prefixes (e.g., /home, /home2, /home3) + * correctly select the matching tab instead of the first prefix match. + * + * @see https://github.com/ionic-team/ionic-framework/issues/30448 + */ + describe('Similar Route Prefixes', () => { + it('should select the correct tab when routes have similar prefixes', () => { + cy.visit('/tabs-similar-prefixes/home2'); + + cy.get('[data-testid="home2-content"]').should('be.visible'); + cy.get('[data-testid="home2-tab"]').should('have.class', 'tab-selected'); + cy.get('[data-testid="home-tab"]').should('not.have.class', 'tab-selected'); + }); + + it('should select the correct tab when navigating via tab buttons', () => { + cy.visit('/tabs-similar-prefixes/home'); + + cy.get('[data-testid="home-tab"]').should('have.class', 'tab-selected'); + cy.get('[data-testid="home2-tab"]').should('not.have.class', 'tab-selected'); + + cy.get('[data-testid="home2-tab"]').click(); + cy.get('[data-testid="home2-tab"]').should('have.class', 'tab-selected'); + cy.get('[data-testid="home-tab"]').should('not.have.class', 'tab-selected'); + + cy.get('[data-testid="home3-tab"]').click(); + cy.get('[data-testid="home3-tab"]').should('have.class', 'tab-selected'); + cy.get('[data-testid="home-tab"]').should('not.have.class', 'tab-selected'); + cy.get('[data-testid="home2-tab"]').should('not.have.class', 'tab-selected'); + }); + + it('should select the correct tab when directly navigating to home3', () => { + cy.visit('/tabs-similar-prefixes/home3'); + + cy.get('[data-testid="home3-content"]').should('be.visible'); + cy.get('[data-testid="home3-tab"]').should('have.class', 'tab-selected'); + cy.get('[data-testid="home-tab"]').should('not.have.class', 'tab-selected'); + cy.get('[data-testid="home2-tab"]').should('not.have.class', 'tab-selected'); + }); + }); + describe('With IonRouterOutlet', () => { beforeEach(() => { cy.visit('/tabs/tab1'); diff --git a/packages/vue/src/components/IonTabBar.ts b/packages/vue/src/components/IonTabBar.ts index 4da54f9eee0..30002f4d858 100644 --- a/packages/vue/src/components/IonTabBar.ts +++ b/packages/vue/src/components/IonTabBar.ts @@ -24,6 +24,23 @@ interface TabBarData { const isTabButton = (child: any) => child.type?.name === "IonTabButton"; +/** + * Checks if pathname matches the tab's href using path segment matching. + * Avoids false matches like /home2 matching /home by requiring exact match + * or a path segment boundary (/). + */ +const matchesTab = (pathname: string, href: string | undefined): boolean => { + if (href === undefined) { + return false; + } + + const normalizedHref = + href.endsWith("/") && href !== "/" ? href.slice(0, -1) : href; + return ( + pathname === normalizedHref || pathname.startsWith(normalizedHref + "/") + ); +}; + const getTabs = (nodes: VNode[]) => { let tabs: VNode[] = []; nodes.forEach((node: VNode) => { @@ -135,7 +152,9 @@ export const IonTabBar = defineComponent({ const tabKeys = Object.keys(tabs); let activeTab = tabKeys.find((key) => { const href = tabs[key].originalHref; - return currentRoute?.pathname.startsWith(href); + return ( + currentRoute?.pathname && matchesTab(currentRoute.pathname, href) + ); }); /** diff --git a/packages/vue/test/base/src/router/index.ts b/packages/vue/test/base/src/router/index.ts index ab5850e33c0..e518550fd01 100644 --- a/packages/vue/test/base/src/router/index.ts +++ b/packages/vue/test/base/src/router/index.ts @@ -165,6 +165,28 @@ const routes: Array = [ path: '/tabs-basic', component: () => import('@/views/TabsBasic.vue') }, + { + path: '/tabs-similar-prefixes/', + component: () => import('@/views/tabs-similar-prefixes/TabsSimilarPrefixes.vue'), + children: [ + { + path: '', + redirect: '/tabs-similar-prefixes/home' + }, + { + path: 'home', + component: () => import('@/views/tabs-similar-prefixes/Home.vue'), + }, + { + path: 'home2', + component: () => import('@/views/tabs-similar-prefixes/Home2.vue'), + }, + { + path: 'home3', + component: () => import('@/views/tabs-similar-prefixes/Home3.vue'), + } + ] + }, ] const router = createRouter({ diff --git a/packages/vue/test/base/src/views/Home.vue b/packages/vue/test/base/src/views/Home.vue index a3ddbdf99c2..d37ab45bbea 100644 --- a/packages/vue/test/base/src/views/Home.vue +++ b/packages/vue/test/base/src/views/Home.vue @@ -50,6 +50,9 @@ Tabs with Basic Navigation + + Tabs with Similar Route Prefixes + Lifecycle diff --git a/packages/vue/test/base/src/views/tabs-similar-prefixes/Home.vue b/packages/vue/test/base/src/views/tabs-similar-prefixes/Home.vue new file mode 100644 index 00000000000..0954fac9d4f --- /dev/null +++ b/packages/vue/test/base/src/views/tabs-similar-prefixes/Home.vue @@ -0,0 +1,16 @@ + + + diff --git a/packages/vue/test/base/src/views/tabs-similar-prefixes/Home2.vue b/packages/vue/test/base/src/views/tabs-similar-prefixes/Home2.vue new file mode 100644 index 00000000000..4e190d99e98 --- /dev/null +++ b/packages/vue/test/base/src/views/tabs-similar-prefixes/Home2.vue @@ -0,0 +1,16 @@ + + + diff --git a/packages/vue/test/base/src/views/tabs-similar-prefixes/Home3.vue b/packages/vue/test/base/src/views/tabs-similar-prefixes/Home3.vue new file mode 100644 index 00000000000..78099959b06 --- /dev/null +++ b/packages/vue/test/base/src/views/tabs-similar-prefixes/Home3.vue @@ -0,0 +1,16 @@ + + + diff --git a/packages/vue/test/base/src/views/tabs-similar-prefixes/TabsSimilarPrefixes.vue b/packages/vue/test/base/src/views/tabs-similar-prefixes/TabsSimilarPrefixes.vue new file mode 100644 index 00000000000..8ec968edbd2 --- /dev/null +++ b/packages/vue/test/base/src/views/tabs-similar-prefixes/TabsSimilarPrefixes.vue @@ -0,0 +1,54 @@ + + + diff --git a/packages/vue/test/base/tests/e2e/specs/tabs.cy.js b/packages/vue/test/base/tests/e2e/specs/tabs.cy.js index 2b6cb15790f..1fdc83cf720 100644 --- a/packages/vue/test/base/tests/e2e/specs/tabs.cy.js +++ b/packages/vue/test/base/tests/e2e/specs/tabs.cy.js @@ -1,4 +1,45 @@ describe('Tabs', () => { + /** + * Verifies that tabs with similar route prefixes (e.g., /home, /home2, /home3) + * correctly select the matching tab instead of the first prefix match. + * + * @see https://github.com/ionic-team/ionic-framework/issues/30448 + */ + describe('Similar Route Prefixes', () => { + it('should select the correct tab when routes have similar prefixes', () => { + cy.visit('/tabs-similar-prefixes/home2'); + + cy.get('[data-testid="home2-content"]').should('be.visible'); + cy.get('[data-testid="home2-tab"]').should('have.class', 'tab-selected'); + cy.get('[data-testid="home-tab"]').should('not.have.class', 'tab-selected'); + }); + + it('should select the correct tab when navigating via tab buttons', () => { + cy.visit('/tabs-similar-prefixes/home'); + + cy.get('[data-testid="home-tab"]').should('have.class', 'tab-selected'); + cy.get('[data-testid="home2-tab"]').should('not.have.class', 'tab-selected'); + + cy.get('[data-testid="home2-tab"]').click(); + cy.get('[data-testid="home2-tab"]').should('have.class', 'tab-selected'); + cy.get('[data-testid="home-tab"]').should('not.have.class', 'tab-selected'); + + cy.get('[data-testid="home3-tab"]').click(); + cy.get('[data-testid="home3-tab"]').should('have.class', 'tab-selected'); + cy.get('[data-testid="home-tab"]').should('not.have.class', 'tab-selected'); + cy.get('[data-testid="home2-tab"]').should('not.have.class', 'tab-selected'); + }); + + it('should select the correct tab when directly navigating to home3', () => { + cy.visit('/tabs-similar-prefixes/home3'); + + cy.get('[data-testid="home3-content"]').should('be.visible'); + cy.get('[data-testid="home3-tab"]').should('have.class', 'tab-selected'); + cy.get('[data-testid="home-tab"]').should('not.have.class', 'tab-selected'); + cy.get('[data-testid="home2-tab"]').should('not.have.class', 'tab-selected'); + }); + }); + describe('With IonRouterOutlet', () => { it('should go back from child pages', () => { cy.visit('/tabs'); From f7af5d3ca591998e53afd9700d6f60222642282b Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 17 Dec 2025 17:50:44 +0000 Subject: [PATCH 064/126] v8.7.14 --- CHANGELOG.md | 11 +++++++++++ core/CHANGELOG.md | 8 ++++++++ core/package-lock.json | 6 +++--- core/package.json | 2 +- lerna.json | 2 +- packages/angular-server/CHANGELOG.md | 8 ++++++++ packages/angular-server/package-lock.json | 8 ++++---- packages/angular-server/package.json | 4 ++-- packages/angular/CHANGELOG.md | 8 ++++++++ packages/angular/package-lock.json | 8 ++++---- packages/angular/package.json | 4 ++-- packages/docs/CHANGELOG.md | 8 ++++++++ packages/docs/package-lock.json | 6 +++--- packages/docs/package.json | 2 +- packages/react-router/CHANGELOG.md | 8 ++++++++ packages/react-router/package-lock.json | 8 ++++---- packages/react-router/package.json | 4 ++-- packages/react/CHANGELOG.md | 11 +++++++++++ packages/react/package-lock.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/CHANGELOG.md | 8 ++++++++ packages/vue-router/package-lock.json | 8 ++++---- packages/vue-router/package.json | 4 ++-- packages/vue/CHANGELOG.md | 11 +++++++++++ packages/vue/package-lock.json | 8 ++++---- packages/vue/package.json | 4 ++-- 26 files changed, 126 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5d8b1ae591..d04b799720e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.14](https://github.com/ionic-team/ionic-framework/compare/v8.7.13...v8.7.14) (2025-12-17) + + +### Bug Fixes + +* **tabs:** select correct tab when routes have similar prefixes ([#30863](https://github.com/ionic-team/ionic-framework/issues/30863)) ([03fb422](https://github.com/ionic-team/ionic-framework/commit/03fb422bfa775e3e9dd695ea1857fa88d4245ecd)), closes [#30448](https://github.com/ionic-team/ionic-framework/issues/30448) + + + + + ## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) **Note:** Version bump only for package ionic-framework diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index d71c543621e..b1138a8c984 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.14](https://github.com/ionic-team/ionic-framework/compare/v8.7.13...v8.7.14) (2025-12-17) + +**Note:** Version bump only for package @ionic/core + + + + + ## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) **Note:** Version bump only for package @ionic/core diff --git a/core/package-lock.json b/core/package-lock.json index 0449661c83d..94a79ded508 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "8.7.13", + "version": "8.7.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "8.7.13", + "version": "8.7.14", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -9839,4 +9839,4 @@ } } } -} +} \ No newline at end of file diff --git a/core/package.json b/core/package.json index fc207767f13..a61a961d33a 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "8.7.13", + "version": "8.7.14", "description": "Base components for Ionic", "engines": { "node": ">= 16" diff --git a/lerna.json b/lerna.json index 7d016233960..f1a42eb9adb 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "core", "packages/*" ], - "version": "8.7.13" + "version": "8.7.14" } \ No newline at end of file diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index 7b4178b5aec..b85cf7b4af2 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.14](https://github.com/ionic-team/ionic-framework/compare/v8.7.13...v8.7.14) (2025-12-17) + +**Note:** Version bump only for package @ionic/angular-server + + + + + ## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index b8ca7679bf5..5c911b82693 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular-server", - "version": "8.7.13", + "version": "8.7.14", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "8.7.13", + "version": "8.7.14", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.13" + "@ionic/core": "^8.7.14" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^16.0.0", @@ -11289,4 +11289,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index ec624d15062..7cd4bc6cdc5 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "8.7.13", + "version": "8.7.14", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -62,6 +62,6 @@ }, "prettier": "@ionic/prettier-config", "dependencies": { - "@ionic/core": "^8.7.13" + "@ionic/core": "^8.7.14" } } diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index bc4beba98ed..012bd397c46 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.14](https://github.com/ionic-team/ionic-framework/compare/v8.7.13...v8.7.14) (2025-12-17) + +**Note:** Version bump only for package @ionic/angular + + + + + ## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) **Note:** Version bump only for package @ionic/angular diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 5f97715748d..cc1e3781419 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "8.7.13", + "version": "8.7.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "8.7.13", + "version": "8.7.14", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.13", + "@ionic/core": "^8.7.14", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -9095,4 +9095,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular/package.json b/packages/angular/package.json index e500c50064e..a5b9322d46b 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "8.7.13", + "version": "8.7.14", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -48,7 +48,7 @@ } }, "dependencies": { - "@ionic/core": "^8.7.13", + "@ionic/core": "^8.7.14", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md index 075fa803db3..31769f43b2b 100644 --- a/packages/docs/CHANGELOG.md +++ b/packages/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.14](https://github.com/ionic-team/ionic-framework/compare/v8.7.13...v8.7.14) (2025-12-17) + +**Note:** Version bump only for package @ionic/docs + + + + + ## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) **Note:** Version bump only for package @ionic/docs diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index bbc96abd474..38af8b1bc99 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,13 +1,13 @@ { "name": "@ionic/docs", - "version": "8.7.13", + "version": "8.7.14", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "8.7.13", + "version": "8.7.14", "license": "MIT" } } -} +} \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json index 7acd7ed7bd2..bb42b1bff7f 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "8.7.13", + "version": "8.7.14", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index c5ed4776e11..0fa577225a1 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.14](https://github.com/ionic-team/ionic-framework/compare/v8.7.13...v8.7.14) (2025-12-17) + +**Note:** Version bump only for package @ionic/react-router + + + + + ## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) **Note:** Version bump only for package @ionic/react-router diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 4764e963749..633a6e01f83 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "8.7.13", + "version": "8.7.14", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "8.7.13", + "version": "8.7.14", "license": "MIT", "dependencies": { - "@ionic/react": "^8.7.13", + "@ionic/react": "^8.7.14", "tslib": "*" }, "devDependencies": { @@ -6847,4 +6847,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/react-router/package.json b/packages/react-router/package.json index f9010b14e91..d52d5364f02 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "8.7.13", + "version": "8.7.14", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^8.7.13", + "@ionic/react": "^8.7.14", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index d196c993b47..7916238f80f 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.14](https://github.com/ionic-team/ionic-framework/compare/v8.7.13...v8.7.14) (2025-12-17) + + +### Bug Fixes + +* **tabs:** select correct tab when routes have similar prefixes ([#30863](https://github.com/ionic-team/ionic-framework/issues/30863)) ([03fb422](https://github.com/ionic-team/ionic-framework/commit/03fb422bfa775e3e9dd695ea1857fa88d4245ecd)), closes [#30448](https://github.com/ionic-team/ionic-framework/issues/30448) + + + + + ## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) **Note:** Version bump only for package @ionic/react diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index ea43a49781a..6d2983e8857 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "8.7.13", + "version": "8.7.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "8.7.13", + "version": "8.7.14", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.13", + "@ionic/core": "^8.7.14", "ionicons": "^8.0.13", "tslib": "*" }, @@ -11916,4 +11916,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/react/package.json b/packages/react/package.json index 1e559e7880f..1404de8d4a5 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "8.7.13", + "version": "8.7.14", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -40,7 +40,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^8.7.13", + "@ionic/core": "^8.7.14", "ionicons": "^8.0.13", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index 0e409c4d520..38c7bd11d99 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.14](https://github.com/ionic-team/ionic-framework/compare/v8.7.13...v8.7.14) (2025-12-17) + +**Note:** Version bump only for package @ionic/vue-router + + + + + ## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) **Note:** Version bump only for package @ionic/vue-router diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 7b67f77d65a..c333e34ebf2 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "8.7.13", + "version": "8.7.14", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "8.7.13", + "version": "8.7.14", "license": "MIT", "dependencies": { - "@ionic/vue": "^8.7.13" + "@ionic/vue": "^8.7.14" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", @@ -12994,4 +12994,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index f4865db2a67..fd9211fe98d 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "8.7.13", + "version": "8.7.14", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", @@ -44,7 +44,7 @@ }, "homepage": "https://github.com/ionic-team/ionic-framework#readme", "dependencies": { - "@ionic/vue": "^8.7.13" + "@ionic/vue": "^8.7.14" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index 167449662f6..8ec7d30f7e5 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.7.14](https://github.com/ionic-team/ionic-framework/compare/v8.7.13...v8.7.14) (2025-12-17) + + +### Bug Fixes + +* **tabs:** select correct tab when routes have similar prefixes ([#30863](https://github.com/ionic-team/ionic-framework/issues/30863)) ([03fb422](https://github.com/ionic-team/ionic-framework/commit/03fb422bfa775e3e9dd695ea1857fa88d4245ecd)), closes [#30448](https://github.com/ionic-team/ionic-framework/issues/30448) + + + + + ## [8.7.13](https://github.com/ionic-team/ionic-framework/compare/v8.7.12...v8.7.13) (2025-12-13) **Note:** Version bump only for package @ionic/vue diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index f4e71335228..b6b52966e5b 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "8.7.13", + "version": "8.7.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "8.7.13", + "version": "8.7.14", "license": "MIT", "dependencies": { - "@ionic/core": "^8.7.13", + "@ionic/core": "^8.7.14", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, @@ -4022,4 +4022,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index 990152c0ef6..45f3764c4f1 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "8.7.13", + "version": "8.7.14", "description": "Vue specific wrapper for @ionic/core", "scripts": { "eslint": "eslint src", @@ -68,7 +68,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^8.7.13", + "@ionic/core": "^8.7.14", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, From b9fdfab66786f0ce3595b5b3e66a76c27b2a7719 Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 17 Dec 2025 17:51:54 +0000 Subject: [PATCH 065/126] chore(): update package lock files --- core/package-lock.json | 2 +- packages/angular-server/package-lock.json | 14 +++++------ packages/angular/package-lock.json | 8 +++--- packages/docs/package-lock.json | 2 +- packages/react-router/package-lock.json | 30 +++++++++++------------ packages/react/package-lock.json | 8 +++--- packages/vue-router/package-lock.json | 30 +++++++++++------------ packages/vue/package-lock.json | 8 +++--- 8 files changed, 51 insertions(+), 51 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 94a79ded508..da06cc940e0 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -9839,4 +9839,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 5c911b82693..3d9097f3bca 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1031,9 +1031,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", - "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.14.tgz", + "integrity": "sha512-9CHfow8n19tmfSllUHj3NITqKQGrZHHEF/iyG7xPOlQ9SQ2V4bzd3rHIZ3CKVet1Z/y4HLe0uRShZnmFkSujng==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -7309,9 +7309,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", - "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.14.tgz", + "integrity": "sha512-9CHfow8n19tmfSllUHj3NITqKQGrZHHEF/iyG7xPOlQ9SQ2V4bzd3rHIZ3CKVet1Z/y4HLe0uRShZnmFkSujng==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -11289,4 +11289,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index cc1e3781419..43082656525 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1398,9 +1398,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", - "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.14.tgz", + "integrity": "sha512-9CHfow8n19tmfSllUHj3NITqKQGrZHHEF/iyG7xPOlQ9SQ2V4bzd3rHIZ3CKVet1Z/y4HLe0uRShZnmFkSujng==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -9095,4 +9095,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 38af8b1bc99..696bf80792b 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -10,4 +10,4 @@ "license": "MIT" } } -} \ No newline at end of file +} diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 633a6e01f83..22ea0283288 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -238,9 +238,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", - "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.14.tgz", + "integrity": "sha512-9CHfow8n19tmfSllUHj3NITqKQGrZHHEF/iyG7xPOlQ9SQ2V4bzd3rHIZ3CKVet1Z/y4HLe0uRShZnmFkSujng==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -418,12 +418,12 @@ } }, "node_modules/@ionic/react": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.13.tgz", - "integrity": "sha512-PCuIpaurVYxYZ/CoUN3gP56Fwdx+bx78Qy7V5Ac61nGGW7XpVlV4vM9328Kv7OPs5fkmIvKI6LoY78BnjF0PkA==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.14.tgz", + "integrity": "sha512-8lJZz+GbwDs0HEZuSjFQkg2+fGNdVrISh9N+SAlKRajtea4wva3hBjDUl21iE/u32W7xOslTGdZ9zIdAPYjHlg==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.13", + "@ionic/core": "8.7.14", "ionicons": "^8.0.13", "tslib": "*" }, @@ -4178,9 +4178,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", - "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.14.tgz", + "integrity": "sha512-9CHfow8n19tmfSllUHj3NITqKQGrZHHEF/iyG7xPOlQ9SQ2V4bzd3rHIZ3CKVet1Z/y4HLe0uRShZnmFkSujng==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -4284,11 +4284,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.13.tgz", - "integrity": "sha512-PCuIpaurVYxYZ/CoUN3gP56Fwdx+bx78Qy7V5Ac61nGGW7XpVlV4vM9328Kv7OPs5fkmIvKI6LoY78BnjF0PkA==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.7.14.tgz", + "integrity": "sha512-8lJZz+GbwDs0HEZuSjFQkg2+fGNdVrISh9N+SAlKRajtea4wva3hBjDUl21iE/u32W7xOslTGdZ9zIdAPYjHlg==", "requires": { - "@ionic/core": "8.7.13", + "@ionic/core": "8.7.14", "ionicons": "^8.0.13", "tslib": "*" } @@ -6847,4 +6847,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 6d2983e8857..39d3a60c664 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -736,9 +736,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", - "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.14.tgz", + "integrity": "sha512-9CHfow8n19tmfSllUHj3NITqKQGrZHHEF/iyG7xPOlQ9SQ2V4bzd3rHIZ3CKVet1Z/y4HLe0uRShZnmFkSujng==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -11916,4 +11916,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index c333e34ebf2..a6d92ecc54c 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -673,9 +673,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", - "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.14.tgz", + "integrity": "sha512-9CHfow8n19tmfSllUHj3NITqKQGrZHHEF/iyG7xPOlQ9SQ2V4bzd3rHIZ3CKVet1Z/y4HLe0uRShZnmFkSujng==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -868,12 +868,12 @@ } }, "node_modules/@ionic/vue": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.13.tgz", - "integrity": "sha512-hflvGaNPABYP0Qt68YgrauVaXyjKeHODOkYzJhk36kcr+VexwTWm1FGJG1/nKKgdh6fwDIsubJvlhoZaRhtVtg==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.14.tgz", + "integrity": "sha512-4KYsOr55N8B95zMayS036EsExD6r3i9gwXrWKa6zwKH1QowIde3oQBVzaVyQvMoebaZP5LskpeAJKgHYDTKGrg==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.13", + "@ionic/core": "8.7.14", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -8044,9 +8044,9 @@ "dev": true }, "@ionic/core": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", - "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.14.tgz", + "integrity": "sha512-9CHfow8n19tmfSllUHj3NITqKQGrZHHEF/iyG7xPOlQ9SQ2V4bzd3rHIZ3CKVet1Z/y4HLe0uRShZnmFkSujng==", "requires": { "@stencil/core": "4.38.0", "ionicons": "^8.0.13", @@ -8159,11 +8159,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.13.tgz", - "integrity": "sha512-hflvGaNPABYP0Qt68YgrauVaXyjKeHODOkYzJhk36kcr+VexwTWm1FGJG1/nKKgdh6fwDIsubJvlhoZaRhtVtg==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.7.14.tgz", + "integrity": "sha512-4KYsOr55N8B95zMayS036EsExD6r3i9gwXrWKa6zwKH1QowIde3oQBVzaVyQvMoebaZP5LskpeAJKgHYDTKGrg==", "requires": { - "@ionic/core": "8.7.13", + "@ionic/core": "8.7.14", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -12994,4 +12994,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index b6b52966e5b..db7070b2a80 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -222,9 +222,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.7.13", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.13.tgz", - "integrity": "sha512-72sbep6UOiGn+KYKtVSPZhKuq0o68X6mWi5sCyXYE/V1nzUknew9RGohcxbtt5iMVgjuny/m4liIUwVgvvQ5mw==", + "version": "8.7.14", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.14.tgz", + "integrity": "sha512-9CHfow8n19tmfSllUHj3NITqKQGrZHHEF/iyG7xPOlQ9SQ2V4bzd3rHIZ3CKVet1Z/y4HLe0uRShZnmFkSujng==", "license": "MIT", "dependencies": { "@stencil/core": "4.38.0", @@ -4022,4 +4022,4 @@ "dev": true } } -} \ No newline at end of file +} From 8573bf8083f75eda13c954a56731a6aac8ca5724 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Thu, 18 Dec 2025 10:16:56 -0800 Subject: [PATCH 066/126] fix(core): use Capacitor safe-area CSS variables on older WebViews (#30865) Issue number: internal --------- ## What is the current behavior? The safe area variables are only reliant on `env` variables that are provided by devices. ## What is the new behavior? Capacitor 8 has released [safe area variable fallbacks](https://capacitorjs.com/docs/apis/system-bars#android-note) to provide consistent behaviors with older Android devices: > Due to a [bug](https://issues.chromium.org/issues/40699457) in some older versions of Android WebView (< 140), correct safe area values are not available via the safe-area-inset-x CSS env variables. This plugin will inject the correct inset values into a new CSS variable(s) named --safe-area-inset-x that you can use as a fallback in your frontend styles. - Updated safe area variables to use the fallbacks provided by Capacitor. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Dev build: `8.7.13-dev.11765920447.1a01ab8b` --------- Co-authored-by: Brandy Smith --- .../components/app/test/safe-area/app.e2e.ts | 66 ++++++++++++++++--- core/src/css/core.scss | 10 +-- 2 files changed, 62 insertions(+), 14 deletions(-) diff --git a/core/src/components/app/test/safe-area/app.e2e.ts b/core/src/components/app/test/safe-area/app.e2e.ts index f2f5c8872e2..336cdffcc45 100644 --- a/core/src/components/app/test/safe-area/app.e2e.ts +++ b/core/src/components/app/test/safe-area/app.e2e.ts @@ -18,20 +18,66 @@ configs({ directions: ['ltr'] }).forEach(({ config, title, screenshot }) => { await expect(page).toHaveScreenshot(screenshot(`app-${screenshotModifier}-diff`)); }; + test.beforeEach(async ({ page }) => { await page.goto(`/src/components/app/test/safe-area`, config); }); - test('should not have visual regressions with action sheet', async ({ page }) => { - await testOverlay(page, '#show-action-sheet', 'ionActionSheetDidPresent', 'action-sheet'); - }); - test('should not have visual regressions with menu', async ({ page }) => { - await testOverlay(page, '#show-menu', 'ionDidOpen', 'menu'); - }); - test('should not have visual regressions with picker', async ({ page }) => { - await testOverlay(page, '#show-picker', 'ionPickerDidPresent', 'picker'); + + test.describe(title('Ionic safe area variables'), () => { + test.beforeEach(async ({ page }) => { + const htmlTag = page.locator('html'); + const hasSafeAreaClass = await htmlTag.evaluate((el) => el.classList.contains('safe-area')); + + expect(hasSafeAreaClass).toBe(true); + }); + + test('should not have visual regressions with action sheet', async ({ page }) => { + await testOverlay(page, '#show-action-sheet', 'ionActionSheetDidPresent', 'action-sheet'); + }); + test('should not have visual regressions with menu', async ({ page }) => { + await testOverlay(page, '#show-menu', 'ionDidOpen', 'menu'); + }); + test('should not have visual regressions with picker', async ({ page }) => { + await testOverlay(page, '#show-picker', 'ionPickerDidPresent', 'picker'); + }); + test('should not have visual regressions with toast', async ({ page }) => { + await testOverlay(page, '#show-toast', 'ionToastDidPresent', 'toast'); + }); }); - test('should not have visual regressions with toast', async ({ page }) => { - await testOverlay(page, '#show-toast', 'ionToastDidPresent', 'toast'); + + test.describe(title('Capacitor safe area variables'), () => { + test('should use safe-area-inset vars when safe-area class is not defined', async ({ page }) => { + await page.evaluate(() => { + const html = document.documentElement; + + // Remove the safe area class + html.classList.remove('safe-area'); + + // Set the safe area inset variables + html.style.setProperty('--safe-area-inset-top', '10px'); + html.style.setProperty('--safe-area-inset-bottom', '20px'); + html.style.setProperty('--safe-area-inset-left', '30px'); + html.style.setProperty('--safe-area-inset-right', '40px'); + }); + + const top = await page.evaluate(() => + getComputedStyle(document.documentElement).getPropertyValue('--ion-safe-area-top').trim() + ); + const bottom = await page.evaluate(() => + getComputedStyle(document.documentElement).getPropertyValue('--ion-safe-area-bottom').trim() + ); + const left = await page.evaluate(() => + getComputedStyle(document.documentElement).getPropertyValue('--ion-safe-area-left').trim() + ); + const right = await page.evaluate(() => + getComputedStyle(document.documentElement).getPropertyValue('--ion-safe-area-right').trim() + ); + + expect(top).toBe('10px'); + expect(bottom).toBe('20px'); + expect(left).toBe('30px'); + expect(right).toBe('40px'); + }); }); }); }); diff --git a/core/src/css/core.scss b/core/src/css/core.scss index db694fc6a07..c7f7357ab46 100644 --- a/core/src/css/core.scss +++ b/core/src/css/core.scss @@ -252,10 +252,12 @@ html.plt-ios.plt-hybrid, html.plt-ios.plt-pwa { @supports (padding-top: env(safe-area-inset-top)) { html { - --ion-safe-area-top: env(safe-area-inset-top); - --ion-safe-area-bottom: env(safe-area-inset-bottom); - --ion-safe-area-left: env(safe-area-inset-left); - --ion-safe-area-right: env(safe-area-inset-right); + // `--safe-area-inset-*` are set by Capacitor + // @see https://capacitorjs.com/docs/apis/system-bars#android-note + --ion-safe-area-top: var(--safe-area-inset-top, env(safe-area-inset-top)); + --ion-safe-area-bottom: var(--safe-area-inset-bottom, env(safe-area-inset-bottom)); + --ion-safe-area-left: var(--safe-area-inset-left, env(safe-area-inset-left)); + --ion-safe-area-right: var(--safe-area-inset-right, env(safe-area-inset-right)); } } From 3b60a1d68a1df1606ffee0bde7db7a206bac404a Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Fri, 19 Dec 2025 14:03:04 -0500 Subject: [PATCH 067/126] fix(modal): dismiss top-most overlay when multiple IDs match (#30883) Issue number: resolves #30030 --------- ## What is the current behavior? When modals are presented one after another with matching IDs and then dismissed by ID it will dismiss the first presented modal. ## What is the new behavior? - When modals are presented one after another with matching IDs and then dismissed by ID it will dismiss the last (top-most) presented modal. - Added e2e tests to verify this behavior works the same as the default dismiss (not passing an ID). ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information [Modal: Dismiss Behavior](https://ionic-framework-git-fw-7016-ionic1.vercel.app/src/components/modal/test/dismiss-behavior) --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- .../modal/test/dismiss-behavior/index.html | 97 +++++++++++++++++++ .../modal/test/dismiss-behavior/modal.e2e.ts | 58 +++++++++++ .../components/modal/test/modal-id.spec.tsx | 19 +++- core/src/utils/overlays.ts | 4 +- 4 files changed, 176 insertions(+), 2 deletions(-) create mode 100644 core/src/components/modal/test/dismiss-behavior/index.html create mode 100644 core/src/components/modal/test/dismiss-behavior/modal.e2e.ts diff --git a/core/src/components/modal/test/dismiss-behavior/index.html b/core/src/components/modal/test/dismiss-behavior/index.html new file mode 100644 index 00000000000..448b84457d9 --- /dev/null +++ b/core/src/components/modal/test/dismiss-behavior/index.html @@ -0,0 +1,97 @@ + + + + + Modal - Dismiss Behavior + + + + + + + + + + +
+ + + Modal - Dismiss Behavior + + + + + + +
+
+ + + + diff --git a/core/src/components/modal/test/dismiss-behavior/modal.e2e.ts b/core/src/components/modal/test/dismiss-behavior/modal.e2e.ts new file mode 100644 index 00000000000..7969317c447 --- /dev/null +++ b/core/src/components/modal/test/dismiss-behavior/modal.e2e.ts @@ -0,0 +1,58 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('modal: dismiss behavior'), () => { + test.describe(title('modal: default dismiss'), () => { + test('should dismiss the last presented modal when the default dismiss button is clicked', async ({ page }) => { + await page.goto('/src/components/modal/test/dismiss-behavior', config); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + const ionModalDidDismiss = await page.spyOnEvent('ionModalDidDismiss'); + + await page.click('#present-first-modal'); + await ionModalDidPresent.next(); + const firstModal = page.locator('ion-modal[data-testid="modal-1"]'); + await expect(firstModal).toBeVisible(); + + await page.click('#present-next-modal'); + await ionModalDidPresent.next(); + const secondModal = page.locator('ion-modal[data-testid="modal-2"]'); + await expect(secondModal).toBeVisible(); + + await page.click('ion-modal[data-testid="modal-2"] ion-button.dismiss-default'); + await ionModalDidDismiss.next(); + await secondModal.waitFor({ state: 'detached' }); + + await expect(firstModal).toBeVisible(); + await expect(secondModal).toBeHidden(); + }); + }); + + test.describe(title('modal: dismiss by id'), () => { + test('should dismiss the last presented modal when the dismiss by id button is clicked', async ({ page }) => { + await page.goto('/src/components/modal/test/dismiss-behavior', config); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + const ionModalDidDismiss = await page.spyOnEvent('ionModalDidDismiss'); + + await page.click('#present-first-modal'); + await ionModalDidPresent.next(); + const firstModal = page.locator('ion-modal[data-testid="modal-1"]'); + await expect(firstModal).toBeVisible(); + + await page.click('#present-next-modal'); + await ionModalDidPresent.next(); + const secondModal = page.locator('ion-modal[data-testid="modal-2"]'); + await expect(secondModal).toBeVisible(); + + await page.click('ion-modal[data-testid="modal-2"] ion-button.dismiss-by-id'); + await ionModalDidDismiss.next(); + await secondModal.waitFor({ state: 'detached' }); + + await expect(firstModal).toBeVisible(); + await expect(secondModal).toBeHidden(); + }); + }); + }); +}); diff --git a/core/src/components/modal/test/modal-id.spec.tsx b/core/src/components/modal/test/modal-id.spec.tsx index 43f1a9eaa16..93b6d34fa91 100644 --- a/core/src/components/modal/test/modal-id.spec.tsx +++ b/core/src/components/modal/test/modal-id.spec.tsx @@ -1,7 +1,7 @@ +import { h } from '@stencil/core'; import { newSpecPage } from '@stencil/core/testing'; import { Modal } from '../modal'; -import { h } from '@stencil/core'; describe('modal: id', () => { it('modal should be assigned an incrementing id', async () => { @@ -52,4 +52,21 @@ describe('modal: id', () => { const alert = page.body.querySelector('ion-modal')!; expect(alert.id).toBe(id); }); + + it('should allow multiple modals with the same id', async () => { + const sharedId = 'shared-modal-id'; + + const page = await newSpecPage({ + components: [Modal], + template: () => [ + , + , + ], + }); + + const modals = page.body.querySelectorAll('ion-modal'); + expect(modals.length).toBe(2); + expect(modals[0].id).toBe(sharedId); + expect(modals[1].id).toBe(sharedId); + }); }); diff --git a/core/src/utils/overlays.ts b/core/src/utils/overlays.ts index 472a57559d3..59b341a7d52 100644 --- a/core/src/utils/overlays.ts +++ b/core/src/utils/overlays.ts @@ -473,7 +473,9 @@ export const getPresentedOverlay = ( id?: string ): HTMLIonOverlayElement | undefined => { const overlays = getPresentedOverlays(doc, overlayTag); - return id === undefined ? overlays[overlays.length - 1] : overlays.find((o) => o.id === id); + // If no id is provided, return the last presented overlay + // Otherwise, return the last overlay with the given id + return (id === undefined ? overlays : overlays.filter((o: HTMLIonOverlayElement) => o.id === id)).slice(-1)[0]; }; /** From f83b0005309400d674e43c497bdffbcb9d2c4d94 Mon Sep 17 00:00:00 2001 From: Israel de la Barrera Date: Mon, 22 Dec 2025 18:21:16 +0100 Subject: [PATCH 068/126] fix(header): show iOS condense header when app is in MD mode (#30690) Issue number: resolves #29929 --------- ## What is the current behavior? When forcing `mode=ios` in a collapsible header, `.header-collapse-condense` would still be applied from the `header.md.scss` file, leaving the collapsible header always hidden. ## What is the new behavior? When forcing `mode=ios` in a collapsible header, the `.header-collapse-condense` styles from the `header.md.scss` file won't be applied, and the collapsible header will be visible. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Something worth mentioning is that this behavior only appears after initial load: if the route is loaded refreshing the page, the header will appear and work correctly, but navigating forth and back will apply both the .ios and .md style files. I showcase this with a modal because It'll always display the broken hehavior. | Before | After | |--------|-------| |
+ + + Modal Custom Injector Test + + Overlay Controllers Test @@ -120,6 +125,11 @@ Popover Test + + + Popover Custom Injector Test + + diff --git a/packages/angular/test/base/src/app/standalone/modal-custom-injector/modal-custom-injector.component.ts b/packages/angular/test/base/src/app/standalone/modal-custom-injector/modal-custom-injector.component.ts new file mode 100644 index 00000000000..e889f108293 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/modal-custom-injector/modal-custom-injector.component.ts @@ -0,0 +1,57 @@ +import { Component, inject, Injector } from '@angular/core'; +import { IonContent, IonHeader, IonTitle, IonToolbar, IonButton, ModalController } from '@ionic/angular/standalone'; +import { ModalCustomInjectorModalComponent } from './modal/modal.component'; +import { TestService } from './test.service'; + +@Component({ + selector: 'app-modal-custom-injector', + template: ` + + + Modal Custom Injector Test + + + + + Open Modal with Custom Injector + + + Open Modal without Custom Injector + + + `, + standalone: true, + imports: [IonContent, IonHeader, IonTitle, IonToolbar, IonButton] +}) +export class ModalCustomInjectorComponent { + private modalController = inject(ModalController); + private injector = inject(Injector); + + async openWithCustomInjector() { + const testService = new TestService(); + testService.setValue('custom-injector-value'); + + const customInjector = Injector.create({ + providers: [{ provide: TestService, useValue: testService }], + parent: this.injector, + }); + + const modal = await this.modalController.create({ + component: ModalCustomInjectorModalComponent, + injector: customInjector, + }); + + await modal.present(); + } + + async openWithoutCustomInjector() { + try { + const modal = await this.modalController.create({ + component: ModalCustomInjectorModalComponent, + }); + await modal.present(); + } catch (e) { + alert('Error: TestService not available without custom injector'); + } + } +} diff --git a/packages/angular/test/base/src/app/standalone/modal-custom-injector/modal/modal.component.ts b/packages/angular/test/base/src/app/standalone/modal-custom-injector/modal/modal.component.ts new file mode 100644 index 00000000000..8c97d4a89e4 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/modal-custom-injector/modal/modal.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, inject } from '@angular/core'; +import { IonContent, IonHeader, IonTitle, IonToolbar, IonButton, IonButtons } from '@ionic/angular/standalone'; +import { TestService } from '../test.service'; + +@Component({ + selector: 'app-modal-custom-injector-modal', + template: ` + + + Modal with Custom Injector + + Close + + + + +

Service Value: {{ serviceValue }}

+
+ `, + standalone: true, + imports: [IonContent, IonHeader, IonTitle, IonToolbar, IonButton, IonButtons] +}) +export class ModalCustomInjectorModalComponent implements OnInit { + private testService = inject(TestService); + serviceValue = ''; + modal: HTMLIonModalElement | undefined; + + ngOnInit() { + this.serviceValue = this.testService.getValue(); + } + + dismiss() { + this.modal?.dismiss(); + } +} diff --git a/packages/angular/test/base/src/app/standalone/modal-custom-injector/test.service.ts b/packages/angular/test/base/src/app/standalone/modal-custom-injector/test.service.ts new file mode 100644 index 00000000000..c5fe87d1a48 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/modal-custom-injector/test.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export class TestService { + private value = 'default-value'; + + setValue(value: string) { + this.value = value; + } + + getValue(): string { + return this.value; + } +} diff --git a/packages/angular/test/base/src/app/standalone/popover-custom-injector/popover-custom-injector.component.ts b/packages/angular/test/base/src/app/standalone/popover-custom-injector/popover-custom-injector.component.ts new file mode 100644 index 00000000000..66b74033ef1 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/popover-custom-injector/popover-custom-injector.component.ts @@ -0,0 +1,44 @@ +import { Component, inject, Injector } from '@angular/core'; +import { IonContent, IonHeader, IonTitle, IonToolbar, IonButton, PopoverController } from '@ionic/angular/standalone'; +import { PopoverCustomInjectorPopoverComponent } from './popover/popover.component'; +import { TestService } from './test.service'; + +@Component({ + selector: 'app-popover-custom-injector', + template: ` + + + Popover Custom Injector Test + + + + + Open Popover with Custom Injector + + + `, + standalone: true, + imports: [IonContent, IonHeader, IonTitle, IonToolbar, IonButton] +}) +export class PopoverCustomInjectorComponent { + private popoverController = inject(PopoverController); + private injector = inject(Injector); + + async openWithCustomInjector(event: Event) { + const testService = new TestService(); + testService.setValue('custom-injector-value'); + + const customInjector = Injector.create({ + providers: [{ provide: TestService, useValue: testService }], + parent: this.injector, + }); + + const popover = await this.popoverController.create({ + component: PopoverCustomInjectorPopoverComponent, + event: event, + injector: customInjector, + }); + + await popover.present(); + } +} diff --git a/packages/angular/test/base/src/app/standalone/popover-custom-injector/popover/popover.component.ts b/packages/angular/test/base/src/app/standalone/popover-custom-injector/popover/popover.component.ts new file mode 100644 index 00000000000..2be85458c5a --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/popover-custom-injector/popover/popover.component.ts @@ -0,0 +1,22 @@ +import { Component, OnInit, inject } from '@angular/core'; +import { IonContent } from '@ionic/angular/standalone'; +import { TestService } from '../test.service'; + +@Component({ + selector: 'app-popover-custom-injector-popover', + template: ` + +

Service Value: {{ serviceValue }}

+
+ `, + standalone: true, + imports: [IonContent] +}) +export class PopoverCustomInjectorPopoverComponent implements OnInit { + private testService = inject(TestService); + serviceValue = ''; + + ngOnInit() { + this.serviceValue = this.testService.getValue(); + } +} diff --git a/packages/angular/test/base/src/app/standalone/popover-custom-injector/test.service.ts b/packages/angular/test/base/src/app/standalone/popover-custom-injector/test.service.ts new file mode 100644 index 00000000000..c5fe87d1a48 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/popover-custom-injector/test.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export class TestService { + private value = 'default-value'; + + setValue(value: string) { + this.value = value; + } + + getValue(): string { + return this.value; + } +} From 893d5239979a468081bd88eda6ef602f9358f5aa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 09:18:12 -0500 Subject: [PATCH 092/126] chore(deps): update dependency @capacitor/core to v8.0.2 (#30938) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@capacitor/core](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`8.0.1` β†’ `8.0.2`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/8.0.1/8.0.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fcore/8.0.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fcore/8.0.1/8.0.2?slim=true) | --- ### Release Notes
ionic-team/capacitor (@​capacitor/core) ### [`v8.0.2`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#802-2026-01-27) [Compare Source](https://redirect.github.com/ionic-team/capacitor/compare/8.0.1...8.0.2) ##### Bug Fixes - **android:** AGP 9.0 no longer supports `proguard-android.txt` ([#​8315](https://redirect.github.com/ionic-team/capacitor/issues/8315)) ([dcc76c3](https://redirect.github.com/ionic-team/capacitor/commit/dcc76c37508a9b71fb36d95707748c2dd115cf52)) - **cli:** Update tar package ([#​8311](https://redirect.github.com/ionic-team/capacitor/issues/8311)) ([0969c5c](https://redirect.github.com/ionic-team/capacitor/commit/0969c5cd0b16cf23d2489a85a3b8fa1bee2ebf3b)) - **core:** make SystemBars hide and show options optional ([#​8305](https://redirect.github.com/ionic-team/capacitor/issues/8305)) ([95dc7d8](https://redirect.github.com/ionic-team/capacitor/commit/95dc7d8ace3aabdda7e325c4a8ef7d1432ad37e9)) - **SystemBars:** get correct style on handleOnConfigurationChanged ([#​8295](https://redirect.github.com/ionic-team/capacitor/issues/8295)) ([2a66b44](https://redirect.github.com/ionic-team/capacitor/commit/2a66b44915895f971e4a26a8612798aa2f95ea11)) - **SystemBars:** Set window background color according to theme ([#​8306](https://redirect.github.com/ionic-team/capacitor/issues/8306)) ([6037e38](https://redirect.github.com/ionic-team/capacitor/commit/6037e3836ec24c9ddf26e74e5fbec20ab506adfd)) - **SystemBars:** Skipping margin manipulation when on a fixed WebView ([#​8309](https://redirect.github.com/ionic-team/capacitor/issues/8309)) ([53c33b6](https://redirect.github.com/ionic-team/capacitor/commit/53c33b614218bf635322fbdf9a38038a7964e3d4))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- core/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 25a81fd8f8a..6b2c88c5512 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -629,9 +629,9 @@ "license": "MIT" }, "node_modules/@capacitor/core": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.0.1.tgz", - "integrity": "sha512-5UqSWxGMp/B8KhYu7rAijqNtYslhcLh+TrbfU48PfdMDsPfaU/VY48sMNzC22xL8BmoFoql/3SKyP+pavTOvOA==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.0.2.tgz", + "integrity": "sha512-EXZfxkL6GFJS2cb7TIBR7RiHA5iz6ufDcl1VmUpI2pga3lJ5Ck2+iqbx7N+osL3XYem9ad4XCidJEMm64DX6UQ==", "dev": true, "license": "MIT", "peer": true, From cc75ff42e1e5359487499532b88f71dda715d7b5 Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Tue, 3 Feb 2026 09:51:30 -0500 Subject: [PATCH 093/126] chore(scripts): remove no longer used test.e2e.script (#30943) Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/package-lock.json | 20 --- core/package.json | 4 +- core/scripts/testing/e2e-script.mjs | 260 ---------------------------- 3 files changed, 1 insertion(+), 283 deletions(-) delete mode 100644 core/scripts/testing/e2e-script.mjs diff --git a/core/package-lock.json b/core/package-lock.json index 6b2c88c5512..c3656beae5a 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -19,7 +19,6 @@ "@capacitor/haptics": "^8.0.0", "@capacitor/keyboard": "^8.0.0", "@capacitor/status-bar": "^8.0.0", - "@clack/prompts": "^0.11.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", "@playwright/test": "^1.56.1", @@ -669,25 +668,6 @@ "@capacitor/core": ">=8.0.0" } }, - "node_modules/@clack/core": { - "version": "0.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^1.0.0", - "sisteransi": "^1.0.5" - } - }, - "node_modules/@clack/prompts": { - "version": "0.11.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@clack/core": "0.5.0", - "picocolors": "^1.0.0", - "sisteransi": "^1.0.5" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "dev": true, diff --git a/core/package.json b/core/package.json index ceb84b5c68c..24cee91bce6 100644 --- a/core/package.json +++ b/core/package.json @@ -44,7 +44,6 @@ "@capacitor/haptics": "^8.0.0", "@capacitor/keyboard": "^8.0.0", "@capacitor/status-bar": "^8.0.0", - "@clack/prompts": "^0.11.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", "@playwright/test": "^1.56.1", @@ -104,8 +103,7 @@ "docker.build": "docker build -t ionic-playwright .", "test.e2e.docker": "npm run docker.build && node ./scripts/docker.mjs", "test.e2e.docker.update-snapshots": "npm run test.e2e.docker -- --update-snapshots='changed'", - "test.e2e.docker.ci": "npm run docker.build && CI=true node ./scripts/docker.mjs", - "test.e2e.script": "node scripts/testing/e2e-script.mjs" + "test.e2e.docker.ci": "npm run docker.build && CI=true node ./scripts/docker.mjs" }, "author": "Ionic Team", "license": "MIT", diff --git a/core/scripts/testing/e2e-script.mjs b/core/scripts/testing/e2e-script.mjs deleted file mode 100644 index 794447bf61c..00000000000 --- a/core/scripts/testing/e2e-script.mjs +++ /dev/null @@ -1,260 +0,0 @@ -// The purpose of this script is to provide a way run the E2E tests -// without having the developer to manually run multiple commands based -// on the desired end result. -// E.g. update the local ground truths for a specific component or -// open the Playwright report after running the E2E tests. - -import { - intro, - outro, - confirm, - spinner, - isCancel, - cancel, - text, - log, -} from '@clack/prompts'; -import { exec, spawn } from 'child_process'; -import fs from 'node:fs'; -import { setTimeout as sleep } from 'node:timers/promises'; -import util from 'node:util'; -import color from 'picocolors'; - -async function main() { - const execAsync = util.promisify(exec); - const cleanUpFiles = async () => { - // Clean up the local ground truths. - const cleanUp = spinner(); - - // Inform the user that the local ground truths are being cleaned up. - cleanUp.start('Restoring local ground truths'); - - // Reset the local ground truths. - await execAsync('git reset -- src/**/*-linux.png').catch((error) => { - cleanUp.stop('Failed to reset local ground truths'); - console.error(error); - return process.exit(0); - }); - - // Restore the local ground truths. - await execAsync('git restore -- src/**/*-linux.png').catch((error) => { - cleanUp.stop('Failed to restore local ground truths'); - console.error(error); - return process.exit(0); - }); - - // Inform the user that the local ground truths have been cleaned up. - cleanUp.stop('Local ground truths have been restored to their original state in order to avoid committing them.'); - }; - - intro(color.inverse(' Update Local Ground Truths')); - - // Ask user for the component name they want to test. - const componentValue = await text({ - message: 'Enter the component or path you want to test (e.g. chip, src/components/chip)', - placeholder: 'Empty for all components', - }); - - // User cancelled the operation with `Ctrl+C` or `CMD+C`. - if (isCancel(componentValue)) { - cancel('Operation cancelled'); - return process.exit(0); - } - - // Ask user if they want to update their local ground truths. - const shouldUpdateTruths = await confirm({ - message: 'Do you want to update your local ground truths?', - }); - - // User cancelled the operation with `Ctrl+C` or `CMD+C`. - if (isCancel(shouldUpdateTruths)) { - cancel('Operation cancelled'); - return process.exit(0); - } - - if (shouldUpdateTruths) { - const defaultBaseBranch = 'main'; - - // Ask user for the base branch. - let baseBranch = await text({ - message: 'Enter the base branch name:', - placeholder: `default: ${defaultBaseBranch}`, - }) - - // User cancelled the operation with `Ctrl+C` or `CMD+C`. - if (isCancel(baseBranch)) { - cancel('Operation cancelled'); - return process.exit(0); - } - - // User didn't provide a base branch. - if (!baseBranch) { - baseBranch = defaultBaseBranch; - } - - /** - * The provided base branch needs to be fetched. - * This ensures that the local base branch is up-to-date with the - * remote base branch. Otherwise, there might be errors stating that - * certain files don't exist in the local base branch. - */ - const fetchBaseBranch = spinner(); - - // Inform the user that the base branch is being fetched. - fetchBaseBranch.start(`Fetching "${baseBranch}" to have the latest changes`); - - // Fetch the base branch. - await execAsync(`git fetch origin ${baseBranch}`).catch((error) => { - fetchBaseBranch.stop(`Failed to fetch "${baseBranch}"`); - console.error(error); - return process.exit(0); - }); - - // Inform the user that the base branch has been fetched. - fetchBaseBranch.stop(`Fetched "${baseBranch}"`); - - - const updateGroundTruth = spinner(); - - // Inform the user that the local ground truths are being updated. - updateGroundTruth.start('Updating local ground truths'); - - // Check if user provided an existing file or directory. - const isValidLocation = fs.existsSync(componentValue); - - // User provided an existing file or directory. - if (isValidLocation) { - const stats = fs.statSync(componentValue); - - // User provided a file as the component. - // ex: `componentValue` = `src/components/chip/test/basic/chip.e2e.ts` - if (stats.isFile()) { - // Update the local ground truths for the provided path. - await execAsync(`git checkout origin/${baseBranch} -- ${componentValue}-snapshots/*-linux.png`).catch((error) => { - updateGroundTruth.stop('Failed to update local ground truths'); - console.error(error); - return process.exit(0); - }); - } - - // User provided a directory as the component. - // ex: `componentValue` = `src/components/chip` - if (stats.isDirectory()) { - // Update the local ground truths for the provided directory. - await execAsync(`git checkout origin/${baseBranch} -- ${componentValue}/test/*/*.e2e.ts-snapshots/*-linux.png`).catch((error) => { - updateGroundTruth.stop('Failed to update local ground truths'); - console.error(error); - return process.exit(0); - }); - } - } - // User provided a component name as the component. - // ex: `componentValue` = `chip` - else if (componentValue) { - // Update the local ground truths for the provided component. - await execAsync(`git checkout origin/${baseBranch} -- src/components/${componentValue}/test/*/${componentValue}.e2e.ts-snapshots/*-linux.png`).catch((error) => { - updateGroundTruth.stop('Failed to update local ground truths'); - console.error(error); - return process.exit(0); - }); - } - // User provided an empty string. - else { - // Update the local ground truths for all components. - await execAsync(`git checkout origin/${baseBranch} -- src/components/*/test/*/*.e2e.ts-snapshots/*-linux.png`).catch((error) => { - updateGroundTruth.stop('Failed to update local ground truths'); - console.error(error); - return process.exit(0); - }); - } - - // Inform the user that the local ground truths have been updated. - updateGroundTruth.stop('Updated local ground truths'); - } - - const buildCore = spinner(); - - // Inform the user that the core is being built. - buildCore.start('Building core'); - - /** - * Build core - * Otherwise, the uncommitted changes will not be reflected in the tests because: - * - popping the stash doesn't trigger a re-render even if `npm start` is running - * - app is not running the `npm start` command - */ - await execAsync('npm run build').catch((error) => { - // Clean up the local ground truths. - cleanUpFiles(); - - buildCore.stop('Failed to build core'); - console.error(error); - return process.exit(0); - }); - - buildCore.stop('Built core'); - - const runE2ETests = spinner(); - - // Inform the user that the E2E tests are being run. - runE2ETests.start('Running E2E tests'); - - // User provided a component value. - if (componentValue) { - await execAsync(`npm run test.e2e.docker.ci ${componentValue}`).catch((error) => { - // Clean up the local ground truths. - cleanUpFiles(); - - runE2ETests.stop('Failed to run E2E tests'); - console.error(error); - return process.exit(0); - }); - } else { - await execAsync('npm run test.e2e.docker.ci').catch((error) => { - // Clean up the local ground truths. - cleanUpFiles(); - - runE2ETests.stop('Failed to run E2E tests'); - console.error(error); - return process.exit(0); - }); - } - - runE2ETests.stop('Ran E2E tests'); - - // Clean up the local ground truths. - await cleanUpFiles(); - - // Ask user if they want to open the Playwright report. - const shouldOpenReport = await confirm({ - message: 'Do you want to open the Playwright report?', - }); - - // User cancelled the operation with `Ctrl+C` or `CMD+C`. - if (isCancel(shouldOpenReport)) { - cancel('Operation cancelled'); - return process.exit(0); - } - - // User chose to open the Playwright report. - if (shouldOpenReport) { - // Use spawn to display the server information and the key to quit the server. - spawn('npx', ['playwright', 'show-report'], { - stdio: 'inherit', - }); - } else { - // Inform the user that the Playwright report can be opened by running the following command. - log.info('If you change your mind, you can open the Playwright report by running the following command:'); - log.info(color.bold('npx playwright show-report')); - } - - if (shouldOpenReport) { - outro("You're all set! Don't forget to quit serving the Playwright report when you're done."); - } else { - outro("You're all set!"); - } - - await sleep(1000); -} - -main().catch(console.error); From 6e4f60af4c188ae04028b444aa21118ae27c2ca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Naso?= Date: Tue, 3 Feb 2026 20:02:27 -0300 Subject: [PATCH 094/126] feat(select): pass cancelText property to modal interface (#30282) Co-authored-by: Nicolas Naso Co-authored-by: Brandy Smith Co-authored-by: Maria Hutt --- core/api.txt | 1 + core/src/components.d.ts | 10 ++ .../components/select-modal/select-modal.tsx | 7 +- .../select-modal/test/custom/index.html | 40 ++++++++ .../test/custom/select-modal.e2e.ts | 45 +++++++++ core/src/components/select/select.tsx | 1 + ...o-selected-ios-ltr-Mobile-Chrome-linux.png | Bin 20371 -> 19828 bytes ...-selected-ios-ltr-Mobile-Firefox-linux.png | Bin 31050 -> 31112 bytes ...o-selected-ios-ltr-Mobile-Safari-linux.png | Bin 25202 -> 25285 bytes ...to-selected-md-ltr-Mobile-Chrome-linux.png | Bin 18937 -> 18428 bytes ...o-selected-md-ltr-Mobile-Firefox-linux.png | Bin 27643 -> 27605 bytes ...to-selected-md-ltr-Mobile-Safari-linux.png | Bin 22527 -> 22670 bytes .../select/test/custom/select.e2e.ts | 86 ++++++++++++++++++ packages/angular/src/directives/proxies.ts | 4 +- .../standalone/src/directives/proxies.ts | 4 +- packages/vue/src/proxies.ts | 1 + 16 files changed, 194 insertions(+), 5 deletions(-) create mode 100644 core/src/components/select-modal/test/custom/index.html create mode 100644 core/src/components/select-modal/test/custom/select-modal.e2e.ts diff --git a/core/api.txt b/core/api.txt index 995c372cdfd..b4036e6b8e8 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1767,6 +1767,7 @@ ion-select,part,supporting-text ion-select,part,text ion-select-modal,scoped +ion-select-modal,prop,cancelText,string,'Close',false,false ion-select-modal,prop,header,string | undefined,undefined,false,false ion-select-modal,prop,multiple,boolean | undefined,undefined,false,false ion-select-modal,prop,options,SelectModalOption[],[],false,false diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 5e47667392b..ae6d9f4c2fb 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -3223,6 +3223,11 @@ export namespace Components { "value"?: any | null; } interface IonSelectModal { + /** + * The text to display on the cancel button. + * @default 'Close' + */ + "cancelText": string; "header"?: string; "multiple"?: boolean; /** @@ -8548,6 +8553,11 @@ declare namespace LocalJSX { "value"?: any | null; } interface IonSelectModal { + /** + * The text to display on the cancel button. + * @default 'Close' + */ + "cancelText"?: string; "header"?: string; "multiple"?: boolean; /** diff --git a/core/src/components/select-modal/select-modal.tsx b/core/src/components/select-modal/select-modal.tsx index 5925d209640..d83d7fa76b0 100644 --- a/core/src/components/select-modal/select-modal.tsx +++ b/core/src/components/select-modal/select-modal.tsx @@ -23,6 +23,11 @@ export class SelectModal implements ComponentInterface { @Prop() header?: string; + /** + * The text to display on the cancel button. + */ + @Prop() cancelText = 'Close'; + @Prop() multiple?: boolean; @Prop() options: SelectModalOption[] = []; @@ -149,7 +154,7 @@ export class SelectModal implements ComponentInterface { {this.header !== undefined && {this.header}} - this.closeModal()}>Close + this.closeModal()}>{this.cancelText} diff --git a/core/src/components/select-modal/test/custom/index.html b/core/src/components/select-modal/test/custom/index.html new file mode 100644 index 00000000000..20de632ce3d --- /dev/null +++ b/core/src/components/select-modal/test/custom/index.html @@ -0,0 +1,40 @@ + + + + + Select - Custom + + + + + + + + + + + + + Select Modal - Custom + + + + + + + + + + + + + diff --git a/core/src/components/select-modal/test/custom/select-modal.e2e.ts b/core/src/components/select-modal/test/custom/select-modal.e2e.ts new file mode 100644 index 00000000000..7c95a4428dd --- /dev/null +++ b/core/src/components/select-modal/test/custom/select-modal.e2e.ts @@ -0,0 +1,45 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +import type { SelectModalOption } from '../../select-modal-interface'; +import { SelectModalPage } from '../fixtures'; + +const options: SelectModalOption[] = [ + { value: 'apple', text: 'Apple', disabled: false, checked: false }, + { value: 'banana', text: 'Banana', disabled: false, checked: false }, +]; + +/** + * This behavior does not vary across modes/directions. + */ +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('select-modal: custom'), () => { + let selectModalPage: SelectModalPage; + + test.beforeEach(async ({ page }) => { + selectModalPage = new SelectModalPage(page); + }); + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + test('should render custom cancel text when prop is provided', async ({ page: _page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30295', + }); + + await selectModalPage.setup(config, options, false); + + const cancelButton = selectModalPage.selectModal.locator('ion-button'); + + // Verify the default text on the cancel button + await expect(cancelButton).toHaveText('Close'); + + await selectModalPage.selectModal.evaluate((selectModal: HTMLIonSelectModalElement) => { + selectModal.cancelText = 'Close me'; + }); + + // Verify the cancel button text has been updated + await expect(cancelButton).toHaveText('Close me'); + }); + }); +}); diff --git a/core/src/components/select/select.tsx b/core/src/components/select/select.tsx index b8de35c4843..97309bac332 100644 --- a/core/src/components/select/select.tsx +++ b/core/src/components/select/select.tsx @@ -795,6 +795,7 @@ export class Select implements ComponentInterface { component: 'ion-select-modal', componentProps: { header: interfaceOptions.header, + cancelText: this.cancelText, multiple, value, options: this.createOverlaySelectOptions(this.childOpts, value), diff --git a/core/src/components/select/test/basic/select.e2e.ts-snapshots/select-basic-modal-scroll-to-selected-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/select/test/basic/select.e2e.ts-snapshots/select-basic-modal-scroll-to-selected-ios-ltr-Mobile-Chrome-linux.png index a66e87cecbaf5404cb2e5ee8fc168390a775290f..43fcd9ef7098a54eaa643b625b21a3129853ff61 100644 GIT binary patch literal 19828 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%0AToDd^j*FUB_zFu27DRxf0&}< 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 E0CUwl6951J diff --git a/core/src/components/select/test/basic/select.e2e.ts-snapshots/select-basic-modal-scroll-to-selected-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/select/test/basic/select.e2e.ts-snapshots/select-basic-modal-scroll-to-selected-ios-ltr-Mobile-Firefox-linux.png index 2e4f0b3a06fdb31a4723a0721a43b6c32219aa56..b25f9c98d2fcb1b354b7cf5e429ec15cf022ea9c 100644 GIT binary patch literal 31112 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 literal 31050 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≠&Tv`+@Khc7(`1 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 L9L%qBd}96$MV!)G diff --git a/core/src/components/select/test/basic/select.e2e.ts-snapshots/select-basic-modal-scroll-to-selected-ios-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/basic/select.e2e.ts-snapshots/select-basic-modal-scroll-to-selected-ios-ltr-Mobile-Safari-linux.png index e49ddb007b3d68ef609c6468523848515278298e..0cd3370fa9a5440d697dbbeefd910473981574e8 100644 GIT binary patch literal 25285 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 literal 25202 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 diff --git a/core/src/components/select/test/basic/select.e2e.ts-snapshots/select-basic-modal-scroll-to-selected-md-ltr-Mobile-Chrome-linux.png b/core/src/components/select/test/basic/select.e2e.ts-snapshots/select-basic-modal-scroll-to-selected-md-ltr-Mobile-Chrome-linux.png index 2acdba257d9b774e98d215c06e2bb585aa8e0730..a75ada58efb2ff4681e209a8510caa11489e529a 100644 GIT binary patch literal 18428 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 literal 18937 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 II`G1O080Unk^lez diff --git a/core/src/components/select/test/basic/select.e2e.ts-snapshots/select-basic-modal-scroll-to-selected-md-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/basic/select.e2e.ts-snapshots/select-basic-modal-scroll-to-selected-md-ltr-Mobile-Safari-linux.png index a4e7755364c49cfdb89630c7fee5dc0b3dc725b4..984eb8a04834639916d479a2ab03326916129480 100644 GIT binary patch literal 22670 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

DhR=nL<=e^02X|VT+x&usH0J`GgfXiAc>KZZVPk z6#k2Rw{KwJuNreR>}eog^el3|0X6|~gEC+=B6w)2uf@R;;8z{tAQ><_YX@2kHu_RE z#UtOtvh&mGcd@Z})fX4gJ|bpha;HD0FCxi%yx-#c>+{?7=$G_FSs75oh!V@^YTy*t z9`!mIi;yD*u1MgXaytQ1KoV+^ku->p4p@o7U2U@+NGhqEJ(kvJh`5sG*aer19u;_= zYgRDLB$%9cv_1({7A^Uua)KuDJjn~YvMdcCQ`)_9Luy8=E4lTonLjW90N8_s1b&z$ zvp$UP5J;KH=DH6q%NJ(w`>(@`cK=r9`h6he4t2?y&%?dcS*qecjuF57^6|n|Gnaw$ zvEVgIPH$}3ZAJU5-sPts3``X@=fU$unYqRN+ z1^=;{s;!3>l%w8QUAp>J%7(fp%~0L4b&zV@bf!1!!)u0%($bX|{q9Fz4A>bgY^}Z2 zx-2CwGV-oxt(Ky){Zk3C^xz)vcWdh2&pwTpI8l|o@IEA8`|{TxfB$02YazVv=}W;b z?MAf>uSH+$WhU)z%N|c|KBPN;bB&qc>OSH1F88GdmhXIFkT|m#<>t|trgPx(W}WG@ z>_<)ubX~25_w{A=s0qb&w&$G~kU6Uovbdtfe)4mIBR2*ATH2ZstS_@d*t$>lOg>Iy zhkng0%;D8HP%z1zTGwrO_55(+8Hc8pGj+2Tc5dr#8eiv|o9gXqOkS7IeDGO+u47}S zqhR(}`nSR&zt-!%x>7M=vH1}{zI{8UDZi3#a!Y$}>%H*EbhEAsjf$>^wyFSEW`54r z$wJXxZ+J`c4fyZPG2HqcAuSy(8=5@b%yanOU}JxIy_mV+BQ}BXL^Zd>zPU>&^KLCo zxX~wR!WPSST9;i7XWjZS{2nXl-}G$POirkc)R7|$zx(wY^Y!RTe4Z;^whdjdw`!lJ z-g&!2O?V`Pj&ommlV{Ysd!i{$MQ+239|yS2Th=TJQK!nMD{iIf>0Qv3@{CFj-MYjb zULUcvhb1;Y`dz0;#DU;4xhl^tk3GYQ(+LTRs-~f-eG%g!tJBTj*hDn8I{zMStE~&a zImDwdT4}H(_t{h|dpsq`!kRyCiL3EYu`};9XUc2&7q^!97>1g@7_+l|`dt&vwIm@e z9sKf(;7S)hi4!y9?9OthW(2OLk8*LFuj@!(7o%3?)O|BP@9Otl$MTC=)E(2 z+)gk59v>xDmA}ZS9&#iqZE|;&HZ<^*hkB61w|*% z2_26Ep=KQZLV42@@-^qnqI=^d^v@)k0&>LOAVOG z>niac`TW%S%v>jJPE)IkUYXE*qJh|aQ(e7a*kS?OcH1J=l6y;;{-$}L{S_hEL6IiG z7^Plb>$cWvfmk$dzaro;AuVT{(p%BjoGU!ZxrfT^v-WvU3EwYPY3b04eIF_7o2_>~ z6iXI$8raLE$O%kAnOK$i@YMK{54PBk_j*!g`JHW!oJ{-?+o#J)fvai3C{8{c^V1iue#@+M~r&VoUAA?xpesnYLa%P*P)Y$8{7^4y-Yar8j2fpu@Mh!V(yP`t8e;AK z`!Brr5#7LQYqyDs)-H`@OMgP|;bnQWE88l9Klt>urbMU?nQF-0vzwweeNYg+l;hJ$ zn?2JW7SNEYy%w6Au0++9I}KqGUJGYdbL+n&PdqW3d!#-+TpKM5-C=T|x!BxKCPhrD zL^Vb`D{#@(C#W<)u1)820K1Z^VsT`rBd^2UsY0V2Cld0~MIAjkI4Zk8TpJmi?Al7} zYFaWP(yV5q;vLo+GVEMDz826+d|_UkVg5qFgTQ0q;UcT}*`{>LenBRiemxZ5mxbG7Gao%p8GUPp?TbIIk@K?OeQMyU1x;~X++sFmW;YOeO zR=GV#Y&%z@*^6>NTk5U& zdi#&1xeQMj2A zl5%F&FN1Wv^zq+aWNx4@`sQ4NFd^6f(a82#qN6B2meo2P`v@=brO2L=mySPi?cRR_ D1o(Gh diff --git a/core/src/components/select/test/custom/select.e2e.ts b/core/src/components/select/test/custom/select.e2e.ts index 58232365170..884fcda47ca 100644 --- a/core/src/components/select/test/custom/select.e2e.ts +++ b/core/src/components/select/test/custom/select.e2e.ts @@ -72,5 +72,91 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { const wrapper = page.locator('.wrapper'); await expect(wrapper).toHaveScreenshot(screenshot(`select-custom-parts-diff`)); }); + + test('should render custom cancel text when prop is provided with alert interface', async ({ page }) => { + await page.setContent( + ` + + Apples + Bananas + Oranges + + `, + config + ); + + const select = page.locator('ion-select'); + const ionAlertDidPresent = await page.spyOnEvent('ionAlertDidPresent'); + + await select.click(); + await ionAlertDidPresent.next(); + + await page.waitForChanges(); + + const alert = page.locator('ion-alert'); + const cancelButton = alert.locator('.alert-button-role-cancel'); + + // Verify the cancel button text + await expect(cancelButton).toHaveText('Close me'); + }); + + test('should render custom cancel text when prop is provided with action sheet interface', async ({ page }) => { + await page.setContent( + ` + + Apples + Bananas + Oranges + + `, + config + ); + + const select = page.locator('ion-select'); + const ionActionSheetDidPresent = await page.spyOnEvent('ionActionSheetDidPresent'); + + await select.click(); + await ionActionSheetDidPresent.next(); + + await page.waitForChanges(); + + const actionSheet = page.locator('ion-action-sheet'); + const cancelButton = actionSheet.locator('.action-sheet-cancel'); + + // Verify the cancel button text + await expect(cancelButton).toHaveText('Close me'); + }); + + test('should render custom cancel text when prop is provided with modal interface', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30295', + }); + + await page.setContent( + ` + + Apples + Bananas + Oranges + + `, + config + ); + + const select = page.locator('ion-select'); + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await select.click(); + await ionModalDidPresent.next(); + + await page.waitForChanges(); + + const modal = page.locator('ion-modal'); + const cancelButton = modal.locator('ion-button'); + + // Verify the cancel button text + await expect(cancelButton).toHaveText('Close me'); + }); }); }); diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index c81ac8f8571..beaf411cec5 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -2192,14 +2192,14 @@ This event will not emit when programmatically setting the `value` property. @ProxyCmp({ - inputs: ['header', 'multiple', 'options'] + inputs: ['cancelText', 'header', 'multiple', 'options'] }) @Component({ selector: 'ion-select-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['header', 'multiple', 'options'], + inputs: ['cancelText', 'header', 'multiple', 'options'], }) export class IonSelectModal { protected el: HTMLIonSelectModalElement; diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index 93f9bf10c86..2fa0482d3d6 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -1921,14 +1921,14 @@ export declare interface IonSegmentView extends Components.IonSegmentView { @ProxyCmp({ defineCustomElementFn: defineIonSelectModal, - inputs: ['header', 'multiple', 'options'] + inputs: ['cancelText', 'header', 'multiple', 'options'] }) @Component({ selector: 'ion-select-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['header', 'multiple', 'options'], + inputs: ['cancelText', 'header', 'multiple', 'options'], standalone: true }) export class IonSelectModal { diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index a0c23232908..72e22d2c7b4 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -947,6 +947,7 @@ export const IonSelect: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-select-modal', defineIonSelectModal, [ 'header', + 'cancelText', 'multiple', 'options' ]); From 46806bd6e2af90a0b31fca68f508c06d3d281ec0 Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Tue, 10 Feb 2026 09:59:24 -0500 Subject: [PATCH 095/126] feat(segment-view): add swipeGesture property to disable swiping (#30948) Issue number: resolves #30290 --------- ## What is the current behavior? The segment view swipe gesture can only be disabled by adding the `disabled` property and setting `opacity: 1`. ## What is the new behavior? - Adds a new property, `swipeGesture`, to disable swiping on the segment view - Adds an e2e test which verifies the styles blocking the swipe are correctly applied when `swipeGesture` is `false` ## Does this introduce a breaking change? - [ ] Yes - [x] No --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/api.txt | 1 + core/src/components.d.ts | 10 ++ .../components/segment-view/segment-view.scss | 3 +- .../components/segment-view/segment-view.tsx | 8 +- .../test/swipe-gesture/index.html | 147 ++++++++++++++++++ .../test/swipe-gesture/segment-view.e2e.ts | 51 ++++++ packages/angular/src/directives/proxies.ts | 4 +- .../standalone/src/directives/proxies.ts | 4 +- packages/vue/src/proxies.ts | 1 + 9 files changed, 223 insertions(+), 6 deletions(-) create mode 100644 core/src/components/segment-view/test/swipe-gesture/index.html create mode 100644 core/src/components/segment-view/test/swipe-gesture/segment-view.e2e.ts diff --git a/core/api.txt b/core/api.txt index b4036e6b8e8..43e95807d4c 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1693,6 +1693,7 @@ ion-segment-content,shadow ion-segment-view,shadow ion-segment-view,prop,disabled,boolean,false,false,false +ion-segment-view,prop,swipeGesture,boolean,true,false,false ion-segment-view,event,ionSegmentViewScroll,SegmentViewScrollEvent,true ion-select,shadow diff --git a/core/src/components.d.ts b/core/src/components.d.ts index ae6d9f4c2fb..d690184aff6 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -3113,6 +3113,11 @@ export namespace Components { * @param smoothScroll : Whether to animate the scroll transition. */ "setContent": (id: string, smoothScroll?: boolean) => Promise; + /** + * If `true`, users will be able to swipe the segment view to navigate between segment contents. + * @default true + */ + "swipeGesture": boolean; } interface IonSelect { /** @@ -8424,6 +8429,11 @@ declare namespace LocalJSX { * Emitted when the segment view is scrolled. */ "onIonSegmentViewScroll"?: (event: IonSegmentViewCustomEvent) => void; + /** + * If `true`, users will be able to swipe the segment view to navigate between segment contents. + * @default true + */ + "swipeGesture"?: boolean; } interface IonSelect { /** diff --git a/core/src/components/segment-view/segment-view.scss b/core/src/components/segment-view/segment-view.scss index a41030992f6..52210425a63 100644 --- a/core/src/components/segment-view/segment-view.scss +++ b/core/src/components/segment-view/segment-view.scss @@ -21,7 +21,8 @@ display: none; } -:host(.segment-view-disabled) { +:host(.segment-view-disabled), +:host(.segment-view-swipe-disabled) { touch-action: none; overflow-x: hidden; } diff --git a/core/src/components/segment-view/segment-view.tsx b/core/src/components/segment-view/segment-view.tsx index 21de96590a3..a503b5e2637 100644 --- a/core/src/components/segment-view/segment-view.tsx +++ b/core/src/components/segment-view/segment-view.tsx @@ -23,6 +23,11 @@ export class SegmentView implements ComponentInterface { */ @Prop() disabled = false; + /** + * If `true`, users will be able to swipe the segment view to navigate between segment contents. + */ + @Prop() swipeGesture = true; + /** * @internal * @@ -141,13 +146,14 @@ export class SegmentView implements ComponentInterface { } render() { - const { disabled, isManualScroll } = this; + const { disabled, isManualScroll, swipeGesture } = this; return ( diff --git a/core/src/components/segment-view/test/swipe-gesture/index.html b/core/src/components/segment-view/test/swipe-gesture/index.html new file mode 100644 index 00000000000..8a5c39b6cc2 --- /dev/null +++ b/core/src/components/segment-view/test/swipe-gesture/index.html @@ -0,0 +1,147 @@ + + + + + Segment View - Swipe Gesture + + + + + + + + + + + + + + + Segment View - Swipe Gesture + + + + +

+ Swipe Gesture: Segment Enabled; Segment View + Enabled +

+ + + Paid + + + Free + + + Top + + + + + Free + Top + + +

+ Swipe Gesture: Segment Disabled; Segment View + Enabled +

+ + + Paid + + + Free + + + Top + + + + Paid + Free + Top + + +

+ Swipe Gesture: Segment Enabled; Segment View + Disabled +

+ + + Paid + + + Free + + + Top + + + + Paid + Free + Top + + +

+ Swipe Gesture: Segment Disabled; Segment View + Disabled +

+ + + Paid + + + Free + + + Top + + + + Paid + Free + Top + + + + + diff --git a/core/src/components/segment-view/test/swipe-gesture/segment-view.e2e.ts b/core/src/components/segment-view/test/swipe-gesture/segment-view.e2e.ts new file mode 100644 index 00000000000..f250cb142db --- /dev/null +++ b/core/src/components/segment-view/test/swipe-gesture/segment-view.e2e.ts @@ -0,0 +1,51 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +/** + * This behavior does not vary across modes/directions + */ +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('segment-view: swipe gesture'), () => { + test('should allow swiping the segment view by default', async ({ page }) => { + await page.setContent( + ` + + + Free + Top + + `, + config + ); + + const segmentView = page.locator('ion-segment-view'); + + const allowsSwipe = await segmentView.evaluate((el: HTMLElement) => { + const style = getComputedStyle(el); + return style.overflowX !== 'hidden' && style.touchAction !== 'none'; + }); + expect(allowsSwipe).toBe(true); + }); + + test('should not allow swiping the segment view when swipeGesture is false', async ({ page }) => { + await page.setContent( + ` + + + Free + Top + + `, + config + ); + + const segmentView = page.locator('ion-segment-view'); + + const allowsSwipe = await segmentView.evaluate((el: HTMLElement) => { + const style = getComputedStyle(el); + return style.overflowX !== 'hidden' && style.touchAction !== 'none'; + }); + expect(allowsSwipe).toBe(false); + }); + }); +}); diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index beaf411cec5..d5b1a91baca 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -2113,14 +2113,14 @@ export declare interface IonSegmentContent extends Components.IonSegmentContent @ProxyCmp({ - inputs: ['disabled'] + inputs: ['disabled', 'swipeGesture'] }) @Component({ selector: 'ion-segment-view', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['disabled'], + inputs: ['disabled', 'swipeGesture'], }) export class IonSegmentView { protected el: HTMLIonSegmentViewElement; diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index 2fa0482d3d6..3d2693c0b83 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -1889,14 +1889,14 @@ export declare interface IonSegmentContent extends Components.IonSegmentContent @ProxyCmp({ defineCustomElementFn: defineIonSegmentView, - inputs: ['disabled'] + inputs: ['disabled', 'swipeGesture'] }) @Component({ selector: 'ion-segment-view', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['disabled'], + inputs: ['disabled', 'swipeGesture'], standalone: true }) export class IonSegmentView { diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 72e22d2c7b4..31d13970a4c 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -899,6 +899,7 @@ export const IonSegmentContent: StencilVueComponent = /*@ export const IonSegmentView: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-segment-view', defineIonSegmentView, [ 'disabled', + 'swipeGesture', 'ionSegmentViewScroll' ], [ 'ionSegmentViewScroll' From 55735df3fa62c8e259c56db3169f3d5459e71c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bengt=20Wei=C3=9Fe?= Date: Wed, 11 Feb 2026 01:24:39 +0100 Subject: [PATCH 096/126] feat(textarea): reflect disabled and readonly props (#30910) Co-authored-by: Maria Hutt --- core/api.txt | 4 +- core/src/components/textarea/textarea.tsx | 4 +- .../test/base/e2e/src/lazy/inputs.spec.ts | 211 ++++++++++-------- .../base/e2e/src/standalone/inputs.spec.ts | 28 +++ .../src/app/lazy/inputs/inputs.component.html | 28 ++- .../src/app/lazy/inputs/inputs.component.ts | 17 ++ .../standalone/app-standalone/app.routes.ts | 1 + .../home-page/home-page.component.html | 5 + .../standalone/inputs/inputs.component.html | 79 +++++++ .../app/standalone/inputs/inputs.component.ts | 80 +++++++ packages/react/test/base/src/pages/Inputs.tsx | 34 ++- .../tests/e2e/specs/components/inputs.cy.ts | 103 +++++---- packages/vue/test/base/src/views/Inputs.vue | 46 ++-- .../test/base/tests/e2e/specs/inputs.cy.js | 98 ++++---- 14 files changed, 532 insertions(+), 206 deletions(-) create mode 100644 packages/angular/test/base/e2e/src/standalone/inputs.spec.ts create mode 100644 packages/angular/test/base/src/app/standalone/inputs/inputs.component.html create mode 100644 packages/angular/test/base/src/app/standalone/inputs/inputs.component.ts diff --git a/core/api.txt b/core/api.txt index 43e95807d4c..cec14576248 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1876,7 +1876,7 @@ ion-textarea,prop,cols,number | undefined,undefined,false,true ion-textarea,prop,counter,boolean,false,false,false ion-textarea,prop,counterFormatter,((inputLength: number, maxLength: number) => string) | undefined,undefined,false,false ion-textarea,prop,debounce,number | undefined,undefined,false,false -ion-textarea,prop,disabled,boolean,false,false,false +ion-textarea,prop,disabled,boolean,false,false,true ion-textarea,prop,enterkeyhint,"done" | "enter" | "go" | "next" | "previous" | "search" | "send" | undefined,undefined,false,false ion-textarea,prop,errorText,string | undefined,undefined,false,false ion-textarea,prop,fill,"outline" | "solid" | undefined,undefined,false,false @@ -1889,7 +1889,7 @@ ion-textarea,prop,minlength,number | undefined,undefined,false,false ion-textarea,prop,mode,"ios" | "md",undefined,false,false ion-textarea,prop,name,string,this.inputId,false,false ion-textarea,prop,placeholder,string | undefined,undefined,false,false -ion-textarea,prop,readonly,boolean,false,false,false +ion-textarea,prop,readonly,boolean,false,false,true ion-textarea,prop,required,boolean,false,false,false ion-textarea,prop,rows,number | undefined,undefined,false,false ion-textarea,prop,shape,"round" | undefined,undefined,false,false diff --git a/core/src/components/textarea/textarea.tsx b/core/src/components/textarea/textarea.tsx index 89646f6a247..ea5fa464186 100644 --- a/core/src/components/textarea/textarea.tsx +++ b/core/src/components/textarea/textarea.tsx @@ -132,7 +132,7 @@ export class Textarea implements ComponentInterface { /** * If `true`, the user cannot interact with the textarea. */ - @Prop() disabled = false; + @Prop({ reflect: true }) disabled = false; /** * The fill for the item. If `"solid"` the item will have a background. If @@ -177,7 +177,7 @@ export class Textarea implements ComponentInterface { /** * If `true`, the user cannot modify the value. */ - @Prop() readonly = false; + @Prop({ reflect: true }) readonly = false; /** * If `true`, the user must fill in a value before submitting a form. diff --git a/packages/angular/test/base/e2e/src/lazy/inputs.spec.ts b/packages/angular/test/base/e2e/src/lazy/inputs.spec.ts index fdf2b38adc4..d8b8b4919bd 100644 --- a/packages/angular/test/base/e2e/src/lazy/inputs.spec.ts +++ b/packages/angular/test/base/e2e/src/lazy/inputs.spec.ts @@ -5,105 +5,126 @@ test.describe('Inputs', () => { await page.goto('/lazy/inputs'); }); - test('should have default values', async ({ page }) => { - // Check primary elements for default values - await expect(page.locator('ion-checkbox').first()).toHaveJSProperty('checked', true); - await expect(page.locator('ion-radio-group').first()).toHaveJSProperty('value', 'nes'); - await expect(page.locator('ion-toggle').first()).toHaveJSProperty('checked', true); - await expect(page.locator('ion-input').first()).toHaveJSProperty('value', 'some text'); - await expect(page.locator('ion-input-otp').first()).toHaveJSProperty('value', '1234'); - await expect(page.locator('ion-datetime').first()).toHaveJSProperty('value', '1994-03-15'); - await expect(page.locator('ion-select').first()).toHaveJSProperty('value', 'nes'); - await expect(page.locator('ion-range').first()).toHaveJSProperty('value', 50); - }); + test.describe('basic functionality', () => { + test('should have default values', async ({ page }) => { + // Check primary elements for default values + await expect(page.locator('ion-checkbox').first()).toHaveJSProperty('checked', true); + await expect(page.locator('ion-radio-group').first()).toHaveJSProperty('value', 'nes'); + await expect(page.locator('ion-toggle').first()).toHaveJSProperty('checked', true); + await expect(page.locator('ion-input').first()).toHaveJSProperty('value', 'some text'); + await expect(page.locator('ion-input-otp').first()).toHaveJSProperty('value', '1234'); + await expect(page.locator('ion-datetime').first()).toHaveJSProperty('value', '1994-03-15'); + await expect(page.locator('ion-select').first()).toHaveJSProperty('value', 'nes'); + await expect(page.locator('ion-range').first()).toHaveJSProperty('value', 50); + }); - test('should reset values', async ({ page }) => { - await page.locator('#reset-button').click(); - - // Check primary elements after reset - await expect(page.locator('ion-checkbox').first()).toHaveJSProperty('checked', false); - await expect(page.locator('ion-radio-group').first()).toHaveJSProperty('value', undefined); - await expect(page.locator('ion-toggle').first()).toHaveJSProperty('checked', false); - /** - * The `value` property gets set to undefined - * for these components, so we need to check - * that the value property is undefined. - */ - await expect(page.locator('ion-input').first()).toHaveJSProperty('value', undefined); - await expect(page.locator('ion-input-otp').first()).toHaveJSProperty('value', undefined); - await expect(page.locator('ion-datetime').first()).toHaveJSProperty('value', undefined); - await expect(page.locator('ion-select').first()).toHaveJSProperty('value', undefined); - await expect(page.locator('ion-range').first()).toHaveJSProperty('value', undefined); - }); + test('should reset values', async ({ page }) => { + await page.locator('#reset-button').click(); + + // Check primary elements after reset + await expect(page.locator('ion-checkbox').first()).toHaveJSProperty('checked', false); + await expect(page.locator('ion-radio-group').first()).toHaveJSProperty('value', undefined); + await expect(page.locator('ion-toggle').first()).toHaveJSProperty('checked', false); + /** + * The `value` property gets set to undefined + * for these components, so we need to check + * that the value property is undefined. + */ + await expect(page.locator('ion-input').first()).toHaveJSProperty('value', undefined); + await expect(page.locator('ion-input-otp').first()).toHaveJSProperty('value', undefined); + await expect(page.locator('ion-datetime').first()).toHaveJSProperty('value', undefined); + await expect(page.locator('ion-select').first()).toHaveJSProperty('value', undefined); + await expect(page.locator('ion-range').first()).toHaveJSProperty('value', undefined); + }); - test('should set values', async ({ page }) => { - await page.locator('#reset-button').click(); - await page.locator('#set-button').click(); - - // Check primary elements after setting values - await expect(page.locator('ion-checkbox').first()).toHaveJSProperty('checked', true); - await expect(page.locator('ion-radio-group').first()).toHaveJSProperty('value', 'nes'); - await expect(page.locator('ion-toggle').first()).toHaveJSProperty('checked', true); - await expect(page.locator('ion-input').first()).toHaveJSProperty('value', 'some text'); - await expect(page.locator('ion-input-otp').first()).toHaveJSProperty('value', '1234'); - await expect(page.locator('ion-datetime').first()).toHaveJSProperty('value', '1994-03-15'); - await expect(page.locator('ion-select').first()).toHaveJSProperty('value', 'nes'); - await expect(page.locator('ion-range').first()).toHaveJSProperty('value', 50); - }); + test('should set values', async ({ page }) => { + await page.locator('#reset-button').click(); + await page.locator('#set-button').click(); + + // Check primary elements after setting values + await expect(page.locator('ion-checkbox').first()).toHaveJSProperty('checked', true); + await expect(page.locator('ion-radio-group').first()).toHaveJSProperty('value', 'nes'); + await expect(page.locator('ion-toggle').first()).toHaveJSProperty('checked', true); + await expect(page.locator('ion-input').first()).toHaveJSProperty('value', 'some text'); + await expect(page.locator('ion-input-otp').first()).toHaveJSProperty('value', '1234'); + await expect(page.locator('ion-datetime').first()).toHaveJSProperty('value', '1994-03-15'); + await expect(page.locator('ion-select').first()).toHaveJSProperty('value', 'nes'); + await expect(page.locator('ion-range').first()).toHaveJSProperty('value', 50); + }); - test('should update angular when values change', async ({ page }) => { - await page.locator('#reset-button').click(); - - await page.locator('ion-checkbox#first-checkbox').click(); - await page.locator('ion-radio').first().click(); - await page.locator('ion-toggle').first().click(); - - await page.locator('ion-input').nth(0).locator('input').fill('hola'); - await page.locator('ion-input').nth(0).locator('input').blur(); - - await page.locator('ion-input-otp input').nth(0).fill('1'); - await page.locator('ion-input-otp input').nth(1).fill('2'); - await page.locator('ion-input-otp input').nth(2).fill('3'); - await page.locator('ion-input-otp input').nth(3).fill('4'); - await page.locator('ion-input-otp input').nth(3).blur(); - - // Set date to 1994-03-14 - await page.locator('ion-datetime').first().click(); - await page.locator('ion-datetime').first().locator('.calendar-day:not([disabled])').first().click(); - - await page.locator('ion-select#game-console').click(); - await expect(page.locator('ion-alert')).toBeVisible(); - // Playstation option - await page.locator('ion-alert .alert-radio-button').nth(3).click(); - // Click confirm button - await page.locator('ion-alert .alert-button:not(.alert-button-role-cancel)').click(); - - // Check note text (Angular binding updates) - await expect(page.locator('#checkbox-note')).toHaveText('true'); - await expect(page.locator('#radio-note')).toHaveText('nes'); - await expect(page.locator('#toggle-note')).toHaveText('true'); - await expect(page.locator('#input-note')).toHaveText('hola'); - await expect(page.locator('#input-otp-note')).toHaveText('1234'); - await expect(page.locator('#datetime-note')).toHaveText('1994-03-14'); - await expect(page.locator('#select-note')).toHaveText('ps'); - }); + test('should update angular when values change', async ({ page }) => { + await page.locator('#reset-button').click(); - test('should update values when erasing input', async ({ page }) => { - // Focus the input and press backspace to remove last character - await page.locator('ion-input').nth(0).locator('input').click(); - await page.locator('ion-input').nth(0).locator('input').press('Backspace'); - // Check mirror element reflects the change - await expect(page.locator('ion-input').nth(1)).toHaveJSProperty('value', 'some tex'); - // Check note text (Angular binding) - await expect(page.locator('#input-note')).toHaveText('some tex'); - - // Focus the last OTP input and press backspace - await page.locator('ion-input-otp input').last().click(); - await page.locator('ion-input-otp input').last().press('Backspace'); - // Check mirror element reflects the change - await expect(page.locator('ion-input-otp').nth(1)).toHaveJSProperty('value', '123'); - // Check note text (Angular binding) - await expect(page.locator('#input-otp-note')).toHaveText('123'); + await page.locator('ion-checkbox#first-checkbox').click(); + await page.locator('ion-radio').first().click(); + await page.locator('ion-toggle').first().click(); + + await page.locator('ion-input').nth(0).locator('input').fill('hola'); + await page.locator('ion-input').nth(0).locator('input').blur(); + + await page.locator('ion-input-otp input').nth(0).fill('1'); + await page.locator('ion-input-otp input').nth(1).fill('2'); + await page.locator('ion-input-otp input').nth(2).fill('3'); + await page.locator('ion-input-otp input').nth(3).fill('4'); + await page.locator('ion-input-otp input').nth(3).blur(); + + // Set date to 1994-03-14 + await page.locator('ion-datetime').first().click(); + await page.locator('ion-datetime').first().locator('.calendar-day:not([disabled])').first().click(); + + await page.locator('ion-select#game-console').click(); + await expect(page.locator('ion-alert')).toBeVisible(); + // Playstation option + await page.locator('ion-alert .alert-radio-button').nth(3).click(); + // Click confirm button + await page.locator('ion-alert .alert-button:not(.alert-button-role-cancel)').click(); + + // Check note text (Angular binding updates) + await expect(page.locator('#checkbox-note')).toHaveText('true'); + await expect(page.locator('#radio-note')).toHaveText('nes'); + await expect(page.locator('#toggle-note')).toHaveText('true'); + await expect(page.locator('#input-note')).toHaveText('hola'); + await expect(page.locator('#input-otp-note')).toHaveText('1234'); + await expect(page.locator('#datetime-note')).toHaveText('1994-03-14'); + await expect(page.locator('#select-note')).toHaveText('ps'); + }); + + test('should update values when erasing input', async ({ page }) => { + // Focus the input and press backspace to remove last character + await page.locator('ion-input').nth(0).locator('input').click(); + await page.locator('ion-input').nth(0).locator('input').press('Backspace'); + // Check mirror element reflects the change + await expect(page.locator('ion-input').nth(1)).toHaveJSProperty('value', 'some tex'); + // Check note text (Angular binding) + await expect(page.locator('#input-note')).toHaveText('some tex'); + + // Focus the last OTP input and press backspace + await page.locator('ion-input-otp input').last().click(); + await page.locator('ion-input-otp input').last().press('Backspace'); + // Check mirror element reflects the change + await expect(page.locator('ion-input-otp').nth(1)).toHaveJSProperty('value', '123'); + // Check note text (Angular binding) + await expect(page.locator('#input-otp-note')).toHaveText('123'); + }); + + test('should reflect props when component has a default value', async ({ page }) => { + // Disable inputs + await page.locator('#disable-button').click(); + + // Disabled prop + await expect(page.locator('ion-input').first()).toHaveAttribute('disabled', ''); + await expect(page.locator('ion-input-otp').first()).toHaveAttribute('disabled', ''); + await expect(page.locator('ion-textarea').first()).toHaveAttribute('disabled', ''); + + // Reset disabled state and set readonly state + await page.locator('#disable-button').click(); + await page.locator('#readonly-button').click(); + + // Readonly prop + await expect(page.locator('ion-input').first()).toHaveAttribute('readonly', ''); + await expect(page.locator('ion-input-otp').first()).toHaveAttribute('readonly', ''); + await expect(page.locator('ion-textarea').first()).toHaveAttribute('readonly', ''); + }); }); test.describe('updating text input refs', () => { diff --git a/packages/angular/test/base/e2e/src/standalone/inputs.spec.ts b/packages/angular/test/base/e2e/src/standalone/inputs.spec.ts new file mode 100644 index 00000000000..b5b17496ee2 --- /dev/null +++ b/packages/angular/test/base/e2e/src/standalone/inputs.spec.ts @@ -0,0 +1,28 @@ +import { test, expect } from '@playwright/test'; + +test.describe('Inputs', () => { + test.beforeEach(async ({ page }) => { + await page.goto('/standalone/inputs'); + }); + + test.describe('basic functionality', () => { + test('should reflect props when component has a default value', async ({ page }) => { + // Disable inputs + await page.locator('#disable-button').click(); + + // Disabled prop + await expect(page.locator('ion-input')).toHaveAttribute('disabled', ''); + await expect(page.locator('ion-input-otp')).toHaveAttribute('disabled', ''); + await expect(page.locator('ion-textarea')).toHaveAttribute('disabled', ''); + + // Reset disabled state and set readonly state + await page.locator('#disable-button').click(); + await page.locator('#readonly-button').click(); + + // Readonly prop + await expect(page.locator('ion-input')).toHaveAttribute('readonly', ''); + await expect(page.locator('ion-input-otp')).toHaveAttribute('readonly', ''); + await expect(page.locator('ion-textarea')).toHaveAttribute('readonly', ''); + }); + }); +}); diff --git a/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html b/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html index c63e1c2792e..728406e3909 100644 --- a/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html +++ b/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html @@ -11,18 +11,18 @@ DateTime - + {{datetime}} DateTime Mirror - + {{datetime}} - + No Game Console NES Nintendo64 @@ -48,7 +48,7 @@ - + Toggle {{toggle}} @@ -62,27 +62,27 @@ - + {{input}} - + {{input}} - Input OTP + Input OTP {{inputOtp}} - Input OTP Mirror + Input OTP Mirror {{inputOtp}} - + Checkbox {{checkbox}} @@ -97,7 +97,7 @@ - Radio + Radio {{radio}} @@ -110,14 +110,20 @@ - + Range + + + +

Set values Reset values + Toggle Disabled + Toggle Readonly

diff --git a/packages/angular/test/base/src/app/lazy/inputs/inputs.component.ts b/packages/angular/test/base/src/app/lazy/inputs/inputs.component.ts index e53f73948c3..fb04b7d1467 100644 --- a/packages/angular/test/base/src/app/lazy/inputs/inputs.component.ts +++ b/packages/angular/test/base/src/app/lazy/inputs/inputs.component.ts @@ -16,6 +16,11 @@ export class InputsComponent { select? = 'nes'; changes = 0; range? = 50; + textarea? = 'some text'; + + // States + isDisabled = false; + isReadonly = false; setValues() { console.log('set values'); @@ -27,6 +32,7 @@ export class InputsComponent { this.toggle = true; this.select = 'nes'; this.range = 50; + this.textarea = 'some text'; } resetValues() { @@ -39,6 +45,17 @@ export class InputsComponent { this.toggle = false; this.select = undefined; this.range = undefined; + this.textarea = undefined; + } + + toggleDisable() { + console.log(`toggle disable to ${!this.isDisabled}`); + this.isDisabled = !this.isDisabled; + } + + toggleReadonly() { + console.log(`toggle readonly to ${!this.isReadonly}`); + this.isReadonly = !this.isReadonly; } counter() { diff --git a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts index 197563dfb32..a12903f57d3 100644 --- a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts +++ b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts @@ -7,6 +7,7 @@ export const routes: Routes = [ component: AppComponent, children: [ { path: '', loadComponent: () => import('../home-page/home-page.component').then(c => c.HomePageComponent) }, + { path: 'inputs', loadComponent: () => import('../inputs/inputs.component').then(c => c.InputsComponent) }, { path: 'menu-controller', loadComponent: () => import('../menu-controller/menu-controller.component').then(c => c.MenuControllerComponent) }, { path: 'action-sheet-controller', loadComponent: () => import('../action-sheet-controller/action-sheet-controller.component').then(c => c.ActionSheetControllerComponent) }, { path: 'popover', loadComponent: () => import('../popover/popover.component').then(c => c.PopoverComponent) }, diff --git a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html index 058cec23c09..9bc81f2433e 100644 --- a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html +++ b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html @@ -28,6 +28,11 @@ Icon Test + + + Inputs Test + + Reorder Group Test diff --git a/packages/angular/test/base/src/app/standalone/inputs/inputs.component.html b/packages/angular/test/base/src/app/standalone/inputs/inputs.component.html new file mode 100644 index 00000000000..16e02b5d4a4 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/inputs/inputs.component.html @@ -0,0 +1,79 @@ + + + + Inputs test + + + + +
+ + + DateTime + + {{form.value.datetime}} + + + + + No Game Console + NES + Nintendo64 + PlayStation + Sega Genesis + Sega Saturn + SNES + + {{form.value.select}} + + + + + Toggle + + {{form.value.toggle}} + + + + + {{form.value.input}} + + + + Input OTP + {{form.value.inputOtp}} + + + + + Checkbox + + {{form.value.checkbox}} + + + + + Radio + + {{form.value.radio}} + + + + + Range + + + + + + + + +
+

+ Set values + Reset values + Toggle Disabled + Toggle Readonly +

+
diff --git a/packages/angular/test/base/src/app/standalone/inputs/inputs.component.ts b/packages/angular/test/base/src/app/standalone/inputs/inputs.component.ts new file mode 100644 index 00000000000..0fa0fc83ce6 --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/inputs/inputs.component.ts @@ -0,0 +1,80 @@ +import { Component } from '@angular/core'; +import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; +import { + IonHeader, IonToolbar, IonTitle, IonContent, IonList, IonItem, + IonLabel, IonDatetime, IonNote, IonSelect, IonSelectOption, + IonToggle, IonInput, IonInputOtp, IonCheckbox, IonRadioGroup, + IonRadio, IonRange, IonTextarea, IonButton +} from '@ionic/angular/standalone'; + +@Component({ + selector: 'app-inputs', + templateUrl: './inputs.component.html', + standalone: true, + imports: [ + ReactiveFormsModule, + IonHeader, IonToolbar, IonTitle, IonContent, IonList, IonItem, + IonLabel, IonDatetime, IonNote, IonSelect, IonSelectOption, + IonToggle, IonInput, IonInputOtp, IonCheckbox, IonRadioGroup, + IonRadio, IonRange, IonTextarea, IonButton + ], +}) +export class InputsComponent { + // Create the FormGroup + form = new FormGroup({ + datetime: new FormControl('1994-03-15'), + input: new FormControl('some text'), + inputOtp: new FormControl('1234'), + checkbox: new FormControl(true), + radio: new FormControl('nes'), + toggle: new FormControl(true), + select: new FormControl('nes'), + range: new FormControl(50), + textarea: new FormControl('some text'), + }); + + // States + isDisabled = false; + isReadonly = false; + + setValues() { + console.log('set values'); + this.form.patchValue({ + datetime: '1994-03-15', + input: 'some text', + inputOtp: '1234', + checkbox: true, + radio: 'nes', + toggle: true, + select: 'nes', + range: 50, + textarea: 'some text', + }); + } + + resetValues() { + console.log('reset values'); + // reset them each + this.form.patchValue({ + datetime: undefined, + input: undefined, + inputOtp: undefined, + checkbox: false, + radio: undefined, + toggle: false, + select: undefined, + range: undefined, + textarea: undefined, + }); + } + + toggleDisable() { + console.log(`toggle disable to ${!this.isDisabled}`); + this.isDisabled = !this.isDisabled; + } + + toggleReadonly() { + console.log(`toggle readonly to ${!this.isReadonly}`); + this.isReadonly = !this.isReadonly; + } +} diff --git a/packages/react/test/base/src/pages/Inputs.tsx b/packages/react/test/base/src/pages/Inputs.tsx index 7e5db11b5de..47ac3ac5328 100644 --- a/packages/react/test/base/src/pages/Inputs.tsx +++ b/packages/react/test/base/src/pages/Inputs.tsx @@ -66,6 +66,10 @@ const Inputs: React.FC = () => { const [segment, setSegment] = useState('dogs'); const [select, setSelect] = useState('apples'); + // States + const [isDisabled, setIsDisabled] = useState(false); + const [isReadonly, setIsReadonly] = useState(false); + const reset = () => { setCheckbox(false); setToggle(false); @@ -94,6 +98,14 @@ const Inputs: React.FC = () => { setSelect('bananas'); }; + const toggleDisable = () => { + setIsDisabled(!isDisabled); + }; + + const toggleReadonly = () => { + setIsReadonly(!isReadonly); + }; + return ( @@ -109,6 +121,7 @@ const Inputs: React.FC = () => { onIonChange={(e: IonSegmentCustomEvent) => { if (typeof e.detail.value === 'string') setSegment(e.detail.value); }} + disabled={isDisabled} > Dogs @@ -122,6 +135,7 @@ const Inputs: React.FC = () => { ) => setSearchbar(e.detail.value!)} + disabled={isDisabled} > @@ -137,6 +151,7 @@ const Inputs: React.FC = () => { ) => setCheckbox(e.detail.checked)} + disabled={isDisabled} > Checkbox @@ -146,6 +161,7 @@ const Inputs: React.FC = () => { ) => setToggle(e.detail.checked)} + disabled={isDisabled} > Toggle @@ -156,6 +172,8 @@ const Inputs: React.FC = () => { value={input} onIonInput={(e: IonInputCustomEvent) => setInput(e.detail.value!)} label="Input" + disabled={isDisabled} + readonly={isReadonly} > @@ -163,6 +181,8 @@ const Inputs: React.FC = () => { ) => setInputOtp(e.detail.value ?? '')} + disabled={isDisabled} + readonly={isReadonly} > @@ -174,6 +194,7 @@ const Inputs: React.FC = () => { max={100} value={range} onIonChange={(e: IonRangeCustomEvent) => setRange(e.detail.value as { lower: number; upper: number })} + disabled={isDisabled} > @@ -182,6 +203,8 @@ const Inputs: React.FC = () => { value={textarea} onIonInput={(e: IonTextareaCustomEvent) => setTextarea(e.detail.value!)} label="Textarea" + disabled={isDisabled} + readonly={isReadonly} > @@ -195,6 +218,8 @@ const Inputs: React.FC = () => { setDatetime(value); } }} + disabled={isDisabled} + readonly={isReadonly} > @@ -203,13 +228,13 @@ const Inputs: React.FC = () => { onIonChange={(e: IonRadioGroupCustomEvent) => setRadio(e.detail.value)} > - Red + Red - Green + Green - Blue + Blue @@ -218,6 +243,7 @@ const Inputs: React.FC = () => { value={select} onIonChange={(e: IonSelectCustomEvent>) => setSelect(e.detail.value)} label="Select" + disabled={isDisabled} > Apples Bananas @@ -241,6 +267,8 @@ const Inputs: React.FC = () => { Reset Values Set Values + Toggle Disabled + Toggle Readonly
diff --git a/packages/react/test/base/tests/e2e/specs/components/inputs.cy.ts b/packages/react/test/base/tests/e2e/specs/components/inputs.cy.ts index b32468bd96e..55732f89cae 100644 --- a/packages/react/test/base/tests/e2e/specs/components/inputs.cy.ts +++ b/packages/react/test/base/tests/e2e/specs/components/inputs.cy.ts @@ -3,48 +3,69 @@ describe('Inputs', () => { cy.visit('/inputs') }) - it('should have default value', () => { - cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); - cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); - cy.get('ion-input').should('have.prop', 'value').and('eq', ''); - cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); - cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); - cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); - cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); - cy.get('ion-datetime').should('have.prop', 'value').and('eq', ''); - cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'red'); - cy.get('ion-segment').should('have.prop', 'value').and('eq', 'dogs'); - cy.get('ion-select').should('have.prop', 'value').and('eq', 'apples'); - }); + describe('basic functionality', () => { + it('should have default value', () => { + cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); + cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); + cy.get('ion-input').should('have.prop', 'value').and('eq', ''); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); + cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); + cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); + cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); + cy.get('ion-datetime').should('have.prop', 'value').and('eq', ''); + cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'red'); + cy.get('ion-segment').should('have.prop', 'value').and('eq', 'dogs'); + cy.get('ion-select').should('have.prop', 'value').and('eq', 'apples'); + }); + + it('should set/reset values', () => { + cy.get('ion-button#set').click(); - it('should set/reset values', () => { - cy.get('ion-button#set').click(); - - cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', true); - cy.get('ion-toggle').should('have.prop', 'checked').and('eq', true); - cy.get('ion-input').should('have.prop', 'value').and('eq', 'Hello World'); - cy.get('ion-input-otp').should('have.prop', 'value').and('eq', '1234'); - cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 10, upper: 90 }); - cy.get('ion-textarea').should('have.prop', 'value').and('eq', 'Lorem Ipsum'); - cy.get('ion-searchbar').should('have.prop', 'value').and('eq', 'Search Query'); - cy.get('ion-datetime').should('have.prop', 'value').and('eq', '2019-01-31'); - cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'blue'); - cy.get('ion-segment').should('have.prop', 'value').and('eq', 'cats'); - cy.get('ion-select').should('have.prop', 'value').and('eq', 'bananas'); - - cy.get('ion-button#reset').click(); - - cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); - cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); - cy.get('ion-input').should('have.prop', 'value').and('eq', ''); - cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); - cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); - cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); - cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); - cy.get('ion-datetime').should('have.prop', 'value').and('eq', ''); - cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'red'); - cy.get('ion-segment').should('have.prop', 'value').and('eq', 'dogs'); - cy.get('ion-select').should('have.prop', 'value').and('eq', 'apples'); + cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', true); + cy.get('ion-toggle').should('have.prop', 'checked').and('eq', true); + cy.get('ion-input').should('have.prop', 'value').and('eq', 'Hello World'); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', '1234'); + cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 10, upper: 90 }); + cy.get('ion-textarea').should('have.prop', 'value').and('eq', 'Lorem Ipsum'); + cy.get('ion-searchbar').should('have.prop', 'value').and('eq', 'Search Query'); + cy.get('ion-datetime').should('have.prop', 'value').and('eq', '2019-01-31'); + cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'blue'); + cy.get('ion-segment').should('have.prop', 'value').and('eq', 'cats'); + cy.get('ion-select').should('have.prop', 'value').and('eq', 'bananas'); + + cy.get('ion-button#reset').click(); + + cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); + cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); + cy.get('ion-input').should('have.prop', 'value').and('eq', ''); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); + cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); + cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); + cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); + cy.get('ion-datetime').should('have.prop', 'value').and('eq', ''); + cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'red'); + cy.get('ion-segment').should('have.prop', 'value').and('eq', 'dogs'); + cy.get('ion-select').should('have.prop', 'value').and('eq', 'apples'); + }); + + it('should reflect props when component has a default value', () => { + // Disable inputs + cy.get('ion-button#disable').click(); + + // Disabled prop + cy.get('ion-input').should('have.attr', 'disabled'); + cy.get('ion-input-otp').should('have.attr', 'disabled'); + cy.get('ion-textarea').should('have.attr', 'disabled'); + + // Reset disabled state and set readonly state + cy.get('ion-button#disable').click(); + cy.get('ion-button#readonly').click(); + + // Readonly prop + cy.get('ion-input').should('have.attr', 'readonly'); + cy.get('ion-input-otp').should('have.attr', 'readonly'); + cy.get('ion-textarea').should('have.attr', 'readonly'); + }); }); describe('updating text input refs', () => { diff --git a/packages/vue/test/base/src/views/Inputs.vue b/packages/vue/test/base/src/views/Inputs.vue index 28108f4f0dd..6bfe69984b2 100644 --- a/packages/vue/test/base/src/views/Inputs.vue +++ b/packages/vue/test/base/src/views/Inputs.vue @@ -8,7 +8,7 @@ Inputs - + Dogs @@ -18,7 +18,7 @@ - + @@ -30,48 +30,48 @@ - Checkbox + Checkbox - Toggle + Toggle - + - + - + - + Datetime - + - Red + Red - Green + Green - Blue + Blue - + Apples Bananas @@ -94,6 +94,8 @@ Reset Values Set Values + Toggle Disabled + Toggle Readonly
@@ -171,6 +173,10 @@ export default defineComponent({ const segment = ref('dogs'); const select = ref('apples'); + // States + const isDisabled = ref(false); + const isReadonly = ref(false); + const reset = () => { checkbox.value = false; toggle.value = false; @@ -205,6 +211,14 @@ export default defineComponent({ select.value = 'bananas'; } + const toggleDisable = () => { + isDisabled.value = !isDisabled.value; + }; + + const toggleReadonly = () => { + isReadonly.value = !isReadonly.value; + }; + return { checkbox, toggle, @@ -217,9 +231,13 @@ export default defineComponent({ radio, segment, select, + isDisabled, + isReadonly, reset, - set + set, + toggleDisable, + toggleReadonly } } }); diff --git a/packages/vue/test/base/tests/e2e/specs/inputs.cy.js b/packages/vue/test/base/tests/e2e/specs/inputs.cy.js index 26c26f8ef95..f836496a5d0 100644 --- a/packages/vue/test/base/tests/e2e/specs/inputs.cy.js +++ b/packages/vue/test/base/tests/e2e/specs/inputs.cy.js @@ -2,48 +2,70 @@ describe('Inputs', () => { beforeEach(() => { cy.visit('/inputs') }) - it('should have default value', () => { - cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); - cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); - cy.get('ion-input').should('have.prop', 'value').and('eq', ''); - cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); - cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); - cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); - cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); - cy.get('ion-datetime').should('have.prop', 'value').and('eq', ''); - cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'red'); - cy.get('ion-segment').should('have.prop', 'value').and('eq', 'dogs'); - cy.get('ion-select').should('have.prop', 'value').and('eq', 'apples'); - }); + + describe('basic functionality', () => { + it('should have default value', () => { + cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); + cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); + cy.get('ion-input').should('have.prop', 'value').and('eq', ''); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); + cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); + cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); + cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); + cy.get('ion-datetime').should('have.prop', 'value').and('eq', ''); + cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'red'); + cy.get('ion-segment').should('have.prop', 'value').and('eq', 'dogs'); + cy.get('ion-select').should('have.prop', 'value').and('eq', 'apples'); + }); + + it('should set/reset values', () => { + cy.get('ion-button#set').click(); + + cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', true); + cy.get('ion-toggle').should('have.prop', 'checked').and('eq', true); + cy.get('ion-input').should('have.prop', 'value').and('eq', 'Hello World'); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', '1234'); + cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 10, upper: 90 }); + cy.get('ion-textarea').should('have.prop', 'value').and('eq', 'Lorem Ipsum'); + cy.get('ion-searchbar').should('have.prop', 'value').and('eq', 'Search Query'); + cy.get('ion-datetime').should('have.prop', 'value').and('eq', '2019-01-31'); + cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'blue'); + cy.get('ion-segment').should('have.prop', 'value').and('eq', 'cats'); + cy.get('ion-select').should('have.prop', 'value').and('eq', 'bananas'); - it('should set/reset values', () => { - cy.get('ion-button#set').click(); + cy.get('ion-button#reset').click(); - cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', true); - cy.get('ion-toggle').should('have.prop', 'checked').and('eq', true); - cy.get('ion-input').should('have.prop', 'value').and('eq', 'Hello World'); - cy.get('ion-input-otp').should('have.prop', 'value').and('eq', '1234'); - cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 10, upper: 90 }); - cy.get('ion-textarea').should('have.prop', 'value').and('eq', 'Lorem Ipsum'); - cy.get('ion-searchbar').should('have.prop', 'value').and('eq', 'Search Query'); - cy.get('ion-datetime').should('have.prop', 'value').and('eq', '2019-01-31'); - cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'blue'); - cy.get('ion-segment').should('have.prop', 'value').and('eq', 'cats'); - cy.get('ion-select').should('have.prop', 'value').and('eq', 'bananas'); + cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); + cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); + cy.get('ion-input').should('have.prop', 'value').and('eq', ''); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); + cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); + cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); + cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); + cy.get('ion-datetime').should('have.prop', 'value').and('eq', ''); + cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'red'); + cy.get('ion-segment').should('have.prop', 'value').and('eq', 'dogs'); + cy.get('ion-select').should('have.prop', 'value').and('eq', 'apples'); + }); + + it('should reflect props when component has a default value', () => { + // Disable inputs + cy.get('ion-button#disable').click(); - cy.get('ion-button#reset').click(); + // Disabled prop + cy.get('ion-input').should('have.attr', 'disabled'); + cy.get('ion-input-otp').should('have.attr', 'disabled'); + cy.get('ion-textarea').should('have.attr', 'disabled'); - cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); - cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); - cy.get('ion-input').should('have.prop', 'value').and('eq', ''); - cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); - cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); - cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); - cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); - cy.get('ion-datetime').should('have.prop', 'value').and('eq', ''); - cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'red'); - cy.get('ion-segment').should('have.prop', 'value').and('eq', 'dogs'); - cy.get('ion-select').should('have.prop', 'value').and('eq', 'apples'); + // Reset disabled state and set readonly state + cy.get('ion-button#disable').click(); + cy.get('ion-button#readonly').click(); + + // Readonly prop + cy.get('ion-input').should('have.attr', 'readonly'); + cy.get('ion-input-otp').should('have.attr', 'readonly'); + cy.get('ion-textarea').should('have.attr', 'readonly'); + }); }); describe('updating text input refs', () => { From a1fa50b8e2ea92e4a63c5e97428f37b6375629bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Feb 2026 16:50:12 -0500 Subject: [PATCH 097/126] chore(deps): update dependency @capacitor/core to v8.1.0 (#30953) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@capacitor/core](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`8.0.2` β†’ `8.1.0`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/8.0.2/8.1.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fcore/8.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fcore/8.0.2/8.1.0?slim=true) | --- ### Release Notes
ionic-team/capacitor (@​capacitor/core) ### [`v8.1.0`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#810-2026-02-11) [Compare Source](https://redirect.github.com/ionic-team/capacitor/compare/8.0.2...8.1.0) ##### Bug Fixes - **cookies:** only send expires param on web if a date is set ([b10cd7f](https://redirect.github.com/ionic-team/capacitor/commit/b10cd7ff15b010a76802374214f4e0cbd04abdab)) ##### Features - **cli:** Add packageManager to iOS config ([#​8321](https://redirect.github.com/ionic-team/capacitor/issues/8321)) ([a125498](https://redirect.github.com/ionic-team/capacitor/commit/a1254983bbb9dcb273d93f3c5f639b792e516406)) ##### Reverts - revert version bump from [#​8319](https://redirect.github.com/ionic-team/capacitor/issues/8319) and [#​8320](https://redirect.github.com/ionic-team/capacitor/issues/8320) ([a48ebb6](https://redirect.github.com/ionic-team/capacitor/commit/a48ebb622ea4ebe92927bf1756a4d8ac6012884b)) #### [8.0.2](https://redirect.github.com/ionic-team/capacitor/compare/8.0.1...8.0.2) (2026-01-27) ##### Bug Fixes - **android:** AGP 9.0 no longer supports `proguard-android.txt` ([#​8315](https://redirect.github.com/ionic-team/capacitor/issues/8315)) ([dcc76c3](https://redirect.github.com/ionic-team/capacitor/commit/dcc76c37508a9b71fb36d95707748c2dd115cf52)) - **cli:** Update tar package ([#​8311](https://redirect.github.com/ionic-team/capacitor/issues/8311)) ([0969c5c](https://redirect.github.com/ionic-team/capacitor/commit/0969c5cd0b16cf23d2489a85a3b8fa1bee2ebf3b)) - **core:** make SystemBars hide and show options optional ([#​8305](https://redirect.github.com/ionic-team/capacitor/issues/8305)) ([95dc7d8](https://redirect.github.com/ionic-team/capacitor/commit/95dc7d8ace3aabdda7e325c4a8ef7d1432ad37e9)) - **SystemBars:** get correct style on handleOnConfigurationChanged ([#​8295](https://redirect.github.com/ionic-team/capacitor/issues/8295)) ([2a66b44](https://redirect.github.com/ionic-team/capacitor/commit/2a66b44915895f971e4a26a8612798aa2f95ea11)) - **SystemBars:** Set window background color according to theme ([#​8306](https://redirect.github.com/ionic-team/capacitor/issues/8306)) ([6037e38](https://redirect.github.com/ionic-team/capacitor/commit/6037e3836ec24c9ddf26e74e5fbec20ab506adfd)) - **SystemBars:** Skipping margin manipulation when on a fixed WebView ([#​8309](https://redirect.github.com/ionic-team/capacitor/issues/8309)) ([53c33b6](https://redirect.github.com/ionic-team/capacitor/commit/53c33b614218bf635322fbdf9a38038a7964e3d4)) #### [8.0.1](https://redirect.github.com/ionic-team/capacitor/compare/8.0.0...8.0.1) (2026-01-13) ##### Bug Fixes - **android:** Remove calculated bottom inset if keyboard is visible ([#​8280](https://redirect.github.com/ionic-team/capacitor/issues/8280)) ([196b642](https://redirect.github.com/ionic-team/capacitor/commit/196b642236d293a5012e3c307fcd942766e56cce)) - **cli:** Support wireless iOS devices in `cap run` ([#​8301](https://redirect.github.com/ionic-team/capacitor/issues/8301)) ([dcb368c](https://redirect.github.com/ionic-team/capacitor/commit/dcb368c33555487f1b6f46a6d8e30736bdd78955)) - **cli:** use latest native-run ([#​8296](https://redirect.github.com/ionic-team/capacitor/issues/8296)) ([121d830](https://redirect.github.com/ionic-team/capacitor/commit/121d83013f39e25009121533a2c3ad86e428d6b2))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- core/package-lock.json | 43 +++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index c3656beae5a..442149f3031 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -93,7 +93,6 @@ "version": "7.16.12", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.16.8", @@ -628,12 +627,11 @@ "license": "MIT" }, "node_modules/@capacitor/core": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.0.2.tgz", - "integrity": "sha512-EXZfxkL6GFJS2cb7TIBR7RiHA5iz6ufDcl1VmUpI2pga3lJ5Ck2+iqbx7N+osL3XYem9ad4XCidJEMm64DX6UQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.1.0.tgz", + "integrity": "sha512-UfMBMWc1v7J+14AhH03QmeNwV3HZx3qnOWhpwnHfzALEwAwlV/itQOQqcasMQYhOHWL0tiymc5ByaLTn7KKQxw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -852,7 +850,6 @@ "version": "4.33.0", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -1790,7 +1787,6 @@ "node_modules/@stencil/core": { "version": "4.38.0", "license": "MIT", - "peer": true, "bin": { "stencil": "bin/stencil" }, @@ -2215,7 +2211,6 @@ "version": "6.7.2", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.7.2", "@typescript-eslint/types": "6.7.2", @@ -2441,6 +2436,7 @@ "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/shared": "3.5.25", @@ -2455,6 +2451,7 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=0.12" }, @@ -2467,7 +2464,8 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@vue/compiler-dom": { "version": "3.5.25", @@ -2475,6 +2473,7 @@ "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-core": "3.5.25", "@vue/shared": "3.5.25" @@ -2486,6 +2485,7 @@ "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/compiler-core": "3.5.25", @@ -2503,7 +2503,8 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@vue/compiler-sfc/node_modules/postcss": { "version": "8.5.6", @@ -2525,6 +2526,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2540,6 +2542,7 @@ "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.25", "@vue/shared": "3.5.25" @@ -2551,6 +2554,7 @@ "integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/shared": "3.5.25" } @@ -2561,6 +2565,7 @@ "integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/shared": "3.5.25" @@ -2572,6 +2577,7 @@ "integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/runtime-core": "3.5.25", @@ -2585,6 +2591,7 @@ "integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-ssr": "3.5.25", "@vue/shared": "3.5.25" @@ -2598,7 +2605,8 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz", "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@zeit/schemas": { "version": "2.21.0", @@ -2621,7 +2629,6 @@ "version": "7.4.0", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3782,7 +3789,8 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/debug": { "version": "2.6.9", @@ -4076,7 +4084,6 @@ "version": "7.32.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -7272,6 +7279,7 @@ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } @@ -7593,6 +7601,7 @@ } ], "license": "MIT", + "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -7947,7 +7956,6 @@ "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "playwright-core": "cli.js" }, @@ -7959,7 +7967,6 @@ "version": "7.0.35", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -8065,7 +8072,6 @@ "version": "0.36.2", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "postcss": ">=5.0.0" } @@ -8114,7 +8120,6 @@ "version": "2.6.1", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -8472,7 +8477,6 @@ "version": "2.35.1", "dev": true, "license": "MIT", - "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -8694,6 +8698,7 @@ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", + "peer": true, "engines": { "node": ">=0.10.0" } From c8a65dcd7ee1d05f898e8a6f4d5e7b69f0cc756a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 18:12:03 +0000 Subject: [PATCH 098/126] chore(deps): update dependency @capacitor/status-bar to v8.0.1 (#30954) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@capacitor/status-bar](https://redirect.github.com/ionic-team/capacitor-plugins) | [`8.0.0` β†’ `8.0.1`](https://renovatebot.com/diffs/npm/@capacitor%2fstatus-bar/8.0.0/8.0.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fstatus-bar/8.0.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fstatus-bar/8.0.0/8.0.1?slim=true) | --- ### Release Notes
ionic-team/capacitor-plugins (@​capacitor/status-bar) ### [`v8.0.1`](https://redirect.github.com/ionic-team/capacitor-plugins/compare/@capacitor/splash-screen@8.0.0...bf4fe8c9ace79237c048c9b5ee0ab7455042bc86) [Compare Source](https://redirect.github.com/ionic-team/capacitor-plugins/compare/@capacitor/status-bar@8.0.0...@capacitor/status-bar@8.0.1)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- core/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 442149f3031..5fc8c332797 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -657,9 +657,9 @@ } }, "node_modules/@capacitor/status-bar": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-8.0.0.tgz", - "integrity": "sha512-aIj3bc7z8lfPgOen8HlrBrkfnxpFnh21OCx6jCUx4Mvv+B6eEkUQ49b32DOddgVfr+igRHLX2SYi7duqIsNDXg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-8.0.1.tgz", + "integrity": "sha512-OR59dlbwvmrV5dKsC9lvwv48QaGbqcbSTBpk+9/WXWxXYSdXXdzJZU9p8oyNPAkuJhCdnSa3XmU43fZRPBJJ5w==", "dev": true, "license": "MIT", "peerDependencies": { From 6490797851cede3bfda893a19b10f165259ec988 Mon Sep 17 00:00:00 2001 From: Shane Date: Fri, 13 Feb 2026 11:41:39 -0800 Subject: [PATCH 099/126] fix(modal, popover): respect safe area insets on popovers and modals (#30949) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue number: resolves #28411 --------- ## What is the current behavior? When a modal is displayed on tablet-sized screens (>= 768px Γ— >= 600px), the `--ion-safe-area-*` CSS variables are explicitly set to 0px. This was intended for inset modals that don't touch screen edges, but it breaks safe area handling on newer iPads with Face ID/home indicators, causing content to overlap with system UI elements. ## What is the new behavior? Modals now dynamically handle safe-area insets based on their type and position. This has to be done because modals that don't touch the edges cannot have a safe area applied (because it will add unnecessary padding), but modals that do touch the edges need to apply safe area correctly or the edges will be obstructed by whatever is in the safe area. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information [Modals test page](https://ionic-framework-git-fw-6830-2-ionic1.vercel.app/src/components/modal/test/safe-area/index.html) [Popovers test page](https://ionic-framework-git-fw-6830-2-ionic1.vercel.app/src/components/popover/test/safe-area/index.html) Current dev build: ``` 8.7.18-dev.11770674094.18396f54 ``` --------- Co-authored-by: ionitron --- ...ton-active-ios-ltr-Mobile-Safari-linux.png | Bin 1444 -> 1546 bytes ...ime-picker-ios-ltr-Mobile-Safari-linux.png | Bin 6941 -> 6952 bytes core/src/components/modal/modal.scss | 11 +- core/src/components/modal/modal.tsx | 197 +++++++++- core/src/components/modal/safe-area-utils.ts | 201 ++++++++++ .../modal/test/safe-area/index.html | 262 +++++++++++++ .../modal/test/safe-area/modal.e2e.ts | 370 ++++++++++++++++++ .../popover/animations/ios.enter.ts | 46 ++- .../components/popover/animations/md.enter.ts | 50 ++- .../popover/test/safe-area/index.html | 154 ++++++++ .../popover/test/safe-area/popover.e2e.ts | 81 ++++ ...rea-bottom-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 14448 bytes ...ea-bottom-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 23407 bytes ...rea-bottom-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 19440 bytes ...area-bottom-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 14108 bytes ...rea-bottom-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 21370 bytes ...area-bottom-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 17780 bytes ...area-large-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 16419 bytes ...rea-large-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 28264 bytes ...area-large-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 21938 bytes ...-area-large-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 15343 bytes ...area-large-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 25389 bytes ...-area-large-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 19563 bytes ...area-right-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 13644 bytes ...rea-right-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 24694 bytes ...area-right-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 18768 bytes ...-area-right-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 13637 bytes ...area-right-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 22525 bytes ...-area-right-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 17537 bytes core/src/components/popover/utils.ts | 134 ++++++- 30 files changed, 1454 insertions(+), 52 deletions(-) create mode 100644 core/src/components/modal/safe-area-utils.ts create mode 100644 core/src/components/modal/test/safe-area/index.html create mode 100644 core/src/components/modal/test/safe-area/modal.e2e.ts create mode 100644 core/src/components/popover/test/safe-area/index.html create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Safari-linux.png diff --git a/core/src/components/datetime/test/custom/datetime.e2e.ts-snapshots/datetime-custom-time-button-active-ios-ltr-Mobile-Safari-linux.png b/core/src/components/datetime/test/custom/datetime.e2e.ts-snapshots/datetime-custom-time-button-active-ios-ltr-Mobile-Safari-linux.png index 7c7e296086a3849d98f379209a71b9ed20cec521..f4bc6529a2b693292bdd7485911cf194ce0b3762 100644 GIT binary patch delta 1499 zcmV<11tj{U3yKVoL4UMKL_t(&f$f@GOk716$A2?tFYGR`6xyZW+Om`au~MupSd^%E ziLJN9+Qi2AU^LNZwfdmZ2OspMUgDD)jqz?$ebB^)M6EP!qrF%wR4KIu3n;fz78W?{ z?m1_CSY244>@IB5OZNA)nVJ8bnQyo7wTY?F(#eXRfx(zvHo83j0*;vFJ&HxeCuv`YpWyGsv7BmHN+>S8i#Tw>ijnr+Z zh{Vc`f~JrFBBEstx}nEk3D0$^F1MkdqS8| zlV$!qiq{k@*l&0|N^oEzq0E)%Ah*zkw23+GygoNMd5#PAckb*Mnv^WNIydQ@X0s@x zPL70We)A~$c!ZLwLIyj7L?#XH-C0lJs=TG?6dc;!!GE!DPE)bD6iX?-f9E*snpSh` zV>JkE{_SeGH^i4O9l)7uM_iwyuob%PT>oTYrzO1vvQ zDeJmh2Y+e%?k^tRb!%L=@xBVaczz#&>x(JdSiIoa9)0T$oVhX2pEy6oFJGT#&+A9n z@#@V9o_V~vlk4wWGw&)nbEt1IW{H!2=vQ#Adz5SMSdGmQlWPu1WkV^wZ9_!$Sh_aS zH_rZ#ey68xC@r03C>kGG7dI%t^0ItND+&qrCx0&QWOxd5XxLFr=-ecIr$!R$e5<^4 z9UGXVF(VeO&0YAbi_&`5Ow#vM0oz}0oKrkDG>NCciDr)_623qIkL+riHcpDV`8-h{ z4Kvt1O8xfAw1;bV*~nkvK@UzPl-Fzt(AwNZRimGo$MoLc&tY?Dti7p}-am%ZejY3# zP=C!NG7+WiyR&S1pmI7W2o~I5FR1&E@$))^ouh<95!w&@P1ED+@z<jQnYfGHT0vZ72)&ymn+x-S(FoDXlIfrzY delta 1396 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 { - this.handleViewTransition(); + const context = this.getSafeAreaContext(); + + // iOS card modals: handle portrait/landscape view transitions + if (context.isCardModal && !this.enterAnimation && !this.leaveAnimation) { + this.handleViewTransition(); + } + + // Sheet modals: re-compute the internal offset property since safe-area + // values may change on device rotation (e.g., portrait notch vs landscape). + if (context.isSheetModal) { + this.updateSheetOffsetTop(); + } + + // Regular (non-sheet, non-card) modals: update safe-area overrides + // since the viewport may have crossed the centered-dialog breakpoint. + if (!context.isSheetModal && !context.isCardModal) { + this.updateSafeAreaOverrides(); + + // Re-evaluate fullscreen safe-area padding: clear first, then re-apply + if (this.wrapperEl) { + this.wrapperEl.style.removeProperty('height'); + this.wrapperEl.style.removeProperty('padding-bottom'); + } + this.applyFullscreenSafeArea(); + } }, 50); // Debounce to avoid excessive calls during active resizing } @@ -406,6 +435,9 @@ export class Modal implements ComponentInterface, OverlayInterface { this.triggerController.removeClickListener(); this.cleanupViewTransitionListener(); this.cleanupParentRemovalObserver(); + // Also called in dismiss() β€” intentional dual cleanup covers both + // dismiss-then-remove and direct DOM removal without dismiss. + this.cleanupSafeAreaOverrides(); } componentWillLoad() { @@ -594,6 +626,13 @@ export class Modal implements ComponentInterface, OverlayInterface { writeTask(() => this.el.classList.add('show-modal')); + // Recalculate isSheetModal before safe-area setup because framework + // bindings (e.g., Angular) may not have been applied when componentWillLoad ran. + this.isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined; + + // Set initial safe-area overrides before animation + this.setInitialSafeAreaOverrides(); + const hasCardModal = presentingElement !== undefined; /** @@ -614,6 +653,12 @@ export class Modal implements ComponentInterface, OverlayInterface { expandToScroll: this.expandToScroll, }); + // Update safe-area based on actual position after animation + this.updateSafeAreaOverrides(); + + // Apply fullscreen safe-area padding if needed + this.applyFullscreenSafeArea(); + /* tslint:disable-next-line */ if (typeof window !== 'undefined') { /** @@ -646,14 +691,7 @@ export class Modal implements ComponentInterface, OverlayInterface { window.addEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback); } - /** - * Recalculate isSheetModal because framework bindings (e.g., Angular) - * may not have been applied when componentWillLoad ran. - */ - const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined; - this.isSheetModal = isSheetModal; - - if (isSheetModal) { + if (this.isSheetModal) { this.initSheetGesture(); } else if (hasCardModal) { this.initSwipeToClose(); @@ -885,6 +923,10 @@ export class Modal implements ComponentInterface, OverlayInterface { return false; } + // Cancel any pending resize timeout to prevent stale updates during dismiss + clearTimeout(this.resizeTimeout); + this.resizeTimeout = undefined; + /** * Because the canDismiss check below is async, * we need to claim a lock before the check happens, @@ -956,6 +998,7 @@ export class Modal implements ComponentInterface, OverlayInterface { } this.cleanupViewTransitionListener(); this.cleanupParentRemovalObserver(); + this.cleanupSafeAreaOverrides(); this.cleanupChildRoutePassthrough(); } @@ -1166,6 +1209,10 @@ export class Modal implements ComponentInterface, OverlayInterface { transitionAnimation.play().then(() => { this.viewTransitionAnimation = undefined; + // Wait for a layout pass after the transition so getBoundingClientRect() + // in getPositionBasedSafeAreaConfig() reflects the new dimensions. + raf(() => this.updateSafeAreaOverrides()); + // After orientation transition, recreate the swipe-to-close gesture // with updated animation that reflects the new presenting element state this.reinitSwipeToClose(); @@ -1335,6 +1382,130 @@ export class Modal implements ComponentInterface, OverlayInterface { this.parentRemovalObserver = undefined; } + /** + * Creates the context object for safe-area utilities. + */ + private getSafeAreaContext(): ModalSafeAreaContext { + return { + isSheetModal: this.isSheetModal, + isCardModal: this.presentingElement !== undefined && getIonMode(this) === 'ios', + presentingElement: this.presentingElement, + breakpoints: this.breakpoints, + currentBreakpoint: this.currentBreakpoint, + }; + } + + /** + * Sets initial safe-area overrides before modal animation. + * Called in present() before animation starts. + * + * For sheet modals, the SCSS --height formula uses --ion-modal-offset-top + * (an internal property) instead of --ion-safe-area-top. We resolve the + * root safe-area-top to pixels and set --ion-modal-offset-top, decoupling + * the height calculation from --ion-safe-area-top (which is zeroed for + * sheets to prevent header content from getting double-offset padding). + */ + private setInitialSafeAreaOverrides(): void { + const context = this.getSafeAreaContext(); + const safeAreaConfig = getInitialSafeAreaConfig(context); + applySafeAreaOverrides(this.el, safeAreaConfig); + + // Set the internal offset property with the resolved root safe-area-top value + if (context.isSheetModal) { + this.updateSheetOffsetTop(); + } + } + + /** + * Resolves the current root --ion-safe-area-top value and sets the + * internal --ion-modal-offset-top property on the host element. + * Called on present and on resize (e.g., device rotation changes safe-area). + */ + private updateSheetOffsetTop(): void { + const safeAreaTop = getRootSafeAreaTop(); + this.el.style.setProperty('--ion-modal-offset-top', `${safeAreaTop}px`); + } + + /** + * Updates safe-area overrides during dynamic state changes. + * Called after animations, during gestures, and on orientation changes. + */ + private updateSafeAreaOverrides(): void { + const { wrapperEl, el } = this; + const context = this.getSafeAreaContext(); + + // Sheet modals: safe-area is fully determined at presentation time + // (top is always 0px, height is frozen). Nothing to update. + if (context.isSheetModal) return; + + // Card modals have fixed safe-area requirements set by initial prediction. + if (context.isCardModal) return; + + // wrapperEl is required for position-based detection below + if (!wrapperEl) return; + + // Regular modals: use position-based detection to correctly handle both + // fullscreen modals and centered dialogs with custom dimensions. + const safeAreaConfig = getPositionBasedSafeAreaConfig(wrapperEl); + applySafeAreaOverrides(el, safeAreaConfig); + } + + /** + * Applies padding-bottom to fullscreen modal wrapper to prevent + * content from overlapping system navigation bar. + */ + private applyFullscreenSafeArea(): void { + const { wrapperEl, el } = this; + if (!wrapperEl) return; + + const context = this.getSafeAreaContext(); + if (context.isSheetModal || context.isCardModal) return; + + // Check for standard Ionic layout children (ion-content, ion-footer), + // searching one level deep for wrapped components (e.g., + // ...). + // Note: uses a manual loop instead of querySelector(':scope > ...') because + // Stencil's mock-doc (used in spec tests) does not support :scope. + let hasContent = false; + let hasFooter = false; + for (const child of Array.from(el.children)) { + if (child.tagName === 'ION-CONTENT') hasContent = true; + if (child.tagName === 'ION-FOOTER') hasFooter = true; + for (const grandchild of Array.from(child.children)) { + if (grandchild.tagName === 'ION-CONTENT') hasContent = true; + if (grandchild.tagName === 'ION-FOOTER') hasFooter = true; + } + } + + // Only apply wrapper padding for standard Ionic layouts (has ion-content + // but no ion-footer). Custom modals with raw HTML are fully + // developer-controlled and should not be modified. + if (!hasContent || hasFooter) return; + + // Reduce wrapper height by safe-area and add equivalent padding so the + // total visual size stays the same but the flex content area shrinks. + // Using height + padding instead of box-sizing: border-box avoids + // breaking custom modals that set --border-width (border-box would + // include the border inside the height, changing the layout). + wrapperEl.style.setProperty('height', 'calc(var(--height) - var(--ion-safe-area-bottom, 0px))'); + wrapperEl.style.setProperty('padding-bottom', 'var(--ion-safe-area-bottom, 0px)'); + } + + /** + * Clears all safe-area overrides and padding from wrapper. + */ + private cleanupSafeAreaOverrides(): void { + clearSafeAreaOverrides(this.el); + + // Remove internal sheet offset property + this.el.style.removeProperty('--ion-modal-offset-top'); + + if (this.wrapperEl) { + this.wrapperEl.style.removeProperty('height'); + this.wrapperEl.style.removeProperty('padding-bottom'); + } + } + render() { const { handle, diff --git a/core/src/components/modal/safe-area-utils.ts b/core/src/components/modal/safe-area-utils.ts new file mode 100644 index 00000000000..a13bf1770a0 --- /dev/null +++ b/core/src/components/modal/safe-area-utils.ts @@ -0,0 +1,201 @@ +import { win } from '@utils/browser'; +import { raf } from '@utils/helpers'; + +type SafeAreaValue = '0px' | 'inherit'; + +/** + * Configuration for safe-area CSS custom properties. + * Each direction can inherit the root safe-area value or be zeroed out. + */ +export interface SafeAreaConfig { + top: SafeAreaValue; + bottom: SafeAreaValue; + left: SafeAreaValue; + right: SafeAreaValue; +} + +/** + * Context information about the modal used to determine safe-area behavior. + */ +export interface ModalSafeAreaContext { + isSheetModal: boolean; + isCardModal: boolean; + presentingElement?: HTMLElement; + breakpoints?: number[]; + currentBreakpoint?: number; +} + +/** + * These thresholds match the SCSS media query breakpoints in modal.vars.scss + * that trigger the centered dialog layout (non-fullscreen modal). + * + * SCSS defines two height breakpoints: $modal-inset-min-height-small (600px) + * and $modal-inset-min-height-large (768px). We use the smaller one because + * that's the threshold where the modal transitions from fullscreen to centered + * dialog β€” the larger breakpoint only increases the dialog's height. + */ +const MODAL_INSET_MIN_WIDTH = 768; +const MODAL_INSET_MIN_HEIGHT = 600; +const EDGE_THRESHOLD = 5; + +/** + * Cache for resolved root safe-area-top value, invalidated once per frame. + */ +let cachedRootSafeAreaTop: number | null = null; +let cacheInvalidationScheduled = false; + +/** + * Determines if the current viewport meets the CSS media query conditions + * that cause regular modals to render as centered dialogs instead of fullscreen. + * Matches: @media (min-width: 768px) and (min-height: 600px) + */ +const isCenteredDialogViewport = (): boolean => { + if (!win) return false; + return win.matchMedia(`(min-width: ${MODAL_INSET_MIN_WIDTH}px) and (min-height: ${MODAL_INSET_MIN_HEIGHT}px)`) + .matches; +}; + +/** + * Resolves the current root --ion-safe-area-top value to pixels. + * Uses a temporary element because getComputedStyle on :root returns + * the declared value of custom properties (e.g. "env(safe-area-inset-top)") + * rather than a resolved number. + * + * Results are cached for the current frame to avoid repeated reflows. + */ +export const getRootSafeAreaTop = (): number => { + if (cachedRootSafeAreaTop !== null) { + return cachedRootSafeAreaTop; + } + + const doc = win?.document; + if (!doc?.body) { + return 0; + } + + const el = doc.createElement('div'); + el.style.cssText = + 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;' + 'padding-top:var(--ion-safe-area-top,0px);'; + doc.body.appendChild(el); + const value = parseFloat(getComputedStyle(el).paddingTop) || 0; + el.remove(); + + cachedRootSafeAreaTop = value; + if (!cacheInvalidationScheduled) { + cacheInvalidationScheduled = true; + raf(() => { + cachedRootSafeAreaTop = null; + cacheInvalidationScheduled = false; + }); + } + + return value; +}; + +/** + * Returns the initial safe-area configuration based on modal type. + * This is called before animation starts and uses configuration-based prediction. + * + * @param context - Modal context information + * @returns SafeAreaConfig with initial safe-area values + */ +export const getInitialSafeAreaConfig = (context: ModalSafeAreaContext): SafeAreaConfig => { + const { isSheetModal, isCardModal } = context; + + // Sheet modals always zero top safe-area. The sheet height offset from the + // top edge is handled by --ion-modal-offset-top (set in modal.tsx) using + // the resolved root value, so --ion-safe-area-top is never needed for + // height calculation. Keeping it at 0px prevents header content from + // getting double-offset padding. + if (isSheetModal) { + return { + top: '0px', + bottom: 'inherit', + left: '0px', + right: '0px', + }; + } + + // Card modals need safe-area for height calculation. + // Note: isCardModal is already gated on mode === 'ios' by the caller. + if (isCardModal) { + return { + top: 'inherit', + bottom: 'inherit', + left: '0px', + right: '0px', + }; + } + + // On viewports that meet the centered dialog media query breakpoints, + // regular modals render as centered dialogs (not fullscreen), so they + // don't touch any screen edges and don't need safe-area insets. + if (isCenteredDialogViewport()) { + return { + top: '0px', + bottom: '0px', + left: '0px', + right: '0px', + }; + } + + // Fullscreen modals on phone - inherit all safe areas + return { + top: 'inherit', + bottom: 'inherit', + left: 'inherit', + right: 'inherit', + }; +}; + +/** + * Returns safe-area configuration based on actual modal position. + * Detects which edges the modal overlaps with and only applies safe-area to those edges. + * + * Note: On Android edge-to-edge (API 36+), getBoundingClientRect() may report + * inconsistent values. Sheet and card modals avoid this by using configuration-based + * prediction instead. Regular modals use coordinate detection which works reliably + * on web and iOS; Android edge-to-edge may need a configuration-based fallback + * once a reliable detection mechanism is available. + * + * @param wrapperEl - The modal wrapper element to measure + * @returns SafeAreaConfig based on position + */ +export const getPositionBasedSafeAreaConfig = (wrapperEl: HTMLElement): SafeAreaConfig => { + const rect = wrapperEl.getBoundingClientRect(); + const vh = win?.innerHeight ?? 0; + const vw = win?.innerWidth ?? 0; + + // Only apply safe-area to sides where modal overlaps with screen edge + return { + top: rect.top <= EDGE_THRESHOLD ? 'inherit' : '0px', + bottom: rect.bottom >= vh - EDGE_THRESHOLD ? 'inherit' : '0px', + left: rect.left <= EDGE_THRESHOLD ? 'inherit' : '0px', + right: rect.right >= vw - EDGE_THRESHOLD ? 'inherit' : '0px', + }; +}; + +/** + * Applies safe-area CSS custom property overrides to the modal host element. + * + * @param hostEl - The modal host element (ion-modal) + * @param config - Safe-area configuration to apply + */ +export const applySafeAreaOverrides = (hostEl: HTMLElement, config: SafeAreaConfig): void => { + hostEl.style.setProperty('--ion-safe-area-top', config.top); + hostEl.style.setProperty('--ion-safe-area-bottom', config.bottom); + hostEl.style.setProperty('--ion-safe-area-left', config.left); + hostEl.style.setProperty('--ion-safe-area-right', config.right); +}; + +/** + * Clears safe-area CSS custom property overrides from the modal host element. + * + * @param hostEl - The modal host element (ion-modal) + */ +export const clearSafeAreaOverrides = (hostEl: HTMLElement): void => { + hostEl.style.removeProperty('--ion-safe-area-top'); + hostEl.style.removeProperty('--ion-safe-area-bottom'); + hostEl.style.removeProperty('--ion-safe-area-left'); + hostEl.style.removeProperty('--ion-safe-area-right'); +}; diff --git a/core/src/components/modal/test/safe-area/index.html b/core/src/components/modal/test/safe-area/index.html new file mode 100644 index 00000000000..14681f3820f --- /dev/null +++ b/core/src/components/modal/test/safe-area/index.html @@ -0,0 +1,262 @@ + + + + + Modal - Safe Area + + + + + + + + + + + +
+
+ + +
+ + + Modal - Safe Area + + + + +

Fullscreen Modals

+ + + +

Sheet Modals

+ + +

Card Modals (iOS)

+ + +

Centered Dialog (Tablet)

+ + +

Diagnostic Info

+
+

Window Width:

+

Window Height:

+

Is Tablet:

+
+
+
+
+ + + + diff --git a/core/src/components/modal/test/safe-area/modal.e2e.ts b/core/src/components/modal/test/safe-area/modal.e2e.ts new file mode 100644 index 00000000000..af2a58c7699 --- /dev/null +++ b/core/src/components/modal/test/safe-area/modal.e2e.ts @@ -0,0 +1,370 @@ +import { expect } from '@playwright/test'; +import { configs, test, Viewports } from '@utils/test/playwright'; + +/** + * These tests verify that safe-area CSS custom properties are correctly + * applied to modals based on their type and position. + * + * Safe-area handling is position-based and not affected by text direction. + * Testing only LTR to avoid redundant test runs. + */ + +/** + * The test page (index.html) sets these root safe-area values. + * Keep in sync with the :root block in test/safe-area/index.html. + */ +const TEST_SAFE_AREA_TOP = '47px'; +configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('modal: safe-area handling'), () => { + test.beforeEach(async ({ page }) => { + await page.goto('/src/components/modal/test/safe-area', config); + }); + + test('fullscreen modal should inherit all safe-area values on phone', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#fullscreen-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // On phone viewport, fullscreen modal should inherit safe-area values + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); + }); + + expect(safeAreaTop).toBe('inherit'); + expect(safeAreaBottom).toBe('inherit'); + }); + + test('regular modal should have safe-area zeroed on tablet (centered dialog)', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + await page.setViewportSize(Viewports.tablet.portrait); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#fullscreen-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // On tablet viewport, the CSS media query renders regular modals as + // centered dialogs (600x500). Since they don't touch screen edges, + // safe-area values should be zeroed out. + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); + }); + + expect(safeAreaTop).toBe('0px'); + expect(safeAreaBottom).toBe('0px'); + }); + + test('sheet modal should only use bottom safe-area', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#sheet-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // Sheet modals should have top safe-area zeroed (doesn't touch top edge) + // but bottom safe-area inherited (touches bottom edge) + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); + }); + + expect(safeAreaTop).toBe('0px'); + expect(safeAreaBottom).toBe('inherit'); + }); + + test('fullscreen modal without footer should have wrapper padding-bottom', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#fullscreen-modal-no-footer'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // When no footer is present, the wrapper should have reduced height + // and padding-bottom to prevent content from overlapping the system + // navigation bar, without changing box-sizing (which would break + // custom modals with --border-width). + const wrapper = modal.locator('.modal-wrapper'); + const paddingBottom = await wrapper.evaluate((el: HTMLElement) => { + return el.style.getPropertyValue('padding-bottom'); + }); + const height = await wrapper.evaluate((el: HTMLElement) => { + return el.style.getPropertyValue('height'); + }); + + expect(paddingBottom).toBe('var(--ion-safe-area-bottom, 0px)'); + expect(height).toBe('calc(var(--height) - var(--ion-safe-area-bottom, 0px))'); + }); + + test('sheet modal at breakpoint 1 should keep top safe-area zeroed', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#sheet-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // Initially at breakpoint 0.5 β€” top safe-area should be zeroed + let safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + expect(safeAreaTop).toBe('0px'); + + // Move to breakpoint 1 (fully expanded) via the public method + const ionBreakpointDidChange = await page.spyOnEvent('ionBreakpointDidChange'); + await modal.evaluate((el: HTMLIonModalElement) => { + el.setCurrentBreakpoint(1); + }); + await ionBreakpointDidChange.next(); + + // At breakpoint 1, top safe-area should still be 0px because the + // sheet height is frozen with the resolved root value. This prevents + // header content from getting double-offset padding. + safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + expect(safeAreaTop).toBe('0px'); + }); + + test('sheet modal should have --ion-modal-offset-top set with resolved safe-area value', async ({ + page, + }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#sheet-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // The internal --ion-modal-offset-top property should be set to the + // resolved root --ion-safe-area-top value. The SCSS --height formula + // uses this instead of --ion-safe-area-top directly. + const offsetTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-modal-offset-top'); + }); + expect(offsetTop).toBe(TEST_SAFE_AREA_TOP); + }); + + test('fullscreen modal safe-area should update on resize from phone to tablet', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#fullscreen-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // On phone viewport, modal should inherit safe-area + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + expect(safeAreaTop).toBe('inherit'); + + // Resize to tablet viewport (centered dialog breakpoint) + await page.setViewportSize(Viewports.tablet.portrait); + + // Poll until the debounced resize handler updates safe-area overrides + await expect + .poll(async () => { + return modal.evaluate((el: HTMLIonModalElement) => el.style.getPropertyValue('--ion-safe-area-top')); + }) + .toBe('0px'); + + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); + }); + + expect(safeAreaBottom).toBe('0px'); + }); + + test('centered dialog should have all safe-area values zeroed on tablet', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + await page.setViewportSize(Viewports.tablet.portrait); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#centered-dialog'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // Centered dialogs don't touch any edge, so all safe-areas should be zeroed + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); + }); + + expect(safeAreaTop).toBe('0px'); + expect(safeAreaBottom).toBe('0px'); + }); + + test('safe-area overrides should be cleared on dismiss', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + // Present modal programmatically so we control the lifecycle + // (the HTML page's presenters call modal.remove() after dismiss, + // which races with our post-dismiss evaluation) + await page.evaluate(async () => { + const modal = document.createElement('ion-modal'); + modal.component = document.createElement('div'); + document.body.appendChild(modal); + await modal.present(); + }); + + const modal = page.locator('ion-modal'); + + // Verify overrides are set + let safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + expect(safeAreaTop).not.toBe(''); + + // Dismiss the modal but don't remove the element + await modal.evaluate(async (el: HTMLIonModalElement) => { + await el.dismiss(); + }); + + // Verify overrides are cleared after dismiss + safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + expect(safeAreaTop).toBe(''); + + // Clean up + await modal.evaluate((el: HTMLIonModalElement) => el.remove()); + }); + }); +}); + +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('modal: card modal safe-area (iOS only)'), () => { + test.beforeEach(async ({ page }) => { + await page.goto('/src/components/modal/test/safe-area', config); + }); + + test('card modal should inherit top and bottom safe-area', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#card-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // Card modals need top safe-area for height calculation + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); + }); + const safeAreaLeft = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-left'); + }); + const safeAreaRight = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-right'); + }); + + expect(safeAreaTop).toBe('inherit'); + expect(safeAreaBottom).toBe('inherit'); + expect(safeAreaLeft).toBe('0px'); + expect(safeAreaRight).toBe('0px'); + }); + + test('card modal on tablet should still inherit safe-area values', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + await page.setViewportSize(Viewports.tablet.portrait); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#card-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // Card modals use safe-area values in CSS calculations regardless of viewport, + // so they should inherit even on tablet where regular modals become centered dialogs. + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); + }); + const safeAreaLeft = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-left'); + }); + const safeAreaRight = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-right'); + }); + + expect(safeAreaTop).toBe('inherit'); + expect(safeAreaBottom).toBe('inherit'); + expect(safeAreaLeft).toBe('0px'); + expect(safeAreaRight).toBe('0px'); + }); + }); +}); diff --git a/core/src/components/popover/animations/ios.enter.ts b/core/src/components/popover/animations/ios.enter.ts index aa4e0568143..02a078a2f71 100644 --- a/core/src/components/popover/animations/ios.enter.ts +++ b/core/src/components/popover/animations/ios.enter.ts @@ -7,11 +7,22 @@ import { getArrowDimensions, getPopoverDimensions, getPopoverPosition, + getSafeAreaInsets, shouldShowArrow, } from '../utils'; const POPOVER_IOS_BODY_PADDING = 5; +/** + * Minimum edge margin for iOS popovers ensures visual spacing from screen + * edges on devices without safe areas (e.g., older iPhones without notches). + * Previously this was a hardcoded `safeAreaMargin = 25` that served dual + * purpose: safe-area avoidance AND visual spacing. Now that actual safe-area + * insets are read dynamically, this floor preserves the visual spacing when + * safe-area values are 0. + */ +const POPOVER_IOS_MIN_EDGE_MARGIN = 25; + /** * iOS Popover Enter Animation */ @@ -53,7 +64,16 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => ); const padding = size === 'cover' ? 0 : POPOVER_IOS_BODY_PADDING; - const margin = size === 'cover' ? 0 : 25; + const rawSafeArea = getSafeAreaInsets(doc as Document); + const safeArea = + size === 'cover' + ? { top: 0, bottom: 0, left: 0, right: 0 } + : { + top: Math.max(rawSafeArea.top, POPOVER_IOS_MIN_EDGE_MARGIN), + bottom: Math.max(rawSafeArea.bottom, POPOVER_IOS_MIN_EDGE_MARGIN), + left: Math.max(rawSafeArea.left, POPOVER_IOS_MIN_EDGE_MARGIN), + right: Math.max(rawSafeArea.right, POPOVER_IOS_MIN_EDGE_MARGIN), + }; const { originX, @@ -63,9 +83,12 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => bottom, checkSafeAreaLeft, checkSafeAreaRight, + checkSafeAreaTop, + checkSafeAreaBottom, arrowTop, arrowLeft, addPopoverBottomClass, + hideArrow, } = calculateWindowAdjustment( side, results.top, @@ -75,7 +98,7 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => bodyHeight, contentWidth, contentHeight, - margin, + safeArea, results.originX, results.originY, results.referenceCoordinates, @@ -119,11 +142,15 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => } if (bottom !== undefined) { - contentEl.style.setProperty('bottom', `${bottom}px`); + let bottomValue = `${bottom}px`; + if (checkSafeAreaBottom) { + bottomValue = `${bottom}px + var(--ion-safe-area-bottom, 0px)`; + } + contentEl.style.setProperty('bottom', `calc(${bottomValue})`); } - const safeAreaLeft = ' + var(--ion-safe-area-left, 0)'; - const safeAreaRight = ' - var(--ion-safe-area-right, 0)'; + const safeAreaLeft = ' + var(--ion-safe-area-left, 0px)'; + const safeAreaRight = ' - var(--ion-safe-area-right, 0px)'; let leftValue = `${left}px`; @@ -134,13 +161,18 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => leftValue = `${left}px${safeAreaRight}`; } - contentEl.style.setProperty('top', `calc(${top}px + var(--offset-y, 0))`); + let topValue = `${top}px`; + if (checkSafeAreaTop) { + topValue = `${top}px + var(--ion-safe-area-top, 0px)`; + } + + contentEl.style.setProperty('top', `calc(${topValue} + var(--offset-y, 0))`); contentEl.style.setProperty('left', `calc(${leftValue} + var(--offset-x, 0))`); contentEl.style.setProperty('transform-origin', `${originY} ${originX}`); if (arrowEl !== null) { const didAdjustBounds = results.top !== top || results.left !== left; - const showArrow = shouldShowArrow(side, didAdjustBounds, ev, trigger); + const showArrow = !hideArrow && shouldShowArrow(side, didAdjustBounds, ev, trigger); if (showArrow) { arrowEl.style.setProperty('top', `calc(${arrowTop}px + var(--offset-y, 0))`); diff --git a/core/src/components/popover/animations/md.enter.ts b/core/src/components/popover/animations/md.enter.ts index e25f745cec4..8de9976e86c 100644 --- a/core/src/components/popover/animations/md.enter.ts +++ b/core/src/components/popover/animations/md.enter.ts @@ -2,7 +2,7 @@ import { createAnimation } from '@utils/animation/animation'; import { getElementRoot } from '@utils/helpers'; import type { Animation } from '../../../interface'; -import { calculateWindowAdjustment, getPopoverDimensions, getPopoverPosition } from '../utils'; +import { calculateWindowAdjustment, getPopoverDimensions, getPopoverPosition, getSafeAreaInsets } from '../utils'; const POPOVER_MD_BODY_PADDING = 12; @@ -46,8 +46,22 @@ export const mdEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => ); const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING; - - const { originX, originY, top, left, bottom } = calculateWindowAdjustment( + // MD mode now applies safe-area insets (previously passed 0, ignoring all safe areas). + // This is needed for Android edge-to-edge (API 36+) where system bars overlap content. + const safeArea = size === 'cover' ? { top: 0, bottom: 0, left: 0, right: 0 } : getSafeAreaInsets(doc as Document); + + const { + originX, + originY, + top, + left, + bottom, + checkSafeAreaLeft, + checkSafeAreaRight, + checkSafeAreaTop, + checkSafeAreaBottom, + addPopoverBottomClass, + } = calculateWindowAdjustment( side, results.top, results.left, @@ -56,12 +70,28 @@ export const mdEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => bodyHeight, contentWidth, contentHeight, - 0, + safeArea, results.originX, results.originY, results.referenceCoordinates ); + const safeAreaLeftCalc = ' + var(--ion-safe-area-left, 0px)'; + const safeAreaRightCalc = ' - var(--ion-safe-area-right, 0px)'; + + let leftValue = `${left}px`; + if (checkSafeAreaLeft) { + leftValue = `${left}px${safeAreaLeftCalc}`; + } + if (checkSafeAreaRight) { + leftValue = `${left}px${safeAreaRightCalc}`; + } + + let topValue = `${top}px`; + if (checkSafeAreaTop) { + topValue = `${top}px + var(--ion-safe-area-top, 0px)`; + } + const baseAnimation = createAnimation(); const backdropAnimation = createAnimation(); const wrapperAnimation = createAnimation(); @@ -81,13 +111,17 @@ export const mdEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => contentAnimation .addElement(contentEl) .beforeStyles({ - top: `calc(${top}px + var(--offset-y, 0px))`, - left: `calc(${left}px + var(--offset-x, 0px))`, + top: `calc(${topValue} + var(--offset-y, 0px))`, + left: `calc(${leftValue} + var(--offset-x, 0px))`, 'transform-origin': `${originY} ${originX}`, }) .beforeAddWrite(() => { if (bottom !== undefined) { - contentEl.style.setProperty('bottom', `${bottom}px`); + let bottomValue = `${bottom}px`; + if (checkSafeAreaBottom) { + bottomValue = `${bottom}px + var(--ion-safe-area-bottom, 0px)`; + } + contentEl.style.setProperty('bottom', `calc(${bottomValue})`); } }) .fromTo('transform', 'scale(0.8)', 'scale(1)'); @@ -101,7 +135,7 @@ export const mdEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => if (size === 'cover') { baseEl.style.setProperty('--width', `${contentWidth}px`); } - if (originY === 'bottom') { + if (addPopoverBottomClass) { baseEl.classList.add('popover-bottom'); } }) diff --git a/core/src/components/popover/test/safe-area/index.html b/core/src/components/popover/test/safe-area/index.html new file mode 100644 index 00000000000..c9ee522b986 --- /dev/null +++ b/core/src/components/popover/test/safe-area/index.html @@ -0,0 +1,154 @@ + + + + + Popover - Safe Area + + + + + + + + + + + +
+
+
+
+ + + +

Popover safe area test. Triggers are positioned near screen edges.

+
+
+ + + + + + + + + diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts b/core/src/components/popover/test/safe-area/popover.e2e.ts new file mode 100644 index 00000000000..58cca8baa7c --- /dev/null +++ b/core/src/components/popover/test/safe-area/popover.e2e.ts @@ -0,0 +1,81 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +/** + * Safe-area behavior applies to both iOS and MD modes. + * Left/right safe areas are tested in landscape viewport. + */ +configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('popover: safe-area'), () => { + test.beforeEach(async ({ page }) => { + await page.goto('/src/components/popover/test/safe-area', config); + }); + + test('should not overlap the bottom safe area when trigger is near the bottom edge', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/28411', + }); + + /** + * Use a landscape-style viewport with bottom safe area. + * The bottom trigger is positioned at the very bottom of the screen. + */ + await page.setViewportSize({ + width: 414, + height: 400, + }); + + const ionPopoverDidPresent = await page.spyOnEvent('ionPopoverDidPresent'); + + await page.locator('#bottom-trigger').click(); + await ionPopoverDidPresent.next(); + + await expect(page).toHaveScreenshot(screenshot('popover-safe-area-bottom')); + }); + + test('should not overlap the right safe area when trigger is near the right edge', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/28411', + }); + + /** + * Use a landscape viewport with left/right safe areas + * to simulate a device rotated to landscape with notch on left. + */ + await page.setViewportSize({ + width: 600, + height: 400, + }); + + const ionPopoverDidPresent = await page.spyOnEvent('ionPopoverDidPresent'); + + await page.locator('#right-trigger').click(); + await ionPopoverDidPresent.next(); + + await expect(page).toHaveScreenshot(screenshot('popover-safe-area-right')); + }); + + test('should handle a large popover near the bottom-right corner without overlapping safe areas', async ({ + page, + }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/28411', + }); + + await page.setViewportSize({ + width: 600, + height: 400, + }); + + const ionPopoverDidPresent = await page.spyOnEvent('ionPopoverDidPresent'); + + await page.locator('#large-popover-trigger').click(); + await ionPopoverDidPresent.next(); + + await expect(page).toHaveScreenshot(screenshot('popover-safe-area-large')); + }); + }); +}); diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..7380d98ef50fe490662070bfd6d29895210fe02b GIT binary patch literal 14448 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 bfhTBiJ!;K?3*pK~3z~wAs&u*Jmv8?GW=Jq& literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..fa56c8b3d614a6c6feb7d0912ba24766aec95273 GIT binary patch literal 23407 zcmeFZbySsK*EULbcXx^+B9fbK6p#>9kPxInO4xMEra`(kNP_`LH*8S4Q9^3dlADl@ zv-myF`;GVe&Nt2(XPooT8RPjwhv0p$`@ZK|YhH6+^O`H-sg^1+0RsUV8XB>>nvyOW z8af>OiO0hMzkz$;1fZd@p{Xm$>qAX;vhk-3^iF;l9+r&da_A`OTf%q<0v5uB{i)as zLgTG0!lK#pKIBF7t4Ab7n^F{h;Nc+7SdUOzZQGlxV_o<2et$@``h=3+bX?O{(sz~jKa`Lbu2`bGxHSZaY-NBAqIt;RPTw#^DM1lkO?V^sL@ zX!w?aXkn`KlAJ7W+C{W6xX8pYs94^l>Ohmw$07Lfa*KFRp-Hb)kUBU|4!Ptof;i=n zIv(`k4xzzBG<>XBaP#yVaL0dc{{OqdnBoyt-aqe5SGZX8yf`~tPt~9n&}cYV9p7!o zl!snl9%_5-f2V!3HjwVRSz4?SPQpAklz`(#G1d6))7_WVd^{^KlQx5>10SuibBCaXvZRU{v$p zUq%O)hr^G5*E+6Nk833^$H~e(qkZ%9tjcQe!~M3)vDz5-)W2Jk{r&gb?mEs?ClFBI zITe+)_z_+I_s@Jwld<=oLUKohH55n4j8C@!wzqZAKFcd)J;d~9yf_YWiRyG6c+fpX z5X~(0>)NlEJ2mu9(ifSQrAUE-7gbiSSAQqYo+Inv1 zwHzZ>0IpO2-E9N?yZKWXidrmiM0G8a)vv>S9Nw^ctt5Od7YSPr5LD<|re;}hpdT;p zPt=y?zPdO`jpX_J{+rKq7`PM7?ZqEoAaPMUIu|aBfk)mA?^w(?>Pk>etlH16Q0R8R_=D z-0yb1K3jiW`TD!%K-vQdxP+4YhAPJy)gKH6Y!@jgykCKeID)OnaE*I8#fPoeezz@ntuz0bEYH~yiK4ylguUUg%PY^j}gOpf_UM}&p3hWEirZ!O8GY`p?s znZXx^i~!7KMyGmtGB3k2{a%@yd213(c?c;|CT4Pdah@sFzPv^B2!gaG8=f=`c-5D3 z&z}6$3qEQ!@*b77OmF(;Tmuqib4bT0{F8=zNxlnRM`4~Z`%*5^`@$Tl;MKEYIEVLU zr6-}bYU5_RO7~avd^T#4y=5}AO?gl;mT!rlQsQIPrgaxy3>jj7BR_6NA1^Ct>EMWr z#y!4Xkb#{cO`vC-mhWjhoUlo)zr7T%W>kF9QbZ%VdSo{iB-_ucT!U znN(nq+H2LY=a7`f}ByI(gS*Wm0?1<0^z&(94R5Us_i}gtVBl{xQFtPy?N^ zHYb8V@#R@WY~mehM`^4B1tj$$sWwJmDZAZ5L}9Ts!&}b`U%lZ}7#IztrCUm$ueMF} zBNmMfaO5RzeQg@L zmft^wSdc~5z84K0z?mUCmnTv{;CkY&l!>~_jB65X(mb3|?STEUe%SqR9;T>Axm5dz z1Xm;)V`P-m+ZnsN_F?vmPX=FB7S^+ADd0X&c%gaf`Sro%GE82>HzodQ}i{BW{;Z%BNZNXkxGHL{0*lhx2!HqF7EGM0?Rn3QwtIrb>+ zCTx_Mg-Z5QCYawI`HJhSy#S*_Bq{oodem3=F;M_!LujH{JM6pPsp$LPT)lOHt@q`?6$%&{Z zxY2l+wvX`i>T}U-499gQALPqK;}~~^kbfY2>_Wt_@MzMQb26QTVF{gFPJdZ5A1NM< zx9BUPMJ0}BOCL=ZZ{_n#$pBU{BD5bMqBZakN-MjFF2@@rf*0F~852u08S`wUl=BPv zh1wq5TnH`+GdErC-RBi@WUJ;P(G#2u6kW84bsqFv&&A$au*thuDBN`>HdTU5{0s#&M9fW=Jn8s3_OgewCew`W%Il51TP?B^FxP{3J?58zQq=7(626Kk_M+kEl$@QaIgD1R%S0muAyblN2k&7+! zz646Em3w_Ep|S#{8Ic)bXAfI`#dQE8=a~g5BgsVjg$y-iv zWr#QlCzJc@dR#-cwY0#lKDe5#G|aL2*0`t&4)0Ez=_UqT$}AX$OPrd(Yxgb9I5z2s z1nXuPE+%Gl*&HN3XX~RPuEpuX+3Zi&5Zr-eab$<#^U| zlP-;y5Z4>%TP)1`Z&hP-1bx>-yGgHca4r`{`ZiR~uar`$(lN*T*rR>hP%jlw0(7S>hq z8^p|5D9F!3~TK zdZFuS{V1A(5weVBIJJl4-Fvut|&5+uBb$=++ny&{T^kn07Y$cMg^^7V)73-niuAIYT;sp^5HDO zHn4{UanxW0Bk~rD;nsw1jW(ua9H$rwA&=EnDOjrQ3sOc?Tm-R%jiHxE68>S`!-vu9 z3_46xixM5Vq<&~{KOqwLt}2(A>LgD=G@>W4CG^N=WHPTONcZKrf=2~i7j2XTHJoER zVRZSV&9KPj_((zrnhAxzwl=xjf7 zDu$?rN4?)vc|wO&U~8uQp0G=a5s8aQO5pHuF{s_I9+%{uTzIg>{=->b2C}Z9>9+j< za(0!SuYt@%A@>Rnp2j0EFVrYYcAKG-iju^ncj|o>JP~KlN#a(s#BnB7%dq~)q!x#h zR_fv@1P9yDT+2<+_rgC>N^;`i85FQ<1O;3glXmAmL=zx-`E*2`t*qTRPC(5*SU}Rj zokmUZwE}Clq~wj7?N8@`*SfSAi}R(fZQ*fjR*Sp$$V7+)ofp2EkzuhaxTC(3&qzF1 zgc>)}b}xAaLh}aAbTE|g?z%XNsZtHoR#1M)J~v-$p#_1`Pp3u0y99DG)YzDkN?aR| z+Yp%GVTH1F)S1E&J{k4iYc5DR-RWXBcQvOa37a!?H_J33SXt`b=efN=`QdZririb|z^az$G-jq;E zn!9H?RTF$I$*&tU*TS@Y)@-=?swK?3%YyRDSO2uIoXpRr*~|szI+x8W+tlt8)O(@d zy=4|3SEJv39a-zZYWt!ZooU%~or;Onv`b2c8N`fKdtN_Ug5OjZZd52D)z|p{W>MbL ze;2Mq0jIj(JFd>QgGF}6o*gWq_PMNUgUQWQ4cB5~TV+Nq^EFzK4UMeZeK?1P0u8$f zZrX9Ab&pxKny}(e{Mk4B5dKCY3EKkQiVwVFHYtci4l_7h04x5hf)mT*q6fvH8ziOA z3bdO04-!Ze>~If#VV9^Gv@r*pn|WG&x56>{X1p~)^7O^GDP8zap%m6BBlJ}8Q0M(c zB1*YPEFGe;__R(~%4X*SahgMsO5Hp3t;{AekHMu$%!>c-2u^ioq4~uhDq+v1dlUeN z>U+zfvg$&0aihiH`vx-e*H-N46nHY|1aaR;`5~p4MW}+Icp5dfOgzB4Ew`q|(ymm{ z($vB`Sd5Vi34!@beo@l%b@SF4w1*YARL62|3qc*NPe%z_eL|Kiu5erRBc)>zVi8K& z`+s$*CZ;clseL~S%>1o*MB=cVDOT_4V94@^naJTQ{>4-)tIv>^r{<4Z)~RAb#^NQ- zciVqMJ!MdX#Ii;)UEg9ZI*vJ~R9G_kUtdr=d=K{fg5YFf3fH8lOyD_g?p#Z$zwaPL zagA(+o@|GEiAq<0Cd9|eZb#>b>>4p_IHQgq%+LJDoSNFE$b6V*mQw~@cztsC<%D-o zuQXs#o@n0q#TKp1czkD=)85H zfeqs8RM1-%Y?;SmWlAWBSB#6wj0S2k7!@oIx_J)Q%Ynn9OMtr6ULs&1@cH0aKn~(D6}RLsk?ZkNnqpU;gu6 ztj>y-femzf9>;2q>~rs984@tIIi;zu&oCU$VmHtiQco_fVo~R3l`(v{7&QI?YFp+4 z9=s4W;@4XIm*PrBQ{433XD#c{f#tL4HePfJwJbD1pbj7a8rMx-`EE&*BVBeoPc%`E zlmpoEq4Bz9dd0EXHrHOZq6s$KF2qD-SfP=7LK~d%Cvq0Uw)u{nXp6;Dk%G)ppu6d zm-Dvr;_O$GDN_C@DA{OZHUURTo|k~VU2T3a$Bdiapr+wf$bO8slEm|?_saMQ94u3a zJu=P3$6;R=XIJ}E9|LaKkt;NeFs%-ehyJ!h0n2xVfL!kzV!2ziwKlS$j$f}Rv~??3 zk^_N`%L{=u3mJxe$KLIHlV+{Zg=Oy1{k;j$)v#{JJZ9GdDCBTy1tKVwp_jf zl;kW*k4{5iIBs+>cN7UB&sqXOr!ff)nVcNT&AqP#bIk8Kdbs0uKK`&kdGl*Mz0-PH z4jc#jIDBv47u4$tJ#0d1d*+oGN@xf%z;!eo5R=obIp3zbwR5R=_orVKFjaaJkCMvN zhEL>EQWea#WB!%DLt$#J#LUjMxE34bIh=+Y+0BF*{8+G|%b$t(6VnS&z|!TFLq>2w zP9I3Vc+!)fuh@a*n=1H9LEvje=n3H9tM;mL&Au^bi{??D@H>D|^l;hFhq?Pnrs&`= z^aW#8c>>~hT?f`lHXt|3{39+qf3p7X*&9oRak0Z-6+&$x0T$Esp6eJyM9vF@w1U-- zhZ0zP0VnU;ytlj#X0cn>@w0CTN-p$Y@8c{-pq)2`Y9%6&M5tjO;%}?~aeO8GoVxC_m+wW~R)&MZP~EGYqt zV_v%Zb!@WVs0=J+qva4v!G=yw5a%kOrUFg+L?Lb8SHYY)xuvrG!9e7N)FxAfo=?k=lW2vz@V}XAP=A-y9i@d;d z+R4E{P0@&aqO>*jKr9T^+na^|bMt=;_Mb)a|72s3;2;bBOAGLy9rhou@*hw7|0(nw zpap@tbv*7a;^rRJ^UJE65I1Cx@7eK>W{uXE@uI72!oO<2x%nWrit377@zx*-6yADC zplx+_xCtPUo=pzfi{?Je%@0Xm9sUFYq+6K`FXjmNIc(^kpHslkRhRVpmMOC3S{PjM z=onORB01}>#1|XQk^pe6Zinp8A^%^7RQbOc;3eYl>cp);Eg{bp$Q;faKY`MA??S-M z&IQy|g_DWu8iW6+)TF49#AhDh|EG`^-~W2-ai`zMhIKd#5DKt(Ek*F=vw&Lrc(l;Zq!3aW z@udg1!U?0dj%^EjBvPLvn-7PYj@OZhD(hhriREaVgYzxUTY*CBX2wtmALLJgy3wsH zh%G)EW$ZEiUH8k&cec|98jOWPqEQ0^PT zZ7p4MWk^aY9Pi_JINR0bAqD@71Gcl{-}Jim&gPsdyfYTp=UeyBRuX%^dH=O5HEsK- zU#73#dg&Tz3`Hs*pJ+iF-T&Ol3Ak>E@b~CHTQ@b!FOt1JRg^h3Yo2{)=-F_6F6z1z z@vhM8knrS?WYhUOb!u;4vVFcc3Hk7B!$Lo)?4=ne)0E`lfQkeMi?Pp4b?G;!Iqy=V z6E1$!*5HAxvoBeG$J6XhTa)Ff^bdN&P*;@GTJ_66B6Qj0htH z3Wy&?dZujQOu9Of9?gR=6^TDTx6r3+>{F==-);R;&sT}DoNxB3tzwb&&jKYFJ}w9- zMW=u@F-L$1xVZ@1o@+8}J$+q9#rIThw`tFbUd-upmcO@Osm?OppYipCg3$HvU$Zr5 zb{uVIPoGSGdsC(V`FZcJ&cc~nK~JJ^^D|MWS)2R@CL%;_gwF zqllO#l}w=Kff1HPQ#LlkaB0_{&+bK|4GywHSp7tL35eGs*wAY1m<51XCI!@!hh~lv z?LyjXY~3tK+OoXuq&a<432B6??Z?z`Nd0@KWae2OTK1S_^0*@okALS|cEQ93ZWfZ3 zzCTWD+)WliN8=6(P;mir{^#` zM9O13{`v|xG`8V*=2M}^&dgYT_Z&WcoESEYQX8_blvr!eQ{HkM=_`7Q?X{XbsW2(m zx4jgV86LV0vXV-j5ui#Tmt0HKmPsjwZ`y~ggVK2oBE*OPRb#a@PHB77-Yz?s=#)Fp zNVH2{0pberJp@G72N*%%v)oug(Y7w{Fz3ejHP7Gjc(B+)b z@w>w;Ih&;jMHtr1`MOC-9Q4>(IjyrSASmr)*VC=fd&lB<`rL-EIGxgb?8XXQ)S!~@ zHf=aQQMxK=F8ChSKu~h`1t74onYy>u<925UtNo)`Gqo+fcNt|exIzW?n4=RI z0rwLl2VGCKxdNHf-coR-#X_=H_HKN6YldL5fZ_c8rG}IFCQGo+YTY~w-!61(Ms5{` zhOM8i@H*%%R(z*i zMz*d16?L4kq!G=!Z_ynq=Jq0-E7GTJ8E}N016r6=N!v$+_Q_3HdHDL0p}50SUhCNc zkL-UX0bBUXB0Da7URY<_8g^V=EUfotNi3vGU^-^TBMe&#_DNLQ!`b@qJD5F;|F%If!8@7X-ysNzy($u&Q}sQTftp_!5O zCQe-mYU1@K?FF}ITeea9L+fk*r|b}@%cJJS?ELaJxOu?kTuI%^$8eVTTYZ;2ZnAKH z{a)h5UfbkdVJQC*#vjiGKij~uXl_*u1*$U zwcDO$d?^Ws)$v0jM*8wB_(fl=5E*a>ViA;0(q~^5X)>;sH#cvtd$aH8^%*)xnMa;DI=;T&sShZ}1>M`A|NZ}*)^SRg$G)nAAA zDeRo&h!%u-FEgNT*MBgU*OiJkcOQakWuMX87F&+e{_WwhR{)84$}Ho8^RZH_NS|Vy zBQPt}LXg?%fGWw%M(gWWrhWB#e%1C(s^z*>1TUnde|x%WU~Hq#@@Lsk(F}=;?VBno z?s{zeKcDZ1@n(xqJJ=G&*7{*{iKt^--20=+q`r%%z4UiXqB9P)VJz|O8G*Lbm=@~g zAF43-84Z*uR2+YW0sW@`Ge4wZEeVe{4`unmKiau5aj^*t-0HG94U+B}(L;KHL$a1EN0ByUEx<+e3Bi$NIHhe&S@{AaDc z5iPc??nlPPx!WCV0eFJs<|qMiD)v_o6$r+0^ z2`2BUh~%`*tncbz4|J~u>mTSq zUAtfThw-NLa2-g^CNJ2pk)WG|VNr0BX+vM*Kl!!I!q2J@C3K}W2relCS znH{52@?5ElXRNYUNrsB$>PIh3HN7%rL%eBfkcPAmNK1DNDX)yR&r$$&F{Xv)*en-> z@lkrDBIKJ`q|0lU+(=SRc(qtV7ETDw{wXS&YUBdK-=k>j0$hFc6yAsd z<+Bo3Ao{PjZC5;GEY)5P3#@{2`(54IO3UkM4zA=t^UUa_3H?Bx{rY?4^r&gN@S7xC zaFgYIbYCAF1uFh?^=H0(kVb#&GR=gy%{ILA#>D=6G495pA;TlU&udh!iD+VUumx(1 zaej~H!+VX?Z1}Fx=9OPyw&)kEbDj9tyD;=X^kv0@w8ns|_%ab*Tyl3o-3RtOPm!uXj(Et2EGf_?m z|FcoukiX=NvM>^ZN``c0cWf`R(V-XtQ=L}y;s#M51ZgWeuvH(1)dvHn!%#<p!nr zG}Yfz@?7X2Q5A^yU?6!Mi;*e0_NiTs+M%SAQ?YS_YpZFnUh};So}ka1f%?Bw?ipEj z$1;C(H~M@AS38tNiYX&U-5!RiMtoVI70<_yqh#AVuq~QS%2KZK3T}T-%;+#d$+FX> z(X^Ue5?(60%EOeTZzPPMv~}vne~Lte6}qnW^|^x=3Vv(`G<+WLZv2>&x8-zUQJN-c z>mN~kb-$arApUvGyb!2)5+Z-L-bQ8w%b?tZ`5E+5P!!LuF$Vn7o&R547KR2OIhnd$ zVpV$$M|B-X4XTu1>IdTM?J<#ZvT$3EI>6Z$L%R#dPy`AEC*Dgf&o{%!ldy5Xddzel z;e(+H+SJ_y)+q`0q&6xD zu$aV9foKfnO+)0-5X*BdY;Y75n>VBVDbzg!CrmZm{$(g`sVJ`o6$`g2cs%g?E{}aYBES6+ zd}Hy0KMghXJKrmE?P9I$TLJSoXCz`I+jD2;S%%nKLCs9jXSv8>F4x1k#&?Mz3Nwk7 zIk!0j+JwvOo_q{NwELcoLD(Kh@$1v&@t2;wkkK^{L;#DRxIBCvSyo#uT6h(MZT>9N z6sfM{D-u?$5JoW8Cn*qtzIF92)SgVPs*dA9bwK)d!Y8UYR?Gi0U_a>?C~;M03^$q;Cmu^3P~I{2z2^g7mWO4PL2KK(9qda zC>4W|oTgpT3?F2AfsYSDAQQ<8*_R2A{{zFlf0iux>gD;#9;=H9j+?w%n+~{o7~M?Q z$3>n4v7E=Tw}2E}EUP^d(;(13PcLeIrNt9k>~pevEX`mTE53whJDL}EwDVi+=wX3U zywxY2{P!`T;1MyrahVe)S}~#;$lhxeC8Q2YXM_W!$(vKFGaBx89#p6kJ^%H^sJQVBNf<93F$|Hv zSnNOpe_j`bZ@L{%W@7O9Is2Qwq)LIg=W1*(Fw&%Ef%crqW6HcY1Lg%c(i+syB$%&e zC`1)dugh4-Q?p=Gf$*t81uSv<61`RstGo%lU5w&l1`vTB3C;s zoLn1R1eh3(;jIs#GGf-1ICl+fu+6ISFQDKc%SB-ozYzLav?xFjhoPUrgIBO_G#A{MMap}1TGAYoV-ir_XgV{R&N8~C`} z59?x=L*i>u0>C?sMC79-^QZ&sC8N>O^2xG*@b0!0!yA8cOB+9riDaa=>UFvS7W*GY1on~-ydQr@mg3*T zU?rh(!WYG3-TvFd-5^=Zy}+z6UcD8sR}?)?7}3ygzh$$Qb^dKuRyB-MgP~f--vyw5 zREgQM2YtX_{sK$$mLCIB(_3jjfhRnp7f>d>;jI3Aw_O(*kL>%t)0*DJCZu^X z$TvL1fN{7smu6NTXPyes)simlQ@cIepm)dM zGha7rfbYw#$4GSnt!Ea%YR&SLaL{|Cwm08W2skkUk)=!}f;AXtY`npjm%R^%A)FxX zP6YW%zdCO=*FB@!BtVe;5JPZc$fNy(YiA(k855MDg3F1Z8>#=>Q*X?6$Fbg*_CAUy z6s(ua5V7R|VNz8BP9Na7_(20tVuRcI4BrZ985l^&>E7#0y?-BMW;NZ&*843-x}~~> zk+*#wJWtZtGDRJ~jp_r$&i??Ha4V9w0tC>pvEkR2aZTItz z?Nr6bTP3lm!<1QAng7*!$_$_)?Za>zd|<;9rFw-*5fq{d@*1S2Af7Jj1>R_NTw697 zSmz=8OmU8XW0HX35CPred5%DL#u-)|F&jnTw6$Jy58(xxw@%)XkP@(<|*sdgq?`-MJ>m#vQOMYDe)xaWOUFVGR|s;V(mA2wAq}vN3n%YU!H*7RhZ(|nAGQ03{tMw|R2UQ1-U!i# z9vL-;;qK8Qz3HxAS1KfMDC;)8fM+LT)z`CKIf3cVu_cM3f={5SQo_O8JO%-f!jH=4 z2Cy;5KyS>*a6E;4#ut?s22l!)VifrHP8FT!S%F@+c~hZBK150Y-&vw2)`$-xX{=}f zlu_uhToBNkld$wXs(-N~WM@5v;e8E4`uHd6Q_uCVy6fqJ642K zTmXI3U9=`4tYmg8uHs~mO zoz!1SU14?TY8Un!;9d^_Nc=xLhm>nPh5DLnY_kz)zix(#;1`4dIAf-A>jr5-5XhKr z5mAl_T)QX&BmlwX0MVb?egK6+9eih(po8U(XO92W=l=_1V5%L4!1e!wf=lLIiNH4l zl>6^c)m&rImA@zeT>tGrbo;LNoE`rjMh-v&e(bV%cmCohhZtz< znRgLl4q%!kZcv#j)16Zdr&ixHu7K;yTHW1+)87}}SAt^;NY9YNZ!JPgI>%)HMptxh z021P{x8HC(43!fAK{k6Jrup`R+C@MC84<;|kI4s#c(_c@6@LevK)Vdf4Ui;p820}{ z@E~zuybfEA|AwkSh(ocsgt6Kk5=HnA(ES%ekpqL%?f(;}n00jmY|=&t82R6U4r<^1 ze{XRx#6>vyKeCD-ynmif^Q4CVe;|0ND2P-3QVIP`;Xh~=#J3bfSAk6Lu!8jRzor09 z&rt#og{`})8vO5J0x8V8{*}W1d%7(b@fVFG0B4y9lqaRLgkh@KpCWa@C;xBoQQchw zG;_9sgz5Qh?gBEi)|b4=FEzb9gt0&yBkyg^0yvn*074QUkRLJ;XwM{+(HEfjatE!D zen;1;TpSH2T-lv`JVVqM=m-y$`S5j|o?NuBD(uP}Wxzw@n|NK?!Xq5iI;{B6!VP&wCxP6Yd69Atx6A|D} zNB2Kq*fV-tdTfEdQ|`^JbOX$>>zRUlVnxMxBy;ac$O61AFYI#Xf`+A(Z%2w{e} z*D{`XX330ez9TARI;?(2qx`Qxo=(wfES-+X50u(Kgq)||eW8m(%)kX2ZAr)#l*a2_ zEM9!GjL__shl18Z0Ww0vc!N%+!Kq3MMOpj*mi#4bc4m=WFTRAee{;b$nPo(xyWq<~ zg={(&sNnVWuUXn@)%2EWPaIn17-)3{Fgd>15yn9cz8c%+Q^7Oe`PQjZ zjo-Wut)%v&zY{#SX{YeTFxL9AtVj??G8qqeX}ds9eC=$>cLmV>CD1)?*3>w7#rQZ2 zmx#_RRmWne&~1IlCuy&*!&cbuCS(D6nxwC6~8&7_ZK22po%q=oZvY)A#oI zPVdb7K=wIUvf|XbnZpCtRl4#6g8`;Y;)x@Bb7TYfbUkiVCYG*3G#YN22!xk<9~ruo zixN*zu@IM4t7BAx`hM`Z0`T$w<wVdJJ9O_~_z{(Dq8XoVaP zY8nv^O2fA@kKq{e(`<~a;seApltuj0M+LEfPxw}dKp$JNBTDZ;)h6n zi6IBeXoN5qxyFefXBgN_9_Ok4C=|CzxhY(ubVlScMi5t^HMW$)BKI?1n*9{rhfBR# zpZFmf+mz}x%9JeSc;=I6zH^j&hZW#xkrgh~@3(Cc7nE;Z z@DU-y8l0;?fX2Qe4oxQc8dOrlQgo%v_lstlUnfo)RD)UsQXQ`mC2k&Z?D@F_S0R+N z0%;_Eni+;g;*Mcd=Twsy(!ebHX_`X4$}4WrW5^g}tRFF7K(qMd-3e&!+IU7=u?Jx$ zqtQ^B3E}MHo0g{ZP;5RIn5-|;EPm(W5=1gt@@b|yK?^!Txi`o1mVv}pEEM^RVitnryNmyk0YItm^R@-){itGYLr)}qwjBN8tJLE7{n zuD0x63JMzbJ=68@8gjYt{LlLhTuxaCtn%w8_fNpyn^K9p^M*mrP)&tHpQu+#r>bS4w$s8xG2AxAH;f2T_Kp zHiA;|-~YrblBj$AT?EPSb}^iE;={nDS^@V^LKg>oqrQY^UJ#oKK2WWt0*RcxQi4=s zalULEw4ZFMiDm7Oi2u$-ZkVrF20)ync-wOuoQ=^nQLG(|#2^Er(*RaSK*s5lXo0&vFFIA-Hdw9m$n3>DblqnvnJc{=drHmt*M%#fDg(_+a@+-Ei4Rvfp?1AZXt{gTu}?W#Sk%jc z8-XVN;WX87gBI_nQ#mqp>7E?yUA9{3qoUsw_5~ZcWzRmXZ505@@~OLTLZqN*WnK*QHKm{= zu0nN)PXUT+YJ)-=QjV|9^>JT7205w?ok-*}VqwijlWYdZrEu`%ft*Iior*!H`3&yt z67kOWuFj!>w24T8b0&W}@QQ3^%sT#Bxqz@9HDj_yBxaO~nw zL$4J1`gP&Y*VEAki~x@=>67<<*p6TSYEkn3f~yHdV6!vCppFbbQ`;qsx$TE``@AZe z`S3PzBOZi08J+Eb)TaN#6(@3Zm8HhRp?n{y(;p-#x!3{Y4a3=3pJ=`VNx-_J6BOam z%=-0Zx5La)W{U01Gp?t#4*1Gj7f)#U^8$$fX7+p_1S%`HlnG1IM+d9F8LMP`<9JhN zSH=2ZG-q5KPj*u-P4p-`e#A(L435`Q1i7wi+<9@`?SMpFmY6rP=|RVog(I`sR3HgT zoHRwxmna7fYQLKNt}t(Mjmq^R##rrVEie}iA5;j7EHz!0Yq&jjX#BQJ`JI=%L;dJw zhM-ZKe`b-_i~+~fkHOa`aIlxl^e-@n9Tr2a!C6Q_FO4h29A1m5Y2HnrFyu&hB79tP z<~ReYjG`9A7jODEi)RR^_&)3W#T>KpuWIMc)R>iEA<*7!6rguOHLV*}OR2AA{K->5 zs?+w))+i!-U(J`A0NlURA-;|)vE)*h@|o;ZVtDvLpJ1Q4|FX)^{tC~Y`>RjJ5?2y% zpe!i-)QH;*=yg}h9zsN7tVEhS-V;fOE;q3-UY3vBm(pRpQdbmT3_#mZz$!ITJ^U1^ zv;H2&wLC-22vTi&r*xTOU$3k0*k=dS14oW)>05f>RHpRQP~N#EN_@W}>;YW?CyeQdPSvAZfgT6 zpxO3`iI1b@2Sd%BY65DFVypJaX>4ESRgw(ZfFQ`x)3;t*Uv%)ZQ-9;u+3d3pb0791 z!wnNa;l!8$h?ESd3E~)L{N5jyp;n%uYp6g~qM@%^uRI#79e>Zieo$s(qsKY`>fNKX2H8k*8dLdJ$Kr!-dSW{0Ec7kY@rs{750Kn(6WW&Vs0B7+=) zOF!PNUlvUlUKPl(wp^=tPpq8^QkMQvRn~g}*Jr5%*%vKDtk>U;{v5)xTz;hANzMbr z;#Iee2`#*tN3NFusIv}N!5J~c68<0%bRE~6?2o!nk{U@Z@ZLYR2Te-Ru;i({mgFBx z{+I3xzft4G0r&D%2qUBgl09Wd?@z`J z2OsTy|NczX{ba!WqVjb^%dZIDUp2u&lHhQZCspgu$=zZe7CimfvsWkwMeOljKA3Lt zsT;_WPy|vfv+|lZ{cBeoa1b*0ZBH-s0cLBk1k2V9*dF7xcKvp*%t3{N3 zGw|?gz|b}zWgX5)c0OIVFeD^<@x68((06myEq;zC-~^P!QoZ87w(Gz5fsiE@RHir% z>5na*G+lJF#Qtt@E4E!<=mAMu;gCFcp~sh*DXziVh`qKP&KL$b``N)d;j6bZhI)lo zgUc&s4;SU-k8YMpWz$4;$EIY|HIime?rzVXH4S7udaNZ~2(LWM-kz^gWe~BUo42&M z&e_`s5+*6qp(BXq9sMzG$c8%(vG)+(u#i!<^qM*J6p6bsX_~5@Ey?>*UQYFLF(j^s zJzQUezswvQLgdeWs|~Pi{PpFn(4Quki>vL$kp8~kZ{w0cJpLOtZhQPOT+MyQJM~Y! zcFknt^|`?@L%`*JxE~+*TlKI?^kCk{Vz8w4{U0W)Ow#YnZ^qb8yJ z&l9p1;<1fJ$Wmlq!Wcv-Btna*C`*>XScb7A6j@T9tVtPrA^SRHD9en!GPbcBRE);* zFlOexz2`mepYMO~{QEm|&V7F8ci-1_eZQak`|+0#qRxGg#)^xrKhi!O=EV--p9!8U zH>GIbddC39Y*Ol2I+zqqfDn9tFb7P5_o5oUz7NS3RJ_p>k2_@lz`Qyd&mqk@xH62u zXR2bB`nAm_qK%(Joxs>9Z`}gw7bi7i_6r;j>Jix(Hx$U15 z*T(dIYO1a@(RYrUnp;flV0UsVeOgvXbl-9Mn6GCP(sA{Bd5d^dE5G!$NKNHTQiL_H z=mGAkf{JT*n}S4U;7)1r_q1(@R?oxEbp{P>A=Aks-V*e~Wn!N5H)sUKAa#od%qFRK zzQAzetC$rR7gW9MfReS^AA$=u4j%GRU_AaH(zuu1nmTJxSx2aKVI zRPMN%Hxc4MJO$H7lUy(6+m+I<#~7i2xO<1Vn{4tP+_OU7B zWiTtLWfvQ4vKC9O>V{Sq@2vRe(Ubnj&zto1QU-!{6|QCj?wbxQgo%_Co1;7{h&aJq zn|zsgoH~LOK5D~M6m|-%!a5x=i*hD%69v>GZm~e6@q9r zat>Vz(pf9P5d5)AyE9Q4-B9#Y{ZpsqU8k17m(1IdaS2};)`00W;>xO@T>etOb6|rZ zsrlS5EHx9pSrb+lxE@fv6}rM->g)ZEM^ueSq*>_(|MZS4Mw0b_XEJH|@Z+U?t8OUJ z-nkq}I%h_Yy!t>1-~8+zKnfMUVRoueC1hQEQgQ}qt(*o|kha#}Zlu$`Kz93C-rWTj z-6MA^INgdCWq@Oe&N;ssu{ySqC&-bXtx$RJylOjN^di(ZjtnB8()PD^3n4(XzK6+o z#_kiD7?#GhGG^vhpM{Q)T4R_I3QiBK*6`W4UOU?EH8jhUb3AOVwA->9<>zsQySM zv$DgcL;eUA%s=2u&EjZm;7_;F(v79qmH5T;uSD3e^nvo=nvc1x6S>nXCjrUZs>4yi z2ER48I!!ZLz(jB>@$FrZ2g~-EG($yGPGJ+x*@k}}>`}cJRs3e}LWZ~2zKtGKd{|xF z;K|(wyH<=pw2KEN8yic;?!rHo8eX5MZMu@J-QE*F8N4Z|u!?Ybs&;n9-eithI)**`|a}WK(_8Q+%%lg{GPR5T4FIOlDZFRXIz1Cy+ z?0x1_2_dn2YqA@y>ZFt-bPnDT?;h8u#l1@H2U6-~;lzPFL)3aB1}VRNbk3+al1b-1 zsFa@Y)Gfxla9MxQftpwxTKWFU=I7w_tp&+BqlmEGb=MR<$-wr?HeE}=2R(>m-;K7D z`e#vbkFc?EiO3ERY}q;F3H`Z^cKW#!{=p0Vn|I-?7Y+qY0W9&m zS4kNVSZdD{YWeu`(0@YG>ceKEogGj>L-o>K3DznXV%U$=`ykXju@Cv<$oYv%sxhgT zmqYd}%cv^SCdmZxfwn=zDUdEE`?$huw60=Sw_$38RPeZ%3l1)2vNKJ)esK+S9?XNr zMs?fM`x?@h#Ew(nnO0RBBQ`M^&O3jnxJiEL*Pd}9??Kn7k8(r$^4cHi`{JGoECMYD zZxb>#lN-Vi*lgXI$Z;d7HBEz?4hisMFnBpDD1Ie^QY?!^fD^co(R`di>r?u6GtUj) z+$Zbsg}wzkS~hlP;)ii}EYrL1Z)MB<`3HI-iw^kmn>7=GT0WM#i$OI#Z(lc4PWjY$ zjY+%{lsro#p*O@-LlsWLLZ@;mGD7JBy@s>aS8u~2!50XtCLH8$!8eigH`QlKKvSvP<+Cy*84N#)Tkr;|V&20s(X91=4bDek8ONkMlqgXUE9o!`7Dk1^jE?mL#x>Hb) zd^yLQsLE`pf}r+vtui-dKo5cce$KJ5Ad4MW6EGb_OJ8?=(cy?lPIadlNNh&lE=$HO zbRge;cu4(*WAVFMjf?p@;S@5B*x<`mOD{MsPMk^VY0li0%#*Ax(%lU;C8JV>f5;@2aBrJ0jL}iv_ z!P>{e!)WF$<}Q7I4=xd1y>89jn` z6y(xfdzVUQ+QCs9@aAq?&fRPdEY0mPD-Qo6>Yge1?E>;3M=NesNH|axDM$Hh+1;-^ z#H#C2oJ{8vteC1)JmBjjR=+zU)Zmf00tAG}Q4BU%@a89wGzB>URfM4^9q?co5=c#S zu`QJ*e0uo7=_+M8rxM~X?t0Xf{WO?lj?wmV{Q9maH^!yr8HS$ zQ@%c$QEw4lwJ4@AHdUq-zgaT~e~`{rS%c)hAvxBBY#53-JtALikK+3lE39~76=AwT zkzRKGc;Q&02B^L+N2Pg*oS}f_d-E`+e4~vv5ZnroY;EpaS2U>}+x^da*^O~5=!kuo zN4m&hZN`&i^m>zacYr4%cb=0sg-+?@CEzk65)D%4n-^c=Egc)Di@x9PqEb4ai>iiB zRdjWRg9Jw&%kQ-0ePj(De%`1(+ z1RIL%tm0=F#*?-?hg5qpFw-2AjGERiheQFXO?2g)WKq+IrlHU3C${(YuvpJui$XbdZ$bO)r^$utfvZ%SqFH;?UE1fqVJI88|I)RO9Z9pz0k4@S^ zNDCc$w-DIvqAZIRMGd)^CH;2Kd4-_{JB`R_iOXlif&IsZ5=(bwODNbu8Nqa0$oY`Lp(#&Z)(K{76#gs+e-?g_>acM$HO>VJ3 ze#!>k->e3BP$24|l!c)zo>M#Lhm;6~g4vUlPH$?V|$H`?F7O$!azR`#V zu3Zd4hAQ~x_L1CW{8iKlkKMTVVQllEo%-Jun9cRd40$#K-rVYx=;r_U$A6-s$7Nxg ze=Pqyopy}ek2kv=`Y38mz|;} zdz|$y4-d-DeiarLo~);QpZMbe-@#WSnh`qIZ?xNv-u$lwqQUu+Ypq|_ zEE2xwcnZS`&E8&2Jg`5ATU zuFTz-`OnV#BBr{&jLNC>6lxbyDJnWLMig1MzX_1{e8k9A`TJ#b-*`uvpii4!{wQw-_(uU~(} zaWXA6puqClwQB?A6g*Wcb3>{6&%~~1Yx{qd`Asua6J$Bxf68f=x45K4msu*5U#;dx zU8qlKAD$KOr3;bz^-;+1_xk+Tyrh`s4UAK-$EJJW&67Mlv_cB4d-T_m#|h1A~OE*Ga>*4oPIu|7w^?bJ_Z+%Y(4^7_r&!Hebxl9H18#|Fs!FMLUT z`~Lm$*RNlf)pl`w8Z_C*&mW)hk`%0}YHMptB8ByIlbXG|R_A{*va$JARLFlEzB3ST z7;{ljP%zq=lY9n`dE)j|r>JpZxslwRJI4nH2VY)H>>nA~?&|7lygE91LtIi)A@TCy z=kODc&%K$QoxNep!_2}mfS=EvKd<2Ie5%lHYzs%^W|7ZZ&E(rlliIikEDi`OUlZ`DcsY?v#)zs8TqE~5l?AUSk+&Ot|ZS9gpvDcaJE!x;PIH+Z1 zW%crH$$mCOE3~EQ`%E=_{3vH-C3xrV-94dof@xc=bEYGQfBfJ*c8rl_E&klG-QlY*a;uc)hguB7Q z2V3&<^W~CT2J`yvRW_-~_VjO9TCe{7H`Bpq=ZF>e>Dgi7aFxY|D_2fh^NQ}@cJt;< zbyk-0x(;pe^eu9j+bB-1IL+iIPoHk(;D{94e6N+P|KQzorPP`M1>f1x?3<6<+j+&r zSb6TP?D>3P=fZY!IxY$C`WHv{iij}hIyk5cJk!dx+O@VY9Ta=v_X_jH{updce7%fB;B)$2MVtr9EK z^XjJA;&=?h1=tgNhTN5AdSE4Z@_1%gDv740TkX|b%e3hfS2QBz~p2mblJycYwo-0N!N zwaiNr(SELSK;hm!8H0PP*D&@*Sn9&NgD7cfed6Qye)zMbYt@;(BPJ#$-(^ui=Fh^V zh0#XxoFFud@5+1pjCOn+8%xi|#)hFVUY_n@KXqrHz~RHUfBpCi#e*`Po{Gw%#rJhw z|0&05PC8C;Piz@1{0bxCehh4NFqfqI<;&jp$tkFQn+{a?V8VnWzqDsvr|0D4%y61B z`KKZ~I{KCym0gc@f0(M9SAhW!4-a2K^;Xx>3CPYCAqJ9UT_C&LweR?e6OmF&yWcy` z7!+en9@h_lyCKq^eRJn!0hWif9NYaBzmG2EjX15()$+tO-XO;J$B!R!@s0fx>7@_P zy{YIg_wtd5k+7$tW)<|rrn9#fb(rq0LUe$BkwaWU0_DAX_dYf>VCxj`u^Iwy629KR871w?iW#U)PX7?_ zCGsRW$-rq~8%eZpn%KN^L$yPR?_wS(@|CA(XJxpp-r1&J#%1oZ6uw@N5eS zmGm|y-)*VmdPUysK&7wgmk80(zEaulo}S2(X&r@!G^dS>c!_(u9^aLEU z4OG{-vBa%Ix=SK$cU=~Xo3A)xj%TrljWh{TSTPE}Z1l-_%z=Wqov6Xr^S}5w{gc(3*QvJxNHUl1k5%n^B7kLuvA<>lX%&r{K2-M>AXVg zD;p!}A1c;Y=Nn5saJBZ^Lm75s7Z>Ph&&0~Oqm+bT$W$Vvv~R?(za#aIJq)8OM@JA=GHzlh|S*iYD_UIywm5ZW3Tkc5^-J8wy(tu@7muBrZDzWd%~# z1o4E(Zmd+A=+n!ryqu-|q$E&{&wLyf=J%>XKJ1J6`mg$pu~TC(u>Y)ULn&`io?-bW=%bJ4yi=3El8FO4DOwut8LqebybP=tE zr6T9wx~@`NMEM5_2fmfKI(`m2MxL3ONwUzPS^x9rn9ITq<6S3Do&=7kRSxDPQ_r#y z-A#*4=F>oikvGbk{v!JJ)Nt$W6XuUHdKwxUh@C@4MMV;s`Ey=XRS9rk&|1=N?E5xM zms8fbOY$%BBKw{46eK`j;_9#8y(1?9@c1S+z10>8^j(?>0qP9AGhHrVuZNg%!W99u%?tUlm+CPgyLRnLD7>u@_BNsEp+OOidJ}nF zTsAX6D=Yummm}mY$ybjWE7PH&p#GO(NA~ykdnP0t9C)q0_EVxY-O%Q?;mak@BS(&~ zb}C2S?dwnX_;VP)4pHWDXEv>QRQ`C6f-r73E?6g(RXK$FjEjo|9#dUU?@?3~XYpJO z2j+gs?1NbyQ(*2a5cZFe5%fZl_R6G!Yc03BwppmY*3i&cROQ3_tE;P1dxIYmpm?x4 z&}k~CZT!}J$#O6C%aPaMO=G5+0Z<79F zj;bqeKmIi1kF@JjN}I^&)Kt*?&#&?5Kjr1+S{X)UGHauIf%+eDo?@zeNLz^q7krSv zKjM;gYT>fCXT(u`rFadkuc^JVZ!Y@BNV~QsTbdd&SUV*D%6k7kW8Dx~PAOH>w9J!? zWZ_~~Q&ZFG<}g1W*Jz=krLI0>(HPetJ-yU?q@;8AAn%JIrD)s4H*FIG> zZY8bBZsz9Yv2}_hCnb%iCa0vRLe{$6up1{eehFJadEfFsiQ~JU7AQQU%ysd z@wmIBY#Jf4G;VOMMLs5_BGF}fulIm`E~ zTfaG{yaD!T%(F54>^xoIGXL7+`6i$c-=SlS9^uExsg53PmlWs4Pq%O1&eOkV>9_Rb zL7INipuEm*yEkuGo51oISy{J7N>EG>*S`>YUiYct;bj4z7xH8j6ckt+7xTSS-ds$4 z{P;1io7dyB`KFuyuG)oL`z%||Hj41DQr?jiT1j(vO>8jB_(AfvRijSmo~nU z5-SH2zOuGv0+_n;Q+9I)N(@2b&b?v6E(tqkx*grOe`barup2w6_l`$LXXh)7=qnIa zReao{%T}@*_Sz)duhPrB{QR}A1To8DDhJNK`QD{-Qhk0~{B!iyBL>Bk{QUfZ@2zg# z^4S@7?u|S!4uHThyHWMxjkO7)q)xc2TW|c$$7*P3=;Z3US4O7SWUb)tPr(hKo*Ezy zp>b`X(LRq&{gt9qzvK7hNi6OD`^l60c!1AQr*^upE!Myd9Qcxu9p=0{gvH6)|Gb@>~wZWO*W2Kmgmj>{o;2=Xzr~Jv#Ep$ zmz#8$)&}np5@jj;e$mXJ(3{6&ossAkE{4P-^|{T{s>Vp|2vYJwZA&pM<&IYhdVk|5 z0lXP^?egEN9BhPs$9j!;v2LzadH9Lz1Y);rOB(l&~Y34fYwI57gNf@!UCiu z2a;UqI75dijnh8;<|6(K{GKT-9Zvr#EiHY_rdNvKRjA_!g@lOm$||U3bo+Z!a?Ulf zGNP5@22DZof%^{%2vmSz%#J6gzk;yQGLbeF><(grf?94RwpU6D@M@u~CWzz7ix(8B znt{+HK1YaBcXV`+JYzjJb_KEu$*Zc;;jOk~-}j>fQTMozmDSc#G&VMV{PKlGRk(Eh z7d6O$kcdJy+tsUAi)SmSSNgr^GeAG8YHNpTc|59~9lk2~+;z5`Lc_oy80}>UOxiCX zpaP1}gKyu|jl)MKLuy3qCq?lF3dl>)9=uiGRibTY*iUH2{k~_ab62W0DJ`vLJ*PMW>hTIt3?a7M5ZS%H)MbN;mTXJE@6@SXC$2Xz7n=SY9^Qi= zmU|ox_LMJfJ4CBh}1LHTL13Hbpc@eR`)cVaqNWYNT z(0%dQY*=JQhH#2jro8xHM|5*(V%?W^eOMbmyp@7tsG7~N3N^#JU|KuNyc`;m$L8-o zV(w8B0Dp@b>3#H$*w}0L_V#KOIS7f}>hwk-WhV(+cZ;KLE8Uo}`BKQm#Wfe=u}&U& z(x&ETtVi%pepR^xp#=1=elDat`}xGzm*|n$XDhX`8++_zqorNN7FKvUQ?8O76+wz{>Ycq=ySAWUgI4O37K&V)q*dL zQOjR3umq8KVR+AdcoT$(g?}Q&%QCbEv5|`Zg}>q$M;-BQFs!*Qfufv!Nlov%Hg~%01aJEE>644B z>Ss_xOb)^1^9u^%UcK4^_{w@KwI=f3o3s{-fgeAbM?=^nAskjVHfEORPCP$&_^_8j zx^GdDYsoAC@xeofZrb*yvIi-FQ{xh%$-8D9K5gM$k4cy=3GC9(>#%xQZj`VrbLGkv zT>e$#BL3&}yQcEW%J{~^ji~Q|rd4Lgdwx+oy+wTd@$k=s(h$(fzr`s)xY{RTx{Kza zOY~*URGn=U6uvGY=L%XjZm3+UHBdk|5D*a1ag*J7qhl`Ls^d6N%fPd%2KPIxSc9Wm zTkDO4A)ZwL2M*TuUMN^yxpAT3OH0&pI`-D_@X6c;?USJ!&aSTt3wJ+z_KXm&Gu)z8 zDGKzg7nNnThsT;v%5o$h0}{!TGD17E`Axg9uuwepjm$!|88CE=9wd6!t#v$$w|8m3Zo`JRZZ$aHjdoh*=nWP6Y~;6S9Tjf_$iB^Qa<)xFL?x#IZW zKr^{&=aBt3P8+>;B$9+Lq2k z&ldH#rPP9?Br3Edj1Qsl z7r76;Y52?Kl3KrH^kRB}pM*F8*kt#WgqM_*%(@A`YM2hTu-MD@s))zS*UwL}y8k9c ztlO_0SS~60w0y55nY`X{?c2Y92Yu^4KECrb+OX&GuDLY^(XXWOEbVsk zi)J6Zuj26bxD z;1W7hd%G4GBcHgqmJ`kD7f==;Hc!|Ygsy|ztF8AV^%H5NM)hQnlgCiz5bDsaX-;qM752X@Bnd=0q(iogI~P3Ww4b|PXn zy^lV)|E~D@HNDZ;{lbAuB?F1FJ%ub_6FUpjpFe#{)F!`2kGzYDB!M&hq4Vep&VSq+ zLbPCLM*9hY6q17*S_$-0m3Ud}6Omt57Mj#DAkgCwcLI8%LO`tQ4Q=z@qabw^ZQj<;(q{YBJ?$ z+Kfz0TS)BEE+VS2GD0+TIRFQ!G%5N;tZ8X!B#RiC^#NZV6AV{Hp*45wvM}5{j;!BGexVh z-{Fk1G68?uGfjPGg)46l)fmqWRugPnN?JM-mw-RD4m#k2LH%rg;={(8B_{DQd!J%@ zn<=U~fvJ1l<}aLmbMf+(E5;q~udxn`UY8{1>P#T(K*#miZR+!nt3Zo(udc3sDRkM( zSGY5~PMRCb5D12v++Y!s!u-e=uhdi_d;p{&FNjgpapcWX9m^woD97n0y4q)(A@UuB zwgmpU4ZfMpht=%_RN=00nm?ZNRyA5cs;{o5X8T^HM+_0$Iqpoh9|JP0H}NjR1C_(O zf`?J@te#**BEBub3Wj;klkgJ6oqz2!{}Qp^DiYh0fjg(GGinMFFsuxgn1%^3*y=#G z6Lx+H3I$V#xiPnbh95W$-R8F4TN$8uv|E%4{j}PBxrdl`RrHy>sk5fo&e-rGVe{c>bqZ}X_fi=&1$ z(AaJ-jA{gqL7v;TZ5t3NP-E({r5&zMv+KCxN|D1yBVdofVTemUo0d79SYVMhAN*Mk zYw}{_5)#yO>E=C^2$95&%AZV(Jv%yoq%DAH6XLDe_3L{f(iJ&ORbXRc5AaYLfB%-z zcHyR#(|D3BMShZ`ZHwegvFWi4%~V}l>lS8^CjyFltkxTjf4S@6z#5a&^3CDqcy?av zb^~YUf-@^ETyvQYJUteYz#$pV^X7U*4zw6*LXVgEJ$Ygh+Ee-MDSy9d#k`(oO>ON% zQtKJOC{8N_zH?Aw2GPff-BVH`4MivD=~L#wHWpS^6PT&A!3uODGEzD6ah~wdqNBOM zYPj8IPowBm^z|98Ty+d@rJ|!#GBfohrq?$#NK=c-8dw0?Ct*ud$X7Y}vAffsv66fbMAN`gfD?)_)KX zn86^pbxrooCUvO1

y9(DI227aF>Aq#-&GE*S@0Cw2+Dg8_konbtiLff{>zdU`UA z%C{8HH%O`{w~RK%Q#8cNhJbMe{<6;DIuN>pkaU3%=VUkMWeIx<4kFg3ciIGIruyxL zNUYKTmkW`|76f#C7@S*NtR}dJ7X|%boG*99(?gdSVBs$Jc^Kv!!tuEe_D0{8XH$#6 zAe44OlY{VMbEn7N_g#$mZN3<{Uw@$vxna)bZF1lslL!%6W~HB;Kyj76^yzsjmH;xw zwZUBC_twSb<>ldy1Y>&}b>-fwaF55FnXLXA*2*;5hQA}^`Ql%n4$GhXr305i1lB?z zc)&VLZS{l91l$*VUeMxzdPG!AKp_H+5|ouFni%woj9!UoI<}(*R=2YbFg^+Ew36aR zMS-i=-qE4m&0DGs77a5gLR7#=Une!!{9~(Zk=4o9sSh(gXkSt|O)jb+G+|e$RBLjx zfuYVGYu{S5DpzZ-EmLE3TzpV%<^6ue*}=f06^)IAnsh%TgdR(Qu+E6h0a{y-diVt2 zt6)~Cbqm1CoP^b*JaY#EOKS+ghq z|9$@#0z>a}h?r5Q0z?;NU{dvIH9n^6XF0G4E{wM%*R2*0?&0IpIOgQ%clPo>sFmg4 z`1b$y*A`@NF7C+D>6sj!|Mg2(+#Xcy1_+@2aNzJ^YIIr1Rkt+pLH&F9)|wD-=>PEpzRUp<>D;+<3_Ls`Lb|#A z1iw-_P#GU0(|JQKTM0^^W}2S=;zXN*z%#LY6;ulsxCi(CtZAz(FDzJPx%l}badp{O z?}##Vb21WK$umd=&29XiArcsrR8$WT-v|n#g;U|vrdN883q@-7*RKZ<7LOl4{w-da zzP+o9x;~-Bf)M**5Fv;202(P&9!RESB-AeN$Vd*@C>$wQFU@;KeEWnP_98tNd!kQ zJ08v;1+@rC!~sd;77_rYnIShv!Z0B)INvtX>C0J{_mdd+5*(Fi6&`<}j1|{QXaBX|bmnlu)5x<02;0 z-33UC01DJX`Tv$~D2wu~sH8ObM49_E_@Rv>TWcle$U+ebDL5G#_%KgTPnY>C0xSez z+<*Q#qzMuUnIWVD%rc`4(rbY|$VhNy%R$GE!FYoRJM`iAbR`%Be7F^*$WBr}%y-BY ztW8QmySD)wBa&0z*T(~&*cVnXmO}>c@4{rqPSVR33j&!DeFwoK5()7as%U!flzW?h z9HD%kcDj&f-D69@&hQiO>RfWRW7#JJgHR2k0ax^)dDdVVLtMCQ(@|V31?CBaONxt& zTYR1@sp2UgCx`bFtN)d&2n1qV2Z!7+P1iGbhd;3pmtX1n7xzj?NFb3QN5+A+%8!!d z0F-<-kpv=u9mG_51A`c0X-P>A%W?F*L3iqf&`}diNt7k4; zxxxY>_4wJdYmHJTF_NrpS*M87Y2V!2MCSQqukv6ey(}SP?w-t@92@gbNf88xXzy%| zQl&-)1!BEkT8EXjee|F8b&M-PKaC@RwB)OxRKZw-2p~_HbXfpQh2)u)bpoUOkdCXf z|Czq-5dB$yzug0qlaJ~``G?@b(?0wQ<3{A00FDTW5n&g&P?rNgA$dVg0$t0g8-^Z> zku{%FOK&455$-!U;M1p1%OL6U^HUJaz|!5_onUy-=3c_&#!V0uU_??}ydS%^7CQ9H zwh7$%ZE$LW4Bfio*GrX7>>a||kCJj`!d2MCZC_SPC0-67Y&K&5V5Rl{{OJp&qaQ%c za%n9(Dr$CRD8zKCGbc>gcnddZ#P%0maFcSadn}GkrRMd@BmB^a<^S~g^Fc%v9su_e zQa+4kA~v=dCF3puk9oGsrj&@>5dI-2>FjMjI|o} zY2Tmw%FU*zc%kmg7gz*0i=N|Akm%?i7}yi_^00uwY^$yfp|G<=OhyzPA*D(*)~D<5 zY=wR8V_sS~aYRVSCpkGeW8>4ObL+qRHf#Rge_n9<)UF^U_MjS}>)xT4;=tQmLb!r^VZaLqxiCMPEu z7#KWJes?T~butl?()lEiF!DLBPg!)MSnNc@u%5CY8KsLsMcMTq`_XhWKHlQSdQ{P~ zg}3~d`o^59|5JE2J-5gcpM{Dkd{3gW2VsCXNNW<&4V_owx~lre%20T_ySoWVM*}%Z zBGH1)4H9tL-aaQMSuqu_c?qGd>l!ERtKc%Mf0q(&ozzymUDK#bg`(=)o-KI5{^@Bv zfcjx!Ckgg&m6~sR)mTe}-gIAFLP7_zV8?y;#3Wd^ zt5KNrm2+=ByN~sM{n4^s)lZT3$+jmRdQ{oOgimC5P)@S^)N5=zSW?)wt!Y%+yS(0oYUfz6IL!14tw%#RLU2|qQ>hF( znlN+_n%yFl&^k3!sdHix>x2IQZ=lRbSgT0F>JjY7KKJG5E1$$5&0zBprJG38 z3E1<_5qyElXA9sv0#7uts*hxSW~yGr$20Qq(8E+hw5<|t4|R}fgn$43J))v4cM3QO z%K~WuZ)b=cUdhRanW?rxSD{68P9t6kokM?+Gtrf{BTVh-46n$d{+RRQOq|36sPW(7yToC+#dvHuD?*S#!j4_! z1_Ov&pV2Dx>Gl%WlPCmdIt<=_=tTdXI}I3uv_xFnM5?|J)2?(UiA;oj%G=u5uBIDQ zL)!2e<5!I;14|2mY_)akRubueYLs7_p$8Wjm+y-gY$PJ;M{r5`xH2Tb2v4T;%Tb<6^FT#enKq# zcM3!p-UG-K{B(`5rFPR0j53J?{tlfc0HA`ZeBZNk$DDte0jdNPku~q}_Vy;?#*n1p zEMz;_pH(a#jB^1N%CPB^;S{$mGbu#S6}@dX4|-+w`oqp~xWJw7{%#&P^z0ng5V5zu ze*N0nvWM}QQvx@fK(t|stm|LXPKI1CZDs`l!{qQHfn(b*mtRz*TXb$8-*)=A*RQvl zXK6cSyKQd#c@hy304*SJ_|Ba>;s+Rd#By|m?96shQ=5+3$rsl))j7Mk@L@^)UY_wi z_ht)8YO(ne5lAPJ0I=A)yY+~~H<80coH13;bo^tsPU^S%V^}c=8EK|5YLjDYa2z+I zWEIl!hAc?L7fC49|77}*CPg$?2?;Vtz{F#NMpu6leH)yFd&Gu8$dPi#4n~PM^`Cn+ zqGfL7I_%e}X#W_(DCxB%HP$90J2A4y+g^f;)Y}!;^#a=t;x{DWQvKj-Z!UI>OiUhp z{o<%@5tUHIcGoT6R>Br(I4ustZp%lr>W7axmGt--z~EVC2L}f?DLS%#X+m=T&&3je z?7sx{V^w?n6Iym#UcK+@*5;gVq1pU^w#*DzHkSWeC}C)s2VuqW)_jJ!N$Ma3$vtFndeP}dF~JSYbc`ubvGPO^e#)!`UbbLjlo zXnC`aK*7ib8s)6P_`O!FdOz z+qaKlM?+B|)76c6AhFkA&dvnJF$#^ZQhYfPvx7aX^;zxQxe5qh0<9{q3-Aub{#3$I(=+}ym&>R=D! zKBgTgE(8#J3MeTf!|hVi+u6c*7|q25cme*dmuB)ADDW3A;)o0q2>&gG?FQHLBli?LVbb>o_S~ZobeiJ$1FJB-s8tF=GV!B z%Mn=%b{RKu6f6=6!lpbbHtIWk)rX9GmHKnq3@V|i4h#@PAB;b|N>LWfxZAJI%>@%JfLSR|_8-JcCPquOHsTV-PeOQ0Z0 zp}bW{vx7Y$EmL83e8>Nxw22i>f6l(&|_r{I1?YLWR-)%Z zVEOWy%&JRIPfv%PxK3yOHAdeiCNS`P(NipX|83N)Mqr<#Q0R)Do_3@|ehX6W26iry+%|$X&jLY~Tlx`Bv9r&VnLoOiP>qomzY)6^D zrE?F56Nr}-uZ~0#8}rVc_p|BNS=>Eb|6i--n+x@uh%^xChT_Fm-G5NItb=fV5g6zgIgO&R&*bIyB33XJ|4T*r|GALxqtsQ z4l%0?9e3-5RV~G6TlSaB*O?o^K|gppd}MlG{`3*4*1AJ zrSb=$kWX$gK`>$z{X554KZc864F8*|Dk8z2{4q`yCOYUS0Bhg!Z2FcuY~M%xzW|PLJ1Zaq&8ZVRZY=#O)ucSk;-#&{yc5dB;; zRsvB&2-|1mYb-s2p2SHbXnw@Gq!{<54l$v?l;r;ebgM!bXB=+1e@{%e;Csa;oRb4q!Ool*jKtMPzu<3B>`LlD^BGa?t9~*qIni9yS zoS9?rT)Thi{G*1gBqNO9oY~gG-$d3c#&!CBe0)3zt!52yqz3rQoTK(u&t-xZoBd}g z`yKhQa1|8cMlS!@pkN=+aN9>NuO7~2HD-dcKgL=F_8kqb`l?i0(LZKn5gVclR^^%)qUJwm0+*3~R8nuRIZsA#Ol%LA8AJL19E=i5OPyvI0WUa5Ppx3@EEG*=* zP_%P2nq?3rWRW*--h45LiBqt%q~U(0n~;=bp}7K`>$sg?#Qk!GW|};zSeS4QH~B3N zY^T>afvFW;kvkWyTKjE}1=)t@(@uRIors)dIUxonCO#c)h;%}QzDl&AhDGL60$LEA zu7=J#|6k-9-G7cpQxw+s+?@K_ERtAKa^qSD8?&5&<^dgN$HTtsZkAWe9|WniF1S4z zKdq>^)sr|b&1d?5IxgMFb@p8o(vHM@Og&IL@>2354!NbZjM4JHsAptn_ah_UF5-H2 z9EumtOrrOQoJuX}DHh6s$1Q_REVdE>6%>(Wc+W@ayOQVBEx@a=m7&KlO4 zY}Gk>^eA8=FE4LdKu+OZVW-hx9LprMuYpDmcm&WS&)}#i9R3aSRKiNgw;k95zqa*9 z_L3%E2&xee3zxO2r@LD*xw7XqB1zXAo!BP9NTfDahM-)-OIO5ElU$p=U*D2t&{r>J!y9oR1>{H~aVRho%C=3hnSPDh+Y$59N|LKX@@QyYUwC z;qXS);^%F;^Y23vhun)&+7f94nf1?_J#qFFSAl>7t_BTVxx^jyzJF+Fua)lg%Qzl^ zQwZ3j(CZDIWU+E_ESH!Fz|Bf4G3wtL85s-}-U<1g<|wIGqG9}wRQKvH)e+Wz$1eqab@0|Q9!sXg9NEga`%{$| z7_;M$bBNQaI4yt#1k^rgS%hCjtQxc`Vr`%o`1#>$5#YU<{$83wnSx(Y21fwXM(*gi z%sTVCbCy*B8hv1`FoKK^VDl}Ueu|Yq`2Ikc#32jZB5}$YF&yH}KziFs3_^&>?&_+< zf`EM_?y_(&Dmt22B|x10xNqefHx3f+MX|@`$`HMxqN0}D{X>TjDvUU>l#{&PnboCKUymIJmp za?MQ3?U+9ZIU*@}c_#y&o+Bs@a2;{l6352K4XC#1>Fe3Xzh{zknD#C=@;vwEfyx1| ziu&X;Gf%pNf+Y>+zHuGKfqrP1NMc}xVk+20Etowc4tv6kG)54PNFI_1p)peI7NJ}+ zFf(uUDkou$VkD_1ik)>}IT9cVg5M7Q?tcqNND4o)W!Vd1ZDcdg(MIjoQyWrkX&ux1 z0|U)F8F+6p$iJ$1lx>k&t)ns1oODGp*t8_;#p5VrjRt<_nF`65zp-JS1C%6zFa*AK8cXT2-_Z650$>z-BQAxlb1x`U(k z#J4F}iE)%0J;qbaHD6MTOBzq=8}7`pMCZAr?dmFt@~_CpI6gi;IzC=ulKJxHZbYra z&we=*ukm-?KH$e1^QG?{F|b+ZKZ|YEGE>vjZ%a!Jv$M|bt3ZW0L!TcPcRFRKaE^z)-Ba_@SQNvHR}Iw^ z6v&A~sIC$c>QfHKI|RMFyozxQkiCEtsWF1Te;pL9(aDR%nO`FKv4vW#chN;^+j;6w z8n*y_>?9IXQp}KWZft(?c6y0seW#%yAIJyjVXsM_et@AdEa;O z@YL$-o)53D?w%CP)S@|~fd^$Meeve<^xxyvPxbbE^x3A$o)pdbQ=Pw-J>Grz(95jy>%xT# z#)b|aB1Jt%=(fzy&mUI$HC(Fpu1PCZ6E4z`2W)azueRN~HB^ExTDZNj?tE`;jDP)} ztm?Z^v*UHG*Aic?|9MeoR%IWxKj4+$&FSoWTyzxhQMCkF$0sHdlaqJ;z6AouJW4|D zAv`LIIes8Y^=H7XPK5Cz-o_pLlr&Y^Y|S>+`g8smbI@Q{K`7vyAFrsaY)Fd<<7wx= zl$C2E?6Vuq`kzei7K@~PQSbBird3yN5RO6MlzLT87+B4ZAN%gh$$bu$eQlp}{6+o# zBQKBqq1;@XIQn

; + return ( +
+ {this.renderHintText()} +
+ ); } render() { @@ -1246,9 +1253,9 @@ export class Select implements ComponentInterface { [`select-label-placement-${labelPlacement}`]: true, })} > -
+
(this.nativeWrapperEl = el)} part="container"> {this.renderSelectText()} diff --git a/core/src/components/select/test/custom/select.e2e.ts b/core/src/components/select/test/custom/select.e2e.ts index 884fcda47ca..c21f83decab 100644 --- a/core/src/components/select/test/custom/select.e2e.ts +++ b/core/src/components/select/test/custom/select.e2e.ts @@ -73,6 +73,57 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { await expect(wrapper).toHaveScreenshot(screenshot(`select-custom-parts-diff`)); }); + test('should be able to customize wrapper and bottom using css parts', async ({ page }) => { + test.info().annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/29918', + }); + + await page.setContent( + ` + + + + Apple + + `, + config + ); + + const select = page.locator('ion-select'); + const wrapper = select.locator('.select-wrapper'); + const wrapperInner = select.locator('.select-wrapper-inner'); + const bottom = select.locator('.select-bottom'); + + const wrapperBackgroundColor = await wrapper.evaluate((el) => { + return window.getComputedStyle(el).backgroundColor; + }); + + const wrapperInnerBackgroundColor = await wrapperInner.evaluate((el) => { + return window.getComputedStyle(el).backgroundColor; + }); + + const bottomBackgroundColor = await bottom.evaluate((el) => { + return window.getComputedStyle(el).backgroundColor; + }); + + expect(wrapperBackgroundColor).toBe('rgb(255, 0, 0)'); + expect(wrapperInnerBackgroundColor).toBe('rgb(255, 165, 0)'); + expect(bottomBackgroundColor).toBe('rgb(0, 128, 0)'); + }); + test('should render custom cancel text when prop is provided with alert interface', async ({ page }) => { await page.setContent( ` From 70b1237823dd0cdab852486a6b2cbbfe0d0aaae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bengt=20Wei=C3=9Fe?= Date: Wed, 18 Feb 2026 11:25:43 +0100 Subject: [PATCH 102/126] fix(many): clear timeouts (#30851) Issue number: resolves #30860 ## What is the current behavior? We have flaky tests in an ionic angular project that root cause are not cleaned up timeouts. I commented out the timeout in the searchbar componentWillLoad method. and after several runs no flaky tests at all. My guess -> test runs faster than the 300ms it takes til the timeout runs. Everything is cleaned up, but not the ionic timeouts (i think i saw something similar in other components) ## What is the new behavior? Timeouts are cleaned on disconnect. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Testrunner is vitest + angular 20 and latest ionic version 8.x --- core/src/components/app/app.tsx | 25 +++++++++++++-------- core/src/components/content/content.tsx | 5 +++++ core/src/components/datetime/datetime.tsx | 6 ++++- core/src/components/fab-list/fab-list.tsx | 11 ++++++++- core/src/components/img/img.tsx | 13 ++++++++++- core/src/components/label/label.tsx | 9 +++++++- core/src/components/searchbar/searchbar.tsx | 18 +++++++++++++-- 7 files changed, 72 insertions(+), 15 deletions(-) diff --git a/core/src/components/app/app.tsx b/core/src/components/app/app.tsx index f7aba5fb152..c1c7e5366d9 100644 --- a/core/src/components/app/app.tsx +++ b/core/src/components/app/app.tsx @@ -14,12 +14,13 @@ import { getIonMode } from '../../global/ionic-global'; }) export class App implements ComponentInterface { private focusVisible?: FocusVisibleUtility; + private loadTimeout?: ReturnType | undefined; @Element() el!: HTMLElement; componentDidLoad() { if (Build.isBrowser) { - rIC(async () => { + this.rIC(async () => { const isHybrid = isPlatform(window, 'hybrid'); if (!config.getBoolean('_testing')) { import('../../utils/tap-click').then((module) => module.startTapClick(config)); @@ -60,6 +61,12 @@ export class App implements ComponentInterface { } } + disconnectedCallback() { + if (this.loadTimeout) { + clearTimeout(this.loadTimeout); + } + } + /** * Used to set focus on an element that uses `ion-focusable`. * Do not use this if focusing the element as a result of a keyboard @@ -78,6 +85,14 @@ export class App implements ComponentInterface { } } + private rIC(callback: () => void) { + if ('requestIdleCallback' in window) { + (window as any).requestIdleCallback(callback); + } else { + this.loadTimeout = setTimeout(callback, 32); + } + } + render() { const mode = getIonMode(this); return ( @@ -113,11 +128,3 @@ const needInputShims = () => { return false; }; - -const rIC = (callback: () => void) => { - if ('requestIdleCallback' in window) { - (window as any).requestIdleCallback(callback); - } else { - setTimeout(callback, 32); - } -}; diff --git a/core/src/components/content/content.tsx b/core/src/components/content/content.tsx index 361939f7c27..507d05d5450 100644 --- a/core/src/components/content/content.tsx +++ b/core/src/components/content/content.tsx @@ -188,6 +188,11 @@ export class Content implements ComponentInterface { this.tabsElement = null; this.tabsLoadCallback = undefined; } + + if (this.resizeTimeout) { + clearTimeout(this.resizeTimeout); + this.resizeTimeout = null; + } } /** diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index 3411f28eb57..37d8a490723 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -124,6 +124,7 @@ export class Datetime implements ComponentInterface { private maxParts?: any; private todayParts!: DatetimeParts; private defaultParts!: DatetimeParts; + private loadTimeout: ReturnType | undefined; private prevPresentation: string | null = null; @@ -1077,6 +1078,9 @@ export class Datetime implements ComponentInterface { this.clearFocusVisible(); this.clearFocusVisible = undefined; } + if (this.loadTimeout) { + clearTimeout(this.loadTimeout); + } } /** @@ -1175,7 +1179,7 @@ export class Datetime implements ComponentInterface { * * We schedule this after everything has had a chance to run. */ - setTimeout(() => { + this.loadTimeout = setTimeout(() => { this.ensureReadyIfVisible(); }, 100); diff --git a/core/src/components/fab-list/fab-list.tsx b/core/src/components/fab-list/fab-list.tsx index 1273673a917..1803f7f2c30 100644 --- a/core/src/components/fab-list/fab-list.tsx +++ b/core/src/components/fab-list/fab-list.tsx @@ -10,6 +10,7 @@ import { getIonMode } from '../../global/ionic-global'; }) export class FabList implements ComponentInterface { @Element() el!: HTMLIonFabElement; + private activateTimeouts: ReturnType[] = []; /** * If `true`, the fab list will show all fab buttons in the list. @@ -18,12 +19,15 @@ export class FabList implements ComponentInterface { @Watch('activated') protected activatedChanged(activated: boolean) { + this.activateTimeouts.forEach(clearTimeout); + this.activateTimeouts = []; + const fabs = Array.from(this.el.querySelectorAll('ion-fab-button')); // if showing the fabs add a timeout, else show immediately const timeout = activated ? 30 : 0; fabs.forEach((fab, i) => { - setTimeout(() => (fab.show = activated), i * timeout); + this.activateTimeouts.push(setTimeout(() => (fab.show = activated), i * timeout)); }); } @@ -32,6 +36,11 @@ export class FabList implements ComponentInterface { */ @Prop() side: 'start' | 'end' | 'top' | 'bottom' = 'bottom'; + disconnectedCallback() { + this.activateTimeouts.forEach(clearTimeout); + this.activateTimeouts = []; + } + render() { const mode = getIonMode(this); return ( diff --git a/core/src/components/img/img.tsx b/core/src/components/img/img.tsx index c83f0fab3cf..0afce19d1d2 100644 --- a/core/src/components/img/img.tsx +++ b/core/src/components/img/img.tsx @@ -16,6 +16,7 @@ import { getIonMode } from '../../global/ionic-global'; export class Img implements ComponentInterface { private io?: IntersectionObserver; private inheritedAttributes: Attributes = {}; + private loadTimeout: ReturnType | undefined; @Element() el!: HTMLElement; @@ -56,7 +57,17 @@ export class Img implements ComponentInterface { this.addIO(); } + disconnectedCallback() { + if (this.loadTimeout) { + clearTimeout(this.loadTimeout); + } + } + private addIO() { + if (this.loadTimeout) { + clearTimeout(this.loadTimeout); + this.loadTimeout = undefined; + } if (this.src === undefined) { return; } @@ -82,7 +93,7 @@ export class Img implements ComponentInterface { this.io.observe(this.el); } else { // fall back to setTimeout for Safari and IE - setTimeout(() => this.load(), 200); + this.loadTimeout = setTimeout(() => this.load(), 200); } } diff --git a/core/src/components/label/label.tsx b/core/src/components/label/label.tsx index 6f8ad05a4a7..cea7a844ec4 100644 --- a/core/src/components/label/label.tsx +++ b/core/src/components/label/label.tsx @@ -18,6 +18,7 @@ import type { Color, StyleEventDetail } from '../../interface'; }) export class Label implements ComponentInterface { private inRange = false; + private loadTimeout: ReturnType | undefined; @Element() el!: HTMLElement; @@ -56,12 +57,18 @@ export class Label implements ComponentInterface { componentDidLoad() { if (this.noAnimate) { - setTimeout(() => { + this.loadTimeout = setTimeout(() => { this.noAnimate = false; }, 1000); } } + disconnectedCallback() { + if (this.loadTimeout) { + clearTimeout(this.loadTimeout); + } + } + @Watch('color') colorChanged() { this.emitColor(); diff --git a/core/src/components/searchbar/searchbar.tsx b/core/src/components/searchbar/searchbar.tsx index 0c038962a53..2830d75b73c 100644 --- a/core/src/components/searchbar/searchbar.tsx +++ b/core/src/components/searchbar/searchbar.tsx @@ -30,6 +30,8 @@ export class Searchbar implements ComponentInterface { private originalIonInput?: EventEmitter; private inputId = `ion-searchbar-${searchbarIds++}`; private inheritedAttributes: Attributes = {}; + private loadTimeout: ReturnType | undefined; + private clearTimeout: ReturnType | undefined; /** * The value of the input when the textarea is focused. @@ -288,11 +290,20 @@ export class Searchbar implements ComponentInterface { this.positionElements(); this.debounceChanged(); - setTimeout(() => { + this.loadTimeout = setTimeout(() => { this.noAnimate = false; }, 300); } + disconnectedCallback() { + if (this.loadTimeout) { + clearTimeout(this.loadTimeout); + } + if (this.clearTimeout) { + clearTimeout(this.clearTimeout); + } + } + private emitStyle() { this.ionStyle.emit({ searchbar: true, @@ -358,12 +369,15 @@ export class Searchbar implements ComponentInterface { * Clears the input field and triggers the control change. */ private onClearInput = async (shouldFocus?: boolean) => { + if (this.clearTimeout) { + clearTimeout(this.clearTimeout); + } this.ionClear.emit(); return new Promise((resolve) => { // setTimeout() fixes https://github.com/ionic-team/ionic-framework/issues/7527 // wait for 4 frames - setTimeout(() => { + this.clearTimeout = setTimeout(() => { const value = this.getValue(); if (value !== '') { this.value = ''; From 814c2e5ccd6d5bfda12bdf13a566cd66ff830d5b Mon Sep 17 00:00:00 2001 From: Shane Date: Thu, 19 Feb 2026 08:57:48 -0800 Subject: [PATCH 103/126] feat(refresher): add ionPullStart and ionPullEnd events (#30946) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue number: resolves #24524 --------- ## What is the current behavior? There is no way to know when the refresher has fully returned to its inactive state after a pull gesture. The existing `ionStart` event fires when pulling begins, but there is no corresponding end event. Watching the progress property is insufficient because hitting zero doesn’t necessarily mean the user has completed the pull gesture. ## What is the new behavior? Two new events are added to the refresher component: - `ionPullStart`: Emitted when the user begins pulling down (same as `ionStart`, which is now deprecated) - `ionPullEnd`: Emitted when the refresher returns to inactive state, with a `reason` property of `'complete'` or `'cancel'` indicating whether the refresh operation completed successfully or was cancelled This allows you to know both when the user is no longer touching the screen AND when the refresher is ready to be pulled again. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information Test page: https://ionic-framework-git-fw-6591-ionic1.vercel.app/src/components/refresher/test/basic/index.html Current dev build: ``` 8.7.17-dev.11770319814.172b4f50 ``` --------- Co-authored-by: Patrick McDonald <764290+WhatsThatItsPat@users.noreply.github.com> --- core/api.txt | 2 + core/src/components.d.ts | 21 +++++-- .../refresher/refresher-interface.ts | 9 +++ core/src/components/refresher/refresher.tsx | 50 ++++++++++++++++- .../refresher/test/basic/index.html | 11 ++++ .../refresher/test/basic/refresher.e2e.ts | 55 ++++++++++++++++++- core/src/interface.d.ts | 2 +- packages/angular/src/directives/proxies.ts | 14 ++++- .../standalone/src/directives/proxies.ts | 14 ++++- packages/vue/src/proxies.ts | 8 ++- 10 files changed, 172 insertions(+), 14 deletions(-) diff --git a/core/api.txt b/core/api.txt index 33582d0fe55..1a74b49cbe5 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1493,6 +1493,8 @@ ion-refresher,method,cancel,cancel() => Promise ion-refresher,method,complete,complete() => Promise ion-refresher,method,getProgress,getProgress() => Promise ion-refresher,event,ionPull,void,true +ion-refresher,event,ionPullEnd,RefresherPullEndEventDetail,true +ion-refresher,event,ionPullStart,void,true ion-refresher,event,ionRefresh,RefresherEventDetail,true ion-refresher,event,ionStart,void,true diff --git a/core/src/components.d.ts b/core/src/components.d.ts index d690184aff6..582cbfcd3ae 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -29,7 +29,7 @@ import { PickerButton, PickerColumn } from "./components/picker-legacy/picker-in import { PopoverSize, PositionAlign, PositionReference, PositionSide, TriggerAction } from "./components/popover/popover-interface"; import { RadioGroupChangeEventDetail, RadioGroupCompareFn } from "./components/radio-group/radio-group-interface"; import { PinFormatter, RangeChangeEventDetail, RangeKnobMoveEndEventDetail, RangeKnobMoveStartEventDetail, RangeValue } from "./components/range/range-interface"; -import { RefresherEventDetail } from "./components/refresher/refresher-interface"; +import { RefresherEventDetail, RefresherPullEndEventDetail } from "./components/refresher/refresher-interface"; import { ItemReorderEventDetail, ReorderEndEventDetail, ReorderMoveEventDetail } from "./components/reorder-group/reorder-group-interface"; import { NavigationHookCallback } from "./components/route/route-interface"; import { SearchbarChangeEventDetail, SearchbarInputEventDetail } from "./components/searchbar/searchbar-interface"; @@ -67,7 +67,7 @@ export { PickerButton, PickerColumn } from "./components/picker-legacy/picker-in export { PopoverSize, PositionAlign, PositionReference, PositionSide, TriggerAction } from "./components/popover/popover-interface"; export { RadioGroupChangeEventDetail, RadioGroupCompareFn } from "./components/radio-group/radio-group-interface"; export { PinFormatter, RangeChangeEventDetail, RangeKnobMoveEndEventDetail, RangeKnobMoveStartEventDetail, RangeValue } from "./components/range/range-interface"; -export { RefresherEventDetail } from "./components/refresher/refresher-interface"; +export { RefresherEventDetail, RefresherPullEndEventDetail } from "./components/refresher/refresher-interface"; export { ItemReorderEventDetail, ReorderEndEventDetail, ReorderMoveEventDetail } from "./components/reorder-group/reorder-group-interface"; export { NavigationHookCallback } from "./components/route/route-interface"; export { SearchbarChangeEventDetail, SearchbarInputEventDetail } from "./components/searchbar/searchbar-interface"; @@ -2745,7 +2745,7 @@ export namespace Components { */ "mode"?: "ios" | "md"; /** - * How much to multiply the pull speed by. To slow the pull animation down, pass a number less than `1`. To speed up the pull, pass a number greater than `1`. The default value is `1` which is equal to the speed of the cursor. If a negative value is passed in, the factor will be `1` instead. For example: If the value passed is `1.2` and the content is dragged by `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels (an increase of 20 percent). If the value passed is `0.8`, the dragged amount will be `8` pixels, less than the amount the cursor has moved. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * How much to multiply the pull speed by. To slow the pull animation down, pass a number less than `1`. To speed up the pull, pass a number greater than `1`. The default value is `1` which is equal to the speed of the cursor. If a negative value is passed in, the factor will be `1` instead. For example, If the value passed is `1.2` and the content is dragged by `10` pixels, instead of `10` pixels, the content will be pulled by `12` pixels (an increase of 20 percent). If the value passed is `0.8`, the dragged amount will be `8` pixels, less than the amount the cursor has moved. Does not apply when the refresher content uses a spinner, enabling the native refresher. * @default 1 */ "pullFactor": number; @@ -4754,6 +4754,8 @@ declare global { "ionRefresh": RefresherEventDetail; "ionPull": void; "ionStart": void; + "ionPullStart": void; + "ionPullEnd": RefresherPullEndEventDetail; } interface HTMLIonRefresherElement extends Components.IonRefresher, HTMLStencilElement { addEventListener(type: K, listener: (this: HTMLIonRefresherElement, ev: IonRefresherCustomEvent) => any, options?: boolean | AddEventListenerOptions): void; @@ -8014,16 +8016,25 @@ declare namespace LocalJSX { * Emitted while the user is pulling down the content and exposing the refresher. */ "onIonPull"?: (event: IonRefresherCustomEvent) => void; + /** + * Emitted when the refresher has returned to the inactive state after a pull gesture. This fires whether the refresh completed successfully or was canceled. + */ + "onIonPullEnd"?: (event: IonRefresherCustomEvent) => void; + /** + * Emitted when the user begins to start pulling down. + */ + "onIonPullStart"?: (event: IonRefresherCustomEvent) => void; /** * Emitted when the user lets go of the content and has pulled down further than the `pullMin` or pulls the content down and exceeds the pullMax. Updates the refresher state to `refreshing`. The `complete()` method should be called when the async operation has completed. */ "onIonRefresh"?: (event: IonRefresherCustomEvent) => void; /** - * Emitted when the user begins to start pulling down. + * Emitted when the user begins to start pulling down. TODO(FW-7044): Remove this in a major release + * @deprecated Use `ionPullStart` instead. */ "onIonStart"?: (event: IonRefresherCustomEvent) => void; /** - * How much to multiply the pull speed by. To slow the pull animation down, pass a number less than `1`. To speed up the pull, pass a number greater than `1`. The default value is `1` which is equal to the speed of the cursor. If a negative value is passed in, the factor will be `1` instead. For example: If the value passed is `1.2` and the content is dragged by `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels (an increase of 20 percent). If the value passed is `0.8`, the dragged amount will be `8` pixels, less than the amount the cursor has moved. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * How much to multiply the pull speed by. To slow the pull animation down, pass a number less than `1`. To speed up the pull, pass a number greater than `1`. The default value is `1` which is equal to the speed of the cursor. If a negative value is passed in, the factor will be `1` instead. For example, If the value passed is `1.2` and the content is dragged by `10` pixels, instead of `10` pixels, the content will be pulled by `12` pixels (an increase of 20 percent). If the value passed is `0.8`, the dragged amount will be `8` pixels, less than the amount the cursor has moved. Does not apply when the refresher content uses a spinner, enabling the native refresher. * @default 1 */ "pullFactor"?: number; diff --git a/core/src/components/refresher/refresher-interface.ts b/core/src/components/refresher/refresher-interface.ts index 20fd97e1823..9866a4cc86f 100644 --- a/core/src/components/refresher/refresher-interface.ts +++ b/core/src/components/refresher/refresher-interface.ts @@ -2,7 +2,16 @@ export interface RefresherEventDetail { complete(): void; } +export interface RefresherPullEndEventDetail { + reason: 'complete' | 'cancel'; +} + export interface RefresherCustomEvent extends CustomEvent { detail: RefresherEventDetail; target: HTMLIonRefresherElement; } + +export interface RefresherPullEndCustomEvent extends CustomEvent { + detail: RefresherPullEndEventDetail; + target: HTMLIonRefresherElement; +} diff --git a/core/src/components/refresher/refresher.tsx b/core/src/components/refresher/refresher.tsx index 77f72f1a68b..2b933bc5f77 100644 --- a/core/src/components/refresher/refresher.tsx +++ b/core/src/components/refresher/refresher.tsx @@ -14,7 +14,7 @@ import { ImpactStyle, hapticImpact } from '@utils/native/haptic'; import { getIonMode } from '../../global/ionic-global'; import type { Animation, Gesture, GestureDetail } from '../../interface'; -import type { RefresherEventDetail } from './refresher-interface'; +import type { RefresherEventDetail, RefresherPullEndEventDetail } from './refresher-interface'; import { createPullingAnimation, createSnapBackAnimation, @@ -107,8 +107,8 @@ export class Refresher implements ComponentInterface { * than `1`. The default value is `1` which is equal to the speed of the cursor. * If a negative value is passed in, the factor will be `1` instead. * - * For example: If the value passed is `1.2` and the content is dragged by - * `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels + * For example, If the value passed is `1.2` and the content is dragged by + * `10` pixels, instead of `10` pixels, the content will be pulled by `12` pixels * (an increase of 20 percent). If the value passed is `0.8`, the dragged amount * will be `8` pixels, less than the amount the cursor has moved. * @@ -143,9 +143,24 @@ export class Refresher implements ComponentInterface { /** * Emitted when the user begins to start pulling down. + * TODO(FW-7044): Remove this in a major release + * + * @deprecated Use `ionPullStart` instead. */ @Event() ionStart!: EventEmitter; + /** + * Emitted when the user begins to start pulling down. + */ + @Event() ionPullStart!: EventEmitter; + + /** + * Emitted when the refresher has returned to the inactive state + * after a pull gesture. This fires whether the refresh completed + * successfully or was canceled. + */ + @Event() ionPullEnd!: EventEmitter; + private async checkNativeRefresher() { const useNativeRefresher = await shouldUseNativeRefresher(this.el, getIonMode(this)); if (useNativeRefresher && !this.nativeRefresher) { @@ -182,6 +197,10 @@ export class Refresher implements ComponentInterface { this.progress = 0; this.state = RefresherState.Inactive; + + this.ionPullEnd.emit({ + reason: state === RefresherState.Completing ? 'complete' : 'cancel', + }); } private async setupiOSNativeRefresher( @@ -224,6 +243,7 @@ export class Refresher implements ComponentInterface { if (!this.didStart) { this.didStart = true; this.ionStart.emit(); + this.ionPullStart.emit(); } // emit "pulling" on every move @@ -308,6 +328,7 @@ export class Refresher implements ComponentInterface { this.lastVelocityY = ev.velocityY; }, onEnd: () => { + const hadStarted = this.didStart; this.pointerDown = false; this.didStart = false; @@ -316,6 +337,12 @@ export class Refresher implements ComponentInterface { this.needsCompletion = false; } else if (this.didRefresh) { readTask(() => translateElement(this.elementToTransform, `${this.el.clientHeight}px`)); + } else if (hadStarted) { + /** + * User started pulling but released before reaching the refresh threshold. + * Emit ionPullEnd to complete the event pair. + */ + this.ionPullEnd.emit({ reason: 'cancel' }); } }, }); @@ -378,6 +405,7 @@ export class Refresher implements ComponentInterface { ev.data.animation = animation; animation.progressStart(false, 0); this.ionStart.emit(); + this.ionPullStart.emit(); this.animations.push(animation); return; @@ -405,6 +433,7 @@ export class Refresher implements ComponentInterface { this.animations = []; this.gesture!.enable(true); this.state = RefresherState.Inactive; + this.ionPullEnd.emit({ reason: 'cancel' }); }); return; } @@ -684,6 +713,7 @@ export class Refresher implements ComponentInterface { if (!this.didStart) { this.didStart = true; this.ionStart.emit(); + this.ionPullStart.emit(); } // emit "pulling" on every move @@ -731,6 +761,16 @@ export class Refresher implements ComponentInterface { * available right away. */ this.restoreOverflowStyle(); + + /** + * If ionPullStart was emitted, we need to emit ionPullEnd + * even though the gesture was aborted before reaching the + * pulling threshold. + */ + if (this.didStart) { + this.didStart = false; + this.ionPullEnd.emit({ reason: 'cancel' }); + } } } @@ -783,6 +823,10 @@ export class Refresher implements ComponentInterface { if (this.contentFullscreen && this.backgroundContentEl) { this.backgroundContentEl?.style.removeProperty('--offset-top'); } + + this.ionPullEnd.emit({ + reason: state === RefresherState.Completing ? 'complete' : 'cancel', + }); }, 600); // reset the styles on the scroll element diff --git a/core/src/components/refresher/test/basic/index.html b/core/src/components/refresher/test/basic/index.html index 60982df8670..fdc65b20983 100644 --- a/core/src/components/refresher/test/basic/index.html +++ b/core/src/components/refresher/test/basic/index.html @@ -56,6 +56,17 @@ window.dispatchEvent(new CustomEvent('ionRefreshComplete')); }); + // Event listeners for new ionPullStart and ionPullEnd events + refresher.addEventListener('ionPullStart', function () { + console.log('ionPullStart fired'); + window.dispatchEvent(new CustomEvent('ionPullStartFired')); + }); + + refresher.addEventListener('ionPullEnd', function (event) { + console.log('ionPullEnd fired', event.detail); + window.dispatchEvent(new CustomEvent('ionPullEndFired', { detail: event.detail })); + }); + function render() { let html = ''; for (let item of items) { diff --git a/core/src/components/refresher/test/basic/refresher.e2e.ts b/core/src/components/refresher/test/basic/refresher.e2e.ts index 70f38bc88e7..10d6e62d32e 100644 --- a/core/src/components/refresher/test/basic/refresher.e2e.ts +++ b/core/src/components/refresher/test/basic/refresher.e2e.ts @@ -1,5 +1,5 @@ import { expect } from '@playwright/test'; -import { configs, test } from '@utils/test/playwright'; +import { configs, dragElementByYAxis, test } from '@utils/test/playwright'; import { pullToRefresh } from '../test.utils'; @@ -22,6 +22,37 @@ configs({ directions: ['ltr'] }).forEach(({ title, config }) => { expect(await items.count()).toBe(60); }); + + test('should emit ionPullStart and ionPullEnd with reason complete', async ({ page }) => { + const ionPullStartEvent = await page.spyOnEvent('ionPullStartFired'); + const ionPullEndEvent = await page.spyOnEvent('ionPullEndFired'); + + await pullToRefresh(page); + + // Wait for the close animation to complete + await page.waitForTimeout(700); + + expect(ionPullStartEvent).toHaveReceivedEventTimes(1); + expect(ionPullEndEvent).toHaveReceivedEventTimes(1); + expect(ionPullEndEvent).toHaveReceivedEventDetail({ reason: 'complete' }); + }); + + test('should emit ionPullEnd with reason cancel when pull is released early', async ({ page }) => { + const target = page.locator('body'); + + const ionPullStartEvent = await page.spyOnEvent('ionPullStartFired'); + const ionPullEndEvent = await page.spyOnEvent('ionPullEndFired'); + + // Pull down only 40px (less than pullMin of 60px) to trigger cancel + await dragElementByYAxis(target, page, 40); + + // Wait for the cancel animation to complete + await page.waitForTimeout(700); + + expect(ionPullStartEvent).toHaveReceivedEventTimes(1); + expect(ionPullEndEvent).toHaveReceivedEventTimes(1); + expect(ionPullEndEvent).toHaveReceivedEventDetail({ reason: 'cancel' }); + }); }); test.describe('native refresher', () => { @@ -41,6 +72,28 @@ configs({ directions: ['ltr'] }).forEach(({ title, config }) => { expect(await items.count()).toBe(60); }); + + test('should emit ionPullStart and ionPullEnd with reason complete', async ({ page }) => { + const refresherContent = page.locator('ion-refresher-content'); + refresherContent.evaluateHandle((el: any) => { + // Resets the pullingIcon to enable the native refresher + el.pullingIcon = undefined; + }); + + await page.waitForChanges(); + + const ionPullStartEvent = await page.spyOnEvent('ionPullStartFired'); + const ionPullEndEvent = await page.spyOnEvent('ionPullEndFired'); + + await pullToRefresh(page); + + // Wait for the reset animation to complete (native refresher takes longer due to CSS transitions) + await page.waitForTimeout(1500); + + expect(ionPullStartEvent).toHaveReceivedEventTimes(1); + expect(ionPullEndEvent).toHaveReceivedEventTimes(1); + expect(ionPullEndEvent).toHaveReceivedEventDetail({ reason: 'complete' }); + }); }); }); }); diff --git a/core/src/interface.d.ts b/core/src/interface.d.ts index 70be4af1431..61489837cf7 100644 --- a/core/src/interface.d.ts +++ b/core/src/interface.d.ts @@ -24,7 +24,7 @@ export { PopoverOptions } from './components/popover/popover-interface'; export { RadioGroupCustomEvent } from './components/radio-group/radio-group-interface'; export { RangeCustomEvent, PinFormatter } from './components/range/range-interface'; export { RouterCustomEvent } from './components/router/utils/interface'; -export { RefresherCustomEvent } from './components/refresher/refresher-interface'; +export { RefresherCustomEvent, RefresherPullEndCustomEvent } from './components/refresher/refresher-interface'; export { ItemReorderCustomEvent, ReorderEndCustomEvent, diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index d5b1a91baca..3d17a936026 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -1810,12 +1810,13 @@ export class IonRefresher { constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { c.detach(); this.el = r.nativeElement; - proxyOutputs(this, this.el, ['ionRefresh', 'ionPull', 'ionStart']); + proxyOutputs(this, this.el, ['ionRefresh', 'ionPull', 'ionStart', 'ionPullStart', 'ionPullEnd']); } } import type { RefresherEventDetail as IIonRefresherRefresherEventDetail } from '@ionic/core'; +import type { RefresherPullEndEventDetail as IIonRefresherRefresherPullEndEventDetail } from '@ionic/core'; export declare interface IonRefresher extends Components.IonRefresher { /** @@ -1831,8 +1832,19 @@ called when the async operation has completed. ionPull: EventEmitter>; /** * Emitted when the user begins to start pulling down. +TODO(FW-7044): Remove this in a major release @deprecated Use `ionPullStart` instead. */ ionStart: EventEmitter>; + /** + * Emitted when the user begins to start pulling down. + */ + ionPullStart: EventEmitter>; + /** + * Emitted when the refresher has returned to the inactive state +after a pull gesture. This fires whether the refresh completed +successfully or was canceled. + */ + ionPullEnd: EventEmitter>; } diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index 3d2693c0b83..d92609b5501 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -1664,12 +1664,13 @@ export class IonRefresher { constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { c.detach(); this.el = r.nativeElement; - proxyOutputs(this, this.el, ['ionRefresh', 'ionPull', 'ionStart']); + proxyOutputs(this, this.el, ['ionRefresh', 'ionPull', 'ionStart', 'ionPullStart', 'ionPullEnd']); } } import type { RefresherEventDetail as IIonRefresherRefresherEventDetail } from '@ionic/core/components'; +import type { RefresherPullEndEventDetail as IIonRefresherRefresherPullEndEventDetail } from '@ionic/core/components'; export declare interface IonRefresher extends Components.IonRefresher { /** @@ -1685,8 +1686,19 @@ called when the async operation has completed. ionPull: EventEmitter>; /** * Emitted when the user begins to start pulling down. +TODO(FW-7044): Remove this in a major release @deprecated Use `ionPullStart` instead. */ ionStart: EventEmitter>; + /** + * Emitted when the user begins to start pulling down. + */ + ionPullStart: EventEmitter>; + /** + * Emitted when the refresher has returned to the inactive state +after a pull gesture. This fires whether the refresh completed +successfully or was canceled. + */ + ionPullEnd: EventEmitter>; } diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 31d13970a4c..735a7906974 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -783,11 +783,15 @@ export const IonRefresher: StencilVueComponent = /*@__PURE__*/ 'disabled', 'ionRefresh', 'ionPull', - 'ionStart' + 'ionStart', + 'ionPullStart', + 'ionPullEnd' ], [ 'ionRefresh', 'ionPull', - 'ionStart' + 'ionStart', + 'ionPullStart', + 'ionPullEnd' ]); From 682a17ebb754da7714989623cf84b75e715e20e1 Mon Sep 17 00:00:00 2001 From: OS-jacobbell <228905018+OS-jacobbell@users.noreply.github.com> Date: Thu, 19 Feb 2026 10:03:48 -0700 Subject: [PATCH 104/126] fix(radio-group): prevent DOMException and NotFoundError when filtering radios (#30958) resolves #30279 resolves #30359 ## What is the current behavior? While Ionic's `stencil.config.ts` sets `experimentalSlotFixes: true`, the fixes never get applied at runtime. Ionic is using an external runtime, so Ionic components import `defineCustomElement` from `@stencil/core/internal/client` at runtime and this code has no awareness of the project's stencil configuration. This leads to a `NotFoundError` (Failed to execute 'removeChild' on 'Node') when filtering or dynamically removing radios in an `ion-radio-group`. The error occurs because `ion-radio-group` wraps its slotted content in an internal `
`. ## What is the new behavior? By setting `externalRuntime: false`, Stencil generates a project-specific file with `defineCustomElement` that components import. This file has the project's build settings baked in, correctly applying slot fixes. Additionally, the internal wrapper `
` around the slotted content in `ion-radio-group` is removed. With slot fixes correctly applied and the wrapper removed, radios can be filtered or dynamically removed without triggering `NotFoundError` or `DOMExceptions`. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information External Runtime is enabled by default and designed for projects that import Stencil components from multiple sources. This is flawed because those components will not be running with the runtime settings for which they were made. --- core/src/components/radio-group/radio-group.scss | 4 ---- core/src/components/radio-group/radio-group.tsx | 9 +-------- core/stencil.config.ts | 3 ++- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/core/src/components/radio-group/radio-group.scss b/core/src/components/radio-group/radio-group.scss index 3eceab4405d..817db37c4ea 100644 --- a/core/src/components/radio-group/radio-group.scss +++ b/core/src/components/radio-group/radio-group.scss @@ -8,10 +8,6 @@ ion-radio-group { vertical-align: top; } -.radio-group-wrapper { - display: inline; -} - // Radio Group: Top // -------------------------------------------------- diff --git a/core/src/components/radio-group/radio-group.tsx b/core/src/components/radio-group/radio-group.tsx index e060c2c7201..88ff48e2c4c 100644 --- a/core/src/components/radio-group/radio-group.tsx +++ b/core/src/components/radio-group/radio-group.tsx @@ -353,14 +353,7 @@ export class RadioGroup implements ComponentInterface { class={mode} > {this.renderHintText()} - {/* - TODO(FW-6279): Wrapping the slot in a div is a workaround due to a - Stencil issue. Without the wrapper, the children radio will fire the - blur event on focus, instead of waiting for them to be blurred. - */} -
- -
+ ); } diff --git a/core/stencil.config.ts b/core/stencil.config.ts index f5f824e29a8..1e457e264c6 100644 --- a/core/stencil.config.ts +++ b/core/stencil.config.ts @@ -226,7 +226,8 @@ export const config: Config = { dest: 'components', warn: true }], - includeGlobalScripts: false + includeGlobalScripts: false, + externalRuntime: false, }, { type: 'docs-json', From 23e998b731ccb224062734162d8237d6f9f0fced Mon Sep 17 00:00:00 2001 From: OS-jacobbell <228905018+OS-jacobbell@users.noreply.github.com> Date: Thu, 19 Feb 2026 13:27:25 -0700 Subject: [PATCH 105/126] chore(deps): update stencil/core to 4.43.0 (#30960) Stencil core updated to 4.43.0. --- core/api.txt | 10 +- core/package-lock.json | 43 +- core/package.json | 2 +- core/src/components.d.ts | 1119 +++++++++++++++++++++++++++++++------- 4 files changed, 961 insertions(+), 213 deletions(-) diff --git a/core/api.txt b/core/api.txt index 1a74b49cbe5..fd21aed675a 100644 --- a/core/api.txt +++ b/core/api.txt @@ -704,7 +704,7 @@ ion-infinite-scroll-content,prop,loadingText,IonicSafeString | string | undefine ion-input,scoped ion-input,prop,autocapitalize,string,'off',false,false -ion-input,prop,autocomplete,"name" | "email" | "tel" | "url" | "on" | "off" | "honorific-prefix" | "given-name" | "additional-name" | "family-name" | "honorific-suffix" | "nickname" | "username" | "new-password" | "current-password" | "one-time-code" | "organization-title" | "organization" | "street-address" | "address-line1" | "address-line2" | "address-line3" | "address-level4" | "address-level3" | "address-level2" | "address-level1" | "country" | "country-name" | "postal-code" | "cc-name" | "cc-given-name" | "cc-additional-name" | "cc-family-name" | "cc-number" | "cc-exp" | "cc-exp-month" | "cc-exp-year" | "cc-csc" | "cc-type" | "transaction-currency" | "transaction-amount" | "language" | "bday" | "bday-day" | "bday-month" | "bday-year" | "sex" | "tel-country-code" | "tel-national" | "tel-area-code" | "tel-local" | "tel-extension" | "impp" | "photo",'off',false,false +ion-input,prop,autocomplete,"additional-name" | "address-level1" | "address-level2" | "address-level3" | "address-level4" | "address-line1" | "address-line2" | "address-line3" | "bday" | "bday-day" | "bday-month" | "bday-year" | "cc-additional-name" | "cc-csc" | "cc-exp" | "cc-exp-month" | "cc-exp-year" | "cc-family-name" | "cc-given-name" | "cc-name" | "cc-number" | "cc-type" | "country" | "country-name" | "current-password" | "email" | "family-name" | "given-name" | "honorific-prefix" | "honorific-suffix" | "impp" | "language" | "name" | "new-password" | "nickname" | "off" | "on" | "one-time-code" | "organization" | "organization-title" | "photo" | "postal-code" | "sex" | "street-address" | "tel" | "tel-area-code" | "tel-country-code" | "tel-extension" | "tel-local" | "tel-national" | "transaction-amount" | "transaction-currency" | "url" | "username",'off',false,false ion-input,prop,autocorrect,"off" | "on",'off',false,false ion-input,prop,autofocus,boolean,false,false,false ion-input,prop,clearInput,boolean,false,false,false @@ -1210,7 +1210,7 @@ ion-nav,shadow ion-nav,prop,animated,boolean,true,false,false ion-nav,prop,animation,((baseEl: any, opts?: any) => Animation) | undefined,undefined,false,false ion-nav,prop,root,Function | HTMLElement | ViewController | null | string | undefined,undefined,false,false -ion-nav,prop,rootParams,undefined | { [key: string]: any; },undefined,false,false +ion-nav,prop,rootParams,T | undefined,undefined,false,false ion-nav,prop,swipeGesture,boolean | undefined,undefined,false,false ion-nav,method,canGoBack,canGoBack(view?: ViewController) => Promise ion-nav,method,getActive,getActive() => Promise @@ -1231,7 +1231,7 @@ ion-nav,event,ionNavWillChange,void,false ion-nav-link,none ion-nav-link,prop,component,Function | HTMLElement | ViewController | null | string | undefined,undefined,false,false -ion-nav-link,prop,componentProps,undefined | { [key: string]: any; },undefined,false,false +ion-nav-link,prop,componentProps,T | undefined,undefined,false,false ion-nav-link,prop,routerAnimation,((baseEl: any, opts?: any) => Animation) | undefined,undefined,false,false ion-nav-link,prop,routerDirection,"back" | "forward" | "root",'forward',false,false @@ -1324,7 +1324,7 @@ ion-popover,prop,animated,boolean,true,false,false ion-popover,prop,arrow,boolean,true,false,false ion-popover,prop,backdropDismiss,boolean,true,false,false ion-popover,prop,component,Function | HTMLElement | null | string | undefined,undefined,false,false -ion-popover,prop,componentProps,undefined | { [key: string]: any; },undefined,false,false +ion-popover,prop,componentProps,T | undefined,undefined,false,false ion-popover,prop,dismissOnSelect,boolean,false,false,false ion-popover,prop,enterAnimation,((baseEl: any, opts?: any) => Animation) | undefined,undefined,false,false ion-popover,prop,event,any,undefined,false,false @@ -1560,7 +1560,7 @@ ion-row,shadow ion-searchbar,scoped ion-searchbar,prop,animated,boolean,false,false,false ion-searchbar,prop,autocapitalize,string,'off',false,false -ion-searchbar,prop,autocomplete,"name" | "email" | "tel" | "url" | "on" | "off" | "honorific-prefix" | "given-name" | "additional-name" | "family-name" | "honorific-suffix" | "nickname" | "username" | "new-password" | "current-password" | "one-time-code" | "organization-title" | "organization" | "street-address" | "address-line1" | "address-line2" | "address-line3" | "address-level4" | "address-level3" | "address-level2" | "address-level1" | "country" | "country-name" | "postal-code" | "cc-name" | "cc-given-name" | "cc-additional-name" | "cc-family-name" | "cc-number" | "cc-exp" | "cc-exp-month" | "cc-exp-year" | "cc-csc" | "cc-type" | "transaction-currency" | "transaction-amount" | "language" | "bday" | "bday-day" | "bday-month" | "bday-year" | "sex" | "tel-country-code" | "tel-national" | "tel-area-code" | "tel-local" | "tel-extension" | "impp" | "photo",'off',false,false +ion-searchbar,prop,autocomplete,"additional-name" | "address-level1" | "address-level2" | "address-level3" | "address-level4" | "address-line1" | "address-line2" | "address-line3" | "bday" | "bday-day" | "bday-month" | "bday-year" | "cc-additional-name" | "cc-csc" | "cc-exp" | "cc-exp-month" | "cc-exp-year" | "cc-family-name" | "cc-given-name" | "cc-name" | "cc-number" | "cc-type" | "country" | "country-name" | "current-password" | "email" | "family-name" | "given-name" | "honorific-prefix" | "honorific-suffix" | "impp" | "language" | "name" | "new-password" | "nickname" | "off" | "on" | "one-time-code" | "organization" | "organization-title" | "photo" | "postal-code" | "sex" | "street-address" | "tel" | "tel-area-code" | "tel-country-code" | "tel-extension" | "tel-local" | "tel-national" | "transaction-amount" | "transaction-currency" | "url" | "username",'off',false,false ion-searchbar,prop,autocorrect,"off" | "on",'off',false,false ion-searchbar,prop,cancelButtonIcon,string,config.get('backButtonIcon', arrowBackSharp) as string,false,false ion-searchbar,prop,cancelButtonText,string,'Cancel',false,false diff --git a/core/package-lock.json b/core/package-lock.json index 0bd942fdde6..69d5066d1be 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -9,7 +9,7 @@ "version": "8.7.16", "license": "MIT", "dependencies": { - "@stencil/core": "4.38.0", + "@stencil/core": "4.43.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" }, @@ -94,6 +94,7 @@ "version": "7.16.12", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.16.8", @@ -633,6 +634,7 @@ "integrity": "sha512-250HTVd/W/KdMygoqaedisvNbHbpbQTN2Hy/8ZYGm1nAqE0Fx7sGss4l0nDg33STxEdDhtVRoL2fIaaiukKseA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -870,6 +872,7 @@ "version": "4.33.0", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -1805,8 +1808,11 @@ } }, "node_modules/@stencil/core": { - "version": "4.38.0", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz", + "integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==", "license": "MIT", + "peer": true, "bin": { "stencil": "bin/stencil" }, @@ -2231,6 +2237,7 @@ "version": "6.7.2", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.7.2", "@typescript-eslint/types": "6.7.2", @@ -2456,7 +2463,6 @@ "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/shared": "3.5.25", @@ -2471,7 +2477,6 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=0.12" }, @@ -2484,8 +2489,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@vue/compiler-dom": { "version": "3.5.25", @@ -2493,7 +2497,6 @@ "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-core": "3.5.25", "@vue/shared": "3.5.25" @@ -2505,7 +2508,6 @@ "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/compiler-core": "3.5.25", @@ -2523,8 +2525,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@vue/compiler-sfc/node_modules/postcss": { "version": "8.5.6", @@ -2546,7 +2547,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2562,7 +2562,6 @@ "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.25", "@vue/shared": "3.5.25" @@ -2574,7 +2573,6 @@ "integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/shared": "3.5.25" } @@ -2585,7 +2583,6 @@ "integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/shared": "3.5.25" @@ -2597,7 +2594,6 @@ "integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/runtime-core": "3.5.25", @@ -2611,7 +2607,6 @@ "integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-ssr": "3.5.25", "@vue/shared": "3.5.25" @@ -2625,8 +2620,7 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz", "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@zeit/schemas": { "version": "2.21.0", @@ -2649,6 +2643,7 @@ "version": "7.4.0", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3809,8 +3804,7 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/debug": { "version": "2.6.9", @@ -4104,6 +4098,7 @@ "version": "7.32.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -7299,7 +7294,6 @@ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } @@ -7621,7 +7615,6 @@ } ], "license": "MIT", - "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -7976,6 +7969,7 @@ "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "playwright-core": "cli.js" }, @@ -7987,6 +7981,7 @@ "version": "7.0.35", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -8092,6 +8087,7 @@ "version": "0.36.2", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "postcss": ">=5.0.0" } @@ -8140,6 +8136,7 @@ "version": "2.6.1", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -8497,6 +8494,7 @@ "version": "2.35.1", "dev": true, "license": "MIT", + "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -8718,7 +8716,6 @@ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=0.10.0" } diff --git a/core/package.json b/core/package.json index dc92468f9c1..0d06bcd0cfd 100644 --- a/core/package.json +++ b/core/package.json @@ -34,7 +34,7 @@ "loader/" ], "dependencies": { - "@stencil/core": "4.38.0", + "@stencil/core": "4.43.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" }, diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 582cbfcd3ae..0097f5628ac 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -5302,6 +5302,8 @@ declare global { } } declare namespace LocalJSX { + type OneOf = { [P in K]: PropT } & { [P in `attr:${K}` | `prop:${K}`]?: never } | { [P in `attr:${K}`]: AttrT } & { [P in K | `prop:${K}`]?: never } | { [P in `prop:${K}`]: PropT } & { [P in K | `attr:${K}`]?: never }; + interface IonAccordion { /** * If `true`, the accordion cannot be interacted with. @@ -9150,207 +9152,956 @@ declare namespace LocalJSX { */ "mode"?: "ios" | "md"; } + + interface IonAccordionAttributes { + "value": string; + "disabled": boolean; + "readonly": boolean; + "toggleIcon": string; + "toggleIconSlot": 'start' | 'end'; + } + interface IonAccordionGroupAttributes { + "animated": boolean; + "multiple": boolean; + "value": string | string[] | null; + "disabled": boolean; + "readonly": boolean; + "expand": 'compact' | 'inset'; + } + interface IonActionSheetAttributes { + "overlayIndex": number; + "hasController": boolean; + "keyboardClose": boolean; + "cssClass": string | string[]; + "backdropDismiss": boolean; + "header": string; + "subHeader": string; + "translucent": boolean; + "animated": boolean; + "isOpen": boolean; + "trigger": string | undefined; + } + interface IonAlertAttributes { + "overlayIndex": number; + "hasController": boolean; + "keyboardClose": boolean; + "cssClass": string | string[]; + "header": string; + "subHeader": string; + "message": string | IonicSafeString; + "backdropDismiss": boolean; + "translucent": boolean; + "animated": boolean; + "isOpen": boolean; + "trigger": string | undefined; + } + interface IonBackButtonAttributes { + "color": Color; + "defaultHref": string; + "disabled": boolean; + "icon": string | null; + "text": string | null; + "type": 'submit' | 'reset' | 'button'; + } + interface IonBackdropAttributes { + "visible": boolean; + "tappable": boolean; + "stopPropagation": boolean; + } + interface IonBadgeAttributes { + "color": Color; + } + interface IonBreadcrumbAttributes { + "collapsed": boolean; + "last": boolean; + "showCollapsedIndicator": boolean; + "color": Color; + "active": boolean; + "disabled": boolean; + "download": string | undefined; + "href": string | undefined; + "rel": string | undefined; + "separator": boolean | undefined; + "target": string | undefined; + "routerDirection": RouterDirection; + } + interface IonBreadcrumbsAttributes { + "color": Color; + "maxItems": number; + "itemsBeforeCollapse": number; + "itemsAfterCollapse": number; + } + interface IonButtonAttributes { + "color": Color; + "buttonType": string; + "disabled": boolean; + "expand": 'full' | 'block'; + "fill": 'clear' | 'outline' | 'solid' | 'default'; + "routerDirection": RouterDirection; + "download": string | undefined; + "href": string | undefined; + "rel": string | undefined; + "shape": 'round'; + "size": 'small' | 'default' | 'large'; + "strong": boolean; + "target": string | undefined; + "type": 'submit' | 'reset' | 'button'; + "form": string | HTMLFormElement; + } + interface IonButtonsAttributes { + "collapse": boolean; + } + interface IonCardAttributes { + "color": Color; + "button": boolean; + "type": 'submit' | 'reset' | 'button'; + "disabled": boolean; + "download": string | undefined; + "href": string | undefined; + "rel": string | undefined; + "routerDirection": RouterDirection; + "target": string | undefined; + } + interface IonCardHeaderAttributes { + "color": Color; + "translucent": boolean; + } + interface IonCardSubtitleAttributes { + "color": Color; + } + interface IonCardTitleAttributes { + "color": Color; + } + interface IonCheckboxAttributes { + "color": Color; + "name": string; + "checked": boolean; + "indeterminate": boolean; + "disabled": boolean; + "errorText": string; + "helperText": string; + "value": string; + "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; + "justify": 'start' | 'end' | 'space-between'; + "alignment": 'start' | 'center'; + "required": boolean; + } + interface IonChipAttributes { + "color": Color; + "outline": boolean; + "disabled": boolean; + } + interface IonColAttributes { + "offset": string; + "offsetXs": string; + "offsetSm": string; + "offsetMd": string; + "offsetLg": string; + "offsetXl": string; + "pull": string; + "pullXs": string; + "pullSm": string; + "pullMd": string; + "pullLg": string; + "pullXl": string; + "push": string; + "pushXs": string; + "pushSm": string; + "pushMd": string; + "pushLg": string; + "pushXl": string; + "size": string; + "sizeXs": string; + "sizeSm": string; + "sizeMd": string; + "sizeLg": string; + "sizeXl": string; + } + interface IonContentAttributes { + "color": Color; + "fullscreen": boolean; + "fixedSlotPlacement": 'after' | 'before'; + "forceOverscroll": boolean; + "scrollX": boolean; + "scrollY": boolean; + "scrollEvents": boolean; + } + interface IonDatetimeAttributes { + "color": Color; + "name": string; + "disabled": boolean; + "readonly": boolean; + "showAdjacentDays": boolean; + "min": string; + "max": string; + "presentation": DatetimePresentation; + "cancelText": string; + "doneText": string; + "clearText": string; + "yearValues": string; + "monthValues": string; + "dayValues": string; + "hourValues": string; + "minuteValues": string; + "locale": string; + "firstDayOfWeek": number; + "multiple": boolean; + "value": string | string[] | null; + "showDefaultTitle": boolean; + "showDefaultButtons": boolean; + "showClearButton": boolean; + "showDefaultTimeLabel": boolean; + "hourCycle": DatetimeHourCycle; + "size": 'cover' | 'fixed'; + "preferWheel": boolean; + } + interface IonDatetimeButtonAttributes { + "color": Color; + "disabled": boolean; + "datetime": string; + } + interface IonFabAttributes { + "horizontal": 'start' | 'end' | 'center'; + "vertical": 'top' | 'bottom' | 'center'; + "edge": boolean; + "activated": boolean; + } + interface IonFabButtonAttributes { + "color": Color; + "activated": boolean; + "disabled": boolean; + "download": string | undefined; + "href": string | undefined; + "rel": string | undefined; + "routerDirection": RouterDirection; + "target": string | undefined; + "show": boolean; + "translucent": boolean; + "type": 'submit' | 'reset' | 'button'; + "size": 'small'; + "closeIcon": string; + } + interface IonFabListAttributes { + "activated": boolean; + "side": 'start' | 'end' | 'top' | 'bottom'; + } + interface IonFooterAttributes { + "collapse": 'fade'; + "translucent": boolean; + } + interface IonGridAttributes { + "fixed": boolean; + } + interface IonHeaderAttributes { + "collapse": 'condense' | 'fade'; + "translucent": boolean; + } + interface IonImgAttributes { + "alt": string; + "src": string; + } + interface IonInfiniteScrollAttributes { + "threshold": string; + "disabled": boolean; + "position": 'top' | 'bottom'; + } + interface IonInfiniteScrollContentAttributes { + "loadingSpinner": SpinnerTypes | null; + "loadingText": string | IonicSafeString; + } + interface IonInputAttributes { + "color": Color; + "autocapitalize": string; + "autocomplete": AutocompleteTypes; + "autocorrect": 'on' | 'off'; + "autofocus": boolean; + "clearInput": boolean; + "clearInputIcon": string; + "clearOnEdit": boolean; + "counter": boolean; + "debounce": number; + "disabled": boolean; + "enterkeyhint": 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'; + "errorText": string; + "fill": 'outline' | 'solid'; + "inputmode": 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; + "helperText": string; + "label": string; + "labelPlacement": 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; + "max": string; + "maxlength": number; + "min": string; + "minlength": number; + "multiple": boolean; + "name": string; + "pattern": string; + "placeholder": string; + "readonly": boolean; + "required": boolean; + "shape": 'round'; + "spellcheck": boolean; + "step": string; + "type": TextFieldTypes; + "value": string; + } + interface IonInputOtpAttributes { + "autocapitalize": string; + "color": Color; + "disabled": boolean; + "fill": 'outline' | 'solid'; + "inputmode": 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; + "length": number; + "pattern": string; + "readonly": boolean; + "separators": 'all' | string | number[]; + "shape": 'round' | 'rectangular' | 'soft'; + "size": 'small' | 'medium' | 'large'; + "type": 'text' | 'number'; + "value": string; + } + interface IonInputPasswordToggleAttributes { + "color": Color; + "showIcon": string; + "hideIcon": string; + "type": TextFieldTypes; + } + interface IonItemAttributes { + "color": Color; + "button": boolean; + "detail": boolean; + "detailIcon": string; + "disabled": boolean; + "download": string | undefined; + "href": string | undefined; + "rel": string | undefined; + "lines": 'full' | 'inset' | 'none'; + "routerDirection": RouterDirection; + "target": string | undefined; + "type": 'submit' | 'reset' | 'button'; + } + interface IonItemDividerAttributes { + "color": Color; + "sticky": boolean; + } + interface IonItemOptionAttributes { + "color": Color; + "disabled": boolean; + "download": string | undefined; + "expandable": boolean; + "href": string | undefined; + "rel": string | undefined; + "target": string | undefined; + "type": 'submit' | 'reset' | 'button'; + } + interface IonItemOptionsAttributes { + "side": Side; + } + interface IonItemSlidingAttributes { + "disabled": boolean; + } + interface IonLabelAttributes { + "color": Color; + "position": 'fixed' | 'stacked' | 'floating'; + } + interface IonListAttributes { + "lines": 'full' | 'inset' | 'none'; + "inset": boolean; + } + interface IonListHeaderAttributes { + "color": Color; + "lines": 'full' | 'inset' | 'none'; + } + interface IonLoadingAttributes { + "overlayIndex": number; + "hasController": boolean; + "keyboardClose": boolean; + "message": string | IonicSafeString; + "cssClass": string | string[]; + "duration": number; + "backdropDismiss": boolean; + "showBackdrop": boolean; + "spinner": SpinnerTypes | null; + "translucent": boolean; + "animated": boolean; + "isOpen": boolean; + "trigger": string | undefined; + } + interface IonMenuAttributes { + "contentId": string; + "menuId": string; + "type": MenuType; + "disabled": boolean; + "side": Side; + "swipeGesture": boolean; + "maxEdgeStart": number; + } + interface IonMenuButtonAttributes { + "color": Color; + "disabled": boolean; + "menu": string; + "autoHide": boolean; + "type": 'submit' | 'reset' | 'button'; + } + interface IonMenuToggleAttributes { + "menu": string; + "autoHide": boolean; + } + interface IonModalAttributes { + "hasController": boolean; + "overlayIndex": number; + "keyboardClose": boolean; + "expandToScroll": boolean; + "initialBreakpoint": number; + "backdropBreakpoint": number; + "handle": boolean; + "handleBehavior": ModalHandleBehavior; + "component": ComponentRef; + "cssClass": string | string[]; + "backdropDismiss": boolean; + "showBackdrop": boolean; + "animated": boolean; + "isOpen": boolean; + "trigger": string | undefined; + "keepContentsMounted": boolean; + "focusTrap": boolean; + "canDismiss": boolean | ((data?: any, role?: string) => Promise); + } + interface IonNavAttributes { + "swipeGesture": boolean; + "animated": boolean; + "root": NavComponent; + } + interface IonNavLinkAttributes { + "component": NavComponent; + "routerDirection": RouterDirection; + } + interface IonNoteAttributes { + "color": Color; + } + interface IonPickerColumnAttributes { + "disabled": boolean; + "value": string; + "color": Color; + "numericInput": boolean; + } + interface IonPickerColumnOptionAttributes { + "disabled": boolean; + "value": string; + "color": Color; + } + interface IonPickerLegacyAttributes { + "overlayIndex": number; + "hasController": boolean; + "keyboardClose": boolean; + "cssClass": string | string[]; + "duration": number; + "showBackdrop": boolean; + "backdropDismiss": boolean; + "animated": boolean; + "isOpen": boolean; + "trigger": string | undefined; + } + interface IonPopoverAttributes { + "hasController": boolean; + "overlayIndex": number; + "component": ComponentRef; + "keyboardClose": boolean; + "cssClass": string | string[]; + "backdropDismiss": boolean; + "event": string; + "showBackdrop": boolean; + "translucent": boolean; + "animated": boolean; + "triggerAction": TriggerAction; + "trigger": string | undefined; + "size": PopoverSize; + "dismissOnSelect": boolean; + "reference": PositionReference; + "side": PositionSide; + "alignment": PositionAlign; + "arrow": boolean; + "isOpen": boolean; + "keyboardEvents": boolean; + "focusTrap": boolean; + "keepContentsMounted": boolean; + } + interface IonProgressBarAttributes { + "type": 'determinate' | 'indeterminate'; + "reversed": boolean; + "value": number; + "buffer": number; + "color": Color; + } + interface IonRadioAttributes { + "color": Color; + "name": string; + "disabled": boolean; + "value": string; + "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; + "justify": 'start' | 'end' | 'space-between'; + "alignment": 'start' | 'center'; + } + interface IonRadioGroupAttributes { + "allowEmptySelection": boolean; + "compareWith": string | RadioGroupCompareFn | null; + "name": string; + "value": string; + "helperText": string; + "errorText": string; + } + interface IonRangeAttributes { + "color": Color; + "debounce": number; + "name": string; + "label": string; + "dualKnobs": boolean; + "min": number; + "max": number; + "pin": boolean; + "snaps": boolean; + "step": number; + "ticks": boolean; + "activeBarStart": number; + "disabled": boolean; + "value": RangeValue; + "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; + } + interface IonRefresherAttributes { + "pullMin": number; + "pullMax": number; + "closeDuration": string; + "snapbackDuration": string; + "pullFactor": number; + "disabled": boolean; + } + interface IonRefresherContentAttributes { + "pullingIcon": SpinnerTypes | string | null; + "pullingText": string | IonicSafeString; + "refreshingSpinner": SpinnerTypes | null; + "refreshingText": string | IonicSafeString; + } + interface IonReorderGroupAttributes { + "disabled": boolean; + } + interface IonRippleEffectAttributes { + "type": 'bounded' | 'unbounded'; + } + interface IonRouteAttributes { + "url": string; + "component": string; + } + interface IonRouteRedirectAttributes { + "from": string; + "to": string | undefined | null; + } + interface IonRouterAttributes { + "root": string; + "useHash": boolean; + } + interface IonRouterLinkAttributes { + "color": Color; + "href": string | undefined; + "rel": string | undefined; + "routerDirection": RouterDirection; + "target": string | undefined; + } + interface IonRouterOutletAttributes { + "mode": "ios" | "md"; + "animated": boolean; + } + interface IonSearchbarAttributes { + "color": Color; + "animated": boolean; + "autocapitalize": string; + "autocomplete": AutocompleteTypes; + "autocorrect": 'on' | 'off'; + "cancelButtonIcon": string; + "cancelButtonText": string; + "clearIcon": string; + "debounce": number; + "disabled": boolean; + "inputmode": 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; + "enterkeyhint": 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'; + "maxlength": number; + "minlength": number; + "name": string; + "placeholder": string; + "searchIcon": string; + "showCancelButton": 'never' | 'focus' | 'always'; + "showClearButton": 'never' | 'focus' | 'always'; + "spellcheck": boolean; + "type": 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'; + "value": string | null; + } + interface IonSegmentAttributes { + "color": Color; + "disabled": boolean; + "scrollable": boolean; + "swipeGesture": boolean; + "value": string; + "selectOnFocus": boolean; + } + interface IonSegmentButtonAttributes { + "contentId": string; + "disabled": boolean; + "layout": SegmentButtonLayout; + "type": 'submit' | 'reset' | 'button'; + "value": string; + } + interface IonSegmentViewAttributes { + "disabled": boolean; + "swipeGesture": boolean; + } + interface IonSelectAttributes { + "cancelText": string; + "color": Color; + "compareWith": string | SelectCompareFn | null; + "disabled": boolean; + "fill": 'outline' | 'solid'; + "errorText": string; + "helperText": string; + "interface": SelectInterface; + "interfaceOptions": string; + "justify": 'start' | 'end' | 'space-between'; + "label": string; + "labelPlacement": 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; + "multiple": boolean; + "name": string; + "okText": string; + "placeholder": string; + "selectedText": string | null; + "toggleIcon": string; + "expandedIcon": string; + "shape": 'round'; + "value": string; + "required": boolean; + } + interface IonSelectModalAttributes { + "header": string; + "cancelText": string; + "multiple": boolean; + } + interface IonSelectOptionAttributes { + "disabled": boolean; + "value": string; + } + interface IonSelectPopoverAttributes { + "header": string; + "subHeader": string; + "message": string; + "multiple": boolean; + } + interface IonSkeletonTextAttributes { + "animated": boolean; + } + interface IonSpinnerAttributes { + "color": Color; + "duration": number; + "name": SpinnerTypes; + "paused": boolean; + } + interface IonSplitPaneAttributes { + "contentId": string; + "disabled": boolean; + "when": string; + } + interface IonTabAttributes { + "active": boolean; + "tab": string; + "component": ComponentRef; + } + interface IonTabBarAttributes { + "color": Color; + "selectedTab": string; + "translucent": boolean; + } + interface IonTabButtonAttributes { + "disabled": boolean; + "download": string | undefined; + "href": string | undefined; + "rel": string | undefined; + "layout": TabButtonLayout; + "selected": boolean; + "tab": string; + "target": string | undefined; + } + interface IonTabsAttributes { + "useRouter": boolean; + } + interface IonTextAttributes { + "color": Color; + } + interface IonTextareaAttributes { + "color": Color; + "autocapitalize": string; + "autofocus": boolean; + "clearOnEdit": boolean; + "debounce": number; + "disabled": boolean; + "fill": 'outline' | 'solid'; + "inputmode": 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; + "enterkeyhint": 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'; + "maxlength": number; + "minlength": number; + "name": string; + "placeholder": string; + "readonly": boolean; + "required": boolean; + "spellcheck": boolean; + "cols": number; + "rows": number; + "wrap": 'hard' | 'soft' | 'off'; + "autoGrow": boolean; + "value": string | null; + "counter": boolean; + "errorText": string; + "helperText": string; + "label": string; + "labelPlacement": 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; + "shape": 'round'; + } + interface IonTitleAttributes { + "color": Color; + "size": 'large' | 'small'; + } + interface IonToastAttributes { + "overlayIndex": number; + "hasController": boolean; + "color": Color; + "cssClass": string | string[]; + "duration": number; + "header": string; + "layout": ToastLayout; + "message": string | IonicSafeString; + "keyboardClose": boolean; + "position": ToastPosition; + "positionAnchor": HTMLElement | string; + "translucent": boolean; + "animated": boolean; + "icon": string; + "swipeGesture": ToastSwipeGestureDirection; + "isOpen": boolean; + "trigger": string | undefined; + } + interface IonToggleAttributes { + "color": Color; + "name": string; + "checked": boolean; + "disabled": boolean; + "errorText": string; + "helperText": string; + "value": string | null; + "enableOnOffLabels": boolean | undefined; + "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; + "justify": 'start' | 'end' | 'space-between'; + "alignment": 'start' | 'center'; + "required": boolean; + } + interface IonToolbarAttributes { + "color": Color; + } + interface IntrinsicElements { - "ion-accordion": IonAccordion; - "ion-accordion-group": IonAccordionGroup; - "ion-action-sheet": IonActionSheet; - "ion-alert": IonAlert; + "ion-accordion": Omit & { [K in keyof IonAccordion & keyof IonAccordionAttributes]?: IonAccordion[K] } & { [K in keyof IonAccordion & keyof IonAccordionAttributes as `attr:${K}`]?: IonAccordionAttributes[K] } & { [K in keyof IonAccordion & keyof IonAccordionAttributes as `prop:${K}`]?: IonAccordion[K] }; + "ion-accordion-group": Omit & { [K in keyof IonAccordionGroup & keyof IonAccordionGroupAttributes]?: IonAccordionGroup[K] } & { [K in keyof IonAccordionGroup & keyof IonAccordionGroupAttributes as `attr:${K}`]?: IonAccordionGroupAttributes[K] } & { [K in keyof IonAccordionGroup & keyof IonAccordionGroupAttributes as `prop:${K}`]?: IonAccordionGroup[K] }; + "ion-action-sheet": Omit & { [K in keyof IonActionSheet & keyof IonActionSheetAttributes]?: IonActionSheet[K] } & { [K in keyof IonActionSheet & keyof IonActionSheetAttributes as `attr:${K}`]?: IonActionSheetAttributes[K] } & { [K in keyof IonActionSheet & keyof IonActionSheetAttributes as `prop:${K}`]?: IonActionSheet[K] } & OneOf<"overlayIndex", IonActionSheet["overlayIndex"], IonActionSheetAttributes["overlayIndex"]>; + "ion-alert": Omit & { [K in keyof IonAlert & keyof IonAlertAttributes]?: IonAlert[K] } & { [K in keyof IonAlert & keyof IonAlertAttributes as `attr:${K}`]?: IonAlertAttributes[K] } & { [K in keyof IonAlert & keyof IonAlertAttributes as `prop:${K}`]?: IonAlert[K] } & OneOf<"overlayIndex", IonAlert["overlayIndex"], IonAlertAttributes["overlayIndex"]>; "ion-app": IonApp; "ion-avatar": IonAvatar; - "ion-back-button": IonBackButton; - "ion-backdrop": IonBackdrop; - "ion-badge": IonBadge; - "ion-breadcrumb": IonBreadcrumb; - "ion-breadcrumbs": IonBreadcrumbs; - "ion-button": IonButton; - "ion-buttons": IonButtons; - "ion-card": IonCard; + "ion-back-button": Omit & { [K in keyof IonBackButton & keyof IonBackButtonAttributes]?: IonBackButton[K] } & { [K in keyof IonBackButton & keyof IonBackButtonAttributes as `attr:${K}`]?: IonBackButtonAttributes[K] } & { [K in keyof IonBackButton & keyof IonBackButtonAttributes as `prop:${K}`]?: IonBackButton[K] }; + "ion-backdrop": Omit & { [K in keyof IonBackdrop & keyof IonBackdropAttributes]?: IonBackdrop[K] } & { [K in keyof IonBackdrop & keyof IonBackdropAttributes as `attr:${K}`]?: IonBackdropAttributes[K] } & { [K in keyof IonBackdrop & keyof IonBackdropAttributes as `prop:${K}`]?: IonBackdrop[K] }; + "ion-badge": Omit & { [K in keyof IonBadge & keyof IonBadgeAttributes]?: IonBadge[K] } & { [K in keyof IonBadge & keyof IonBadgeAttributes as `attr:${K}`]?: IonBadgeAttributes[K] } & { [K in keyof IonBadge & keyof IonBadgeAttributes as `prop:${K}`]?: IonBadge[K] }; + "ion-breadcrumb": Omit & { [K in keyof IonBreadcrumb & keyof IonBreadcrumbAttributes]?: IonBreadcrumb[K] } & { [K in keyof IonBreadcrumb & keyof IonBreadcrumbAttributes as `attr:${K}`]?: IonBreadcrumbAttributes[K] } & { [K in keyof IonBreadcrumb & keyof IonBreadcrumbAttributes as `prop:${K}`]?: IonBreadcrumb[K] } & OneOf<"last", IonBreadcrumb["last"], IonBreadcrumbAttributes["last"]> & OneOf<"showCollapsedIndicator", IonBreadcrumb["showCollapsedIndicator"], IonBreadcrumbAttributes["showCollapsedIndicator"]>; + "ion-breadcrumbs": Omit & { [K in keyof IonBreadcrumbs & keyof IonBreadcrumbsAttributes]?: IonBreadcrumbs[K] } & { [K in keyof IonBreadcrumbs & keyof IonBreadcrumbsAttributes as `attr:${K}`]?: IonBreadcrumbsAttributes[K] } & { [K in keyof IonBreadcrumbs & keyof IonBreadcrumbsAttributes as `prop:${K}`]?: IonBreadcrumbs[K] }; + "ion-button": Omit & { [K in keyof IonButton & keyof IonButtonAttributes]?: IonButton[K] } & { [K in keyof IonButton & keyof IonButtonAttributes as `attr:${K}`]?: IonButtonAttributes[K] } & { [K in keyof IonButton & keyof IonButtonAttributes as `prop:${K}`]?: IonButton[K] }; + "ion-buttons": Omit & { [K in keyof IonButtons & keyof IonButtonsAttributes]?: IonButtons[K] } & { [K in keyof IonButtons & keyof IonButtonsAttributes as `attr:${K}`]?: IonButtonsAttributes[K] } & { [K in keyof IonButtons & keyof IonButtonsAttributes as `prop:${K}`]?: IonButtons[K] }; + "ion-card": Omit & { [K in keyof IonCard & keyof IonCardAttributes]?: IonCard[K] } & { [K in keyof IonCard & keyof IonCardAttributes as `attr:${K}`]?: IonCardAttributes[K] } & { [K in keyof IonCard & keyof IonCardAttributes as `prop:${K}`]?: IonCard[K] }; "ion-card-content": IonCardContent; - "ion-card-header": IonCardHeader; - "ion-card-subtitle": IonCardSubtitle; - "ion-card-title": IonCardTitle; - "ion-checkbox": IonCheckbox; - "ion-chip": IonChip; - "ion-col": IonCol; - "ion-content": IonContent; - "ion-datetime": IonDatetime; - "ion-datetime-button": IonDatetimeButton; - "ion-fab": IonFab; - "ion-fab-button": IonFabButton; - "ion-fab-list": IonFabList; - "ion-footer": IonFooter; - "ion-grid": IonGrid; - "ion-header": IonHeader; - "ion-img": IonImg; - "ion-infinite-scroll": IonInfiniteScroll; - "ion-infinite-scroll-content": IonInfiniteScrollContent; - "ion-input": IonInput; - "ion-input-otp": IonInputOtp; - "ion-input-password-toggle": IonInputPasswordToggle; - "ion-item": IonItem; - "ion-item-divider": IonItemDivider; + "ion-card-header": Omit & { [K in keyof IonCardHeader & keyof IonCardHeaderAttributes]?: IonCardHeader[K] } & { [K in keyof IonCardHeader & keyof IonCardHeaderAttributes as `attr:${K}`]?: IonCardHeaderAttributes[K] } & { [K in keyof IonCardHeader & keyof IonCardHeaderAttributes as `prop:${K}`]?: IonCardHeader[K] }; + "ion-card-subtitle": Omit & { [K in keyof IonCardSubtitle & keyof IonCardSubtitleAttributes]?: IonCardSubtitle[K] } & { [K in keyof IonCardSubtitle & keyof IonCardSubtitleAttributes as `attr:${K}`]?: IonCardSubtitleAttributes[K] } & { [K in keyof IonCardSubtitle & keyof IonCardSubtitleAttributes as `prop:${K}`]?: IonCardSubtitle[K] }; + "ion-card-title": Omit & { [K in keyof IonCardTitle & keyof IonCardTitleAttributes]?: IonCardTitle[K] } & { [K in keyof IonCardTitle & keyof IonCardTitleAttributes as `attr:${K}`]?: IonCardTitleAttributes[K] } & { [K in keyof IonCardTitle & keyof IonCardTitleAttributes as `prop:${K}`]?: IonCardTitle[K] }; + "ion-checkbox": Omit & { [K in keyof IonCheckbox & keyof IonCheckboxAttributes]?: IonCheckbox[K] } & { [K in keyof IonCheckbox & keyof IonCheckboxAttributes as `attr:${K}`]?: IonCheckboxAttributes[K] } & { [K in keyof IonCheckbox & keyof IonCheckboxAttributes as `prop:${K}`]?: IonCheckbox[K] }; + "ion-chip": Omit & { [K in keyof IonChip & keyof IonChipAttributes]?: IonChip[K] } & { [K in keyof IonChip & keyof IonChipAttributes as `attr:${K}`]?: IonChipAttributes[K] } & { [K in keyof IonChip & keyof IonChipAttributes as `prop:${K}`]?: IonChip[K] }; + "ion-col": Omit & { [K in keyof IonCol & keyof IonColAttributes]?: IonCol[K] } & { [K in keyof IonCol & keyof IonColAttributes as `attr:${K}`]?: IonColAttributes[K] } & { [K in keyof IonCol & keyof IonColAttributes as `prop:${K}`]?: IonCol[K] }; + "ion-content": Omit & { [K in keyof IonContent & keyof IonContentAttributes]?: IonContent[K] } & { [K in keyof IonContent & keyof IonContentAttributes as `attr:${K}`]?: IonContentAttributes[K] } & { [K in keyof IonContent & keyof IonContentAttributes as `prop:${K}`]?: IonContent[K] }; + "ion-datetime": Omit & { [K in keyof IonDatetime & keyof IonDatetimeAttributes]?: IonDatetime[K] } & { [K in keyof IonDatetime & keyof IonDatetimeAttributes as `attr:${K}`]?: IonDatetimeAttributes[K] } & { [K in keyof IonDatetime & keyof IonDatetimeAttributes as `prop:${K}`]?: IonDatetime[K] }; + "ion-datetime-button": Omit & { [K in keyof IonDatetimeButton & keyof IonDatetimeButtonAttributes]?: IonDatetimeButton[K] } & { [K in keyof IonDatetimeButton & keyof IonDatetimeButtonAttributes as `attr:${K}`]?: IonDatetimeButtonAttributes[K] } & { [K in keyof IonDatetimeButton & keyof IonDatetimeButtonAttributes as `prop:${K}`]?: IonDatetimeButton[K] }; + "ion-fab": Omit & { [K in keyof IonFab & keyof IonFabAttributes]?: IonFab[K] } & { [K in keyof IonFab & keyof IonFabAttributes as `attr:${K}`]?: IonFabAttributes[K] } & { [K in keyof IonFab & keyof IonFabAttributes as `prop:${K}`]?: IonFab[K] }; + "ion-fab-button": Omit & { [K in keyof IonFabButton & keyof IonFabButtonAttributes]?: IonFabButton[K] } & { [K in keyof IonFabButton & keyof IonFabButtonAttributes as `attr:${K}`]?: IonFabButtonAttributes[K] } & { [K in keyof IonFabButton & keyof IonFabButtonAttributes as `prop:${K}`]?: IonFabButton[K] }; + "ion-fab-list": Omit & { [K in keyof IonFabList & keyof IonFabListAttributes]?: IonFabList[K] } & { [K in keyof IonFabList & keyof IonFabListAttributes as `attr:${K}`]?: IonFabListAttributes[K] } & { [K in keyof IonFabList & keyof IonFabListAttributes as `prop:${K}`]?: IonFabList[K] }; + "ion-footer": Omit & { [K in keyof IonFooter & keyof IonFooterAttributes]?: IonFooter[K] } & { [K in keyof IonFooter & keyof IonFooterAttributes as `attr:${K}`]?: IonFooterAttributes[K] } & { [K in keyof IonFooter & keyof IonFooterAttributes as `prop:${K}`]?: IonFooter[K] }; + "ion-grid": Omit & { [K in keyof IonGrid & keyof IonGridAttributes]?: IonGrid[K] } & { [K in keyof IonGrid & keyof IonGridAttributes as `attr:${K}`]?: IonGridAttributes[K] } & { [K in keyof IonGrid & keyof IonGridAttributes as `prop:${K}`]?: IonGrid[K] }; + "ion-header": Omit & { [K in keyof IonHeader & keyof IonHeaderAttributes]?: IonHeader[K] } & { [K in keyof IonHeader & keyof IonHeaderAttributes as `attr:${K}`]?: IonHeaderAttributes[K] } & { [K in keyof IonHeader & keyof IonHeaderAttributes as `prop:${K}`]?: IonHeader[K] }; + "ion-img": Omit & { [K in keyof IonImg & keyof IonImgAttributes]?: IonImg[K] } & { [K in keyof IonImg & keyof IonImgAttributes as `attr:${K}`]?: IonImgAttributes[K] } & { [K in keyof IonImg & keyof IonImgAttributes as `prop:${K}`]?: IonImg[K] }; + "ion-infinite-scroll": Omit & { [K in keyof IonInfiniteScroll & keyof IonInfiniteScrollAttributes]?: IonInfiniteScroll[K] } & { [K in keyof IonInfiniteScroll & keyof IonInfiniteScrollAttributes as `attr:${K}`]?: IonInfiniteScrollAttributes[K] } & { [K in keyof IonInfiniteScroll & keyof IonInfiniteScrollAttributes as `prop:${K}`]?: IonInfiniteScroll[K] }; + "ion-infinite-scroll-content": Omit & { [K in keyof IonInfiniteScrollContent & keyof IonInfiniteScrollContentAttributes]?: IonInfiniteScrollContent[K] } & { [K in keyof IonInfiniteScrollContent & keyof IonInfiniteScrollContentAttributes as `attr:${K}`]?: IonInfiniteScrollContentAttributes[K] } & { [K in keyof IonInfiniteScrollContent & keyof IonInfiniteScrollContentAttributes as `prop:${K}`]?: IonInfiniteScrollContent[K] }; + "ion-input": Omit & { [K in keyof IonInput & keyof IonInputAttributes]?: IonInput[K] } & { [K in keyof IonInput & keyof IonInputAttributes as `attr:${K}`]?: IonInputAttributes[K] } & { [K in keyof IonInput & keyof IonInputAttributes as `prop:${K}`]?: IonInput[K] }; + "ion-input-otp": Omit & { [K in keyof IonInputOtp & keyof IonInputOtpAttributes]?: IonInputOtp[K] } & { [K in keyof IonInputOtp & keyof IonInputOtpAttributes as `attr:${K}`]?: IonInputOtpAttributes[K] } & { [K in keyof IonInputOtp & keyof IonInputOtpAttributes as `prop:${K}`]?: IonInputOtp[K] }; + "ion-input-password-toggle": Omit & { [K in keyof IonInputPasswordToggle & keyof IonInputPasswordToggleAttributes]?: IonInputPasswordToggle[K] } & { [K in keyof IonInputPasswordToggle & keyof IonInputPasswordToggleAttributes as `attr:${K}`]?: IonInputPasswordToggleAttributes[K] } & { [K in keyof IonInputPasswordToggle & keyof IonInputPasswordToggleAttributes as `prop:${K}`]?: IonInputPasswordToggle[K] }; + "ion-item": Omit & { [K in keyof IonItem & keyof IonItemAttributes]?: IonItem[K] } & { [K in keyof IonItem & keyof IonItemAttributes as `attr:${K}`]?: IonItemAttributes[K] } & { [K in keyof IonItem & keyof IonItemAttributes as `prop:${K}`]?: IonItem[K] }; + "ion-item-divider": Omit & { [K in keyof IonItemDivider & keyof IonItemDividerAttributes]?: IonItemDivider[K] } & { [K in keyof IonItemDivider & keyof IonItemDividerAttributes as `attr:${K}`]?: IonItemDividerAttributes[K] } & { [K in keyof IonItemDivider & keyof IonItemDividerAttributes as `prop:${K}`]?: IonItemDivider[K] }; "ion-item-group": IonItemGroup; - "ion-item-option": IonItemOption; - "ion-item-options": IonItemOptions; - "ion-item-sliding": IonItemSliding; - "ion-label": IonLabel; - "ion-list": IonList; - "ion-list-header": IonListHeader; - "ion-loading": IonLoading; - "ion-menu": IonMenu; - "ion-menu-button": IonMenuButton; - "ion-menu-toggle": IonMenuToggle; - "ion-modal": IonModal; - "ion-nav": IonNav; - "ion-nav-link": IonNavLink; - "ion-note": IonNote; + "ion-item-option": Omit & { [K in keyof IonItemOption & keyof IonItemOptionAttributes]?: IonItemOption[K] } & { [K in keyof IonItemOption & keyof IonItemOptionAttributes as `attr:${K}`]?: IonItemOptionAttributes[K] } & { [K in keyof IonItemOption & keyof IonItemOptionAttributes as `prop:${K}`]?: IonItemOption[K] }; + "ion-item-options": Omit & { [K in keyof IonItemOptions & keyof IonItemOptionsAttributes]?: IonItemOptions[K] } & { [K in keyof IonItemOptions & keyof IonItemOptionsAttributes as `attr:${K}`]?: IonItemOptionsAttributes[K] } & { [K in keyof IonItemOptions & keyof IonItemOptionsAttributes as `prop:${K}`]?: IonItemOptions[K] }; + "ion-item-sliding": Omit & { [K in keyof IonItemSliding & keyof IonItemSlidingAttributes]?: IonItemSliding[K] } & { [K in keyof IonItemSliding & keyof IonItemSlidingAttributes as `attr:${K}`]?: IonItemSlidingAttributes[K] } & { [K in keyof IonItemSliding & keyof IonItemSlidingAttributes as `prop:${K}`]?: IonItemSliding[K] }; + "ion-label": Omit & { [K in keyof IonLabel & keyof IonLabelAttributes]?: IonLabel[K] } & { [K in keyof IonLabel & keyof IonLabelAttributes as `attr:${K}`]?: IonLabelAttributes[K] } & { [K in keyof IonLabel & keyof IonLabelAttributes as `prop:${K}`]?: IonLabel[K] }; + "ion-list": Omit & { [K in keyof IonList & keyof IonListAttributes]?: IonList[K] } & { [K in keyof IonList & keyof IonListAttributes as `attr:${K}`]?: IonListAttributes[K] } & { [K in keyof IonList & keyof IonListAttributes as `prop:${K}`]?: IonList[K] }; + "ion-list-header": Omit & { [K in keyof IonListHeader & keyof IonListHeaderAttributes]?: IonListHeader[K] } & { [K in keyof IonListHeader & keyof IonListHeaderAttributes as `attr:${K}`]?: IonListHeaderAttributes[K] } & { [K in keyof IonListHeader & keyof IonListHeaderAttributes as `prop:${K}`]?: IonListHeader[K] }; + "ion-loading": Omit & { [K in keyof IonLoading & keyof IonLoadingAttributes]?: IonLoading[K] } & { [K in keyof IonLoading & keyof IonLoadingAttributes as `attr:${K}`]?: IonLoadingAttributes[K] } & { [K in keyof IonLoading & keyof IonLoadingAttributes as `prop:${K}`]?: IonLoading[K] } & OneOf<"overlayIndex", IonLoading["overlayIndex"], IonLoadingAttributes["overlayIndex"]>; + "ion-menu": Omit & { [K in keyof IonMenu & keyof IonMenuAttributes]?: IonMenu[K] } & { [K in keyof IonMenu & keyof IonMenuAttributes as `attr:${K}`]?: IonMenuAttributes[K] } & { [K in keyof IonMenu & keyof IonMenuAttributes as `prop:${K}`]?: IonMenu[K] }; + "ion-menu-button": Omit & { [K in keyof IonMenuButton & keyof IonMenuButtonAttributes]?: IonMenuButton[K] } & { [K in keyof IonMenuButton & keyof IonMenuButtonAttributes as `attr:${K}`]?: IonMenuButtonAttributes[K] } & { [K in keyof IonMenuButton & keyof IonMenuButtonAttributes as `prop:${K}`]?: IonMenuButton[K] }; + "ion-menu-toggle": Omit & { [K in keyof IonMenuToggle & keyof IonMenuToggleAttributes]?: IonMenuToggle[K] } & { [K in keyof IonMenuToggle & keyof IonMenuToggleAttributes as `attr:${K}`]?: IonMenuToggleAttributes[K] } & { [K in keyof IonMenuToggle & keyof IonMenuToggleAttributes as `prop:${K}`]?: IonMenuToggle[K] }; + "ion-modal": Omit & { [K in keyof IonModal & keyof IonModalAttributes]?: IonModal[K] } & { [K in keyof IonModal & keyof IonModalAttributes as `attr:${K}`]?: IonModalAttributes[K] } & { [K in keyof IonModal & keyof IonModalAttributes as `prop:${K}`]?: IonModal[K] } & OneOf<"overlayIndex", IonModal["overlayIndex"], IonModalAttributes["overlayIndex"]>; + "ion-nav": Omit & { [K in keyof IonNav & keyof IonNavAttributes]?: IonNav[K] } & { [K in keyof IonNav & keyof IonNavAttributes as `attr:${K}`]?: IonNavAttributes[K] } & { [K in keyof IonNav & keyof IonNavAttributes as `prop:${K}`]?: IonNav[K] }; + "ion-nav-link": Omit & { [K in keyof IonNavLink & keyof IonNavLinkAttributes]?: IonNavLink[K] } & { [K in keyof IonNavLink & keyof IonNavLinkAttributes as `attr:${K}`]?: IonNavLinkAttributes[K] } & { [K in keyof IonNavLink & keyof IonNavLinkAttributes as `prop:${K}`]?: IonNavLink[K] }; + "ion-note": Omit & { [K in keyof IonNote & keyof IonNoteAttributes]?: IonNote[K] } & { [K in keyof IonNote & keyof IonNoteAttributes as `attr:${K}`]?: IonNoteAttributes[K] } & { [K in keyof IonNote & keyof IonNoteAttributes as `prop:${K}`]?: IonNote[K] }; "ion-picker": IonPicker; - "ion-picker-column": IonPickerColumn; - "ion-picker-column-option": IonPickerColumnOption; - "ion-picker-legacy": IonPickerLegacy; + "ion-picker-column": Omit & { [K in keyof IonPickerColumn & keyof IonPickerColumnAttributes]?: IonPickerColumn[K] } & { [K in keyof IonPickerColumn & keyof IonPickerColumnAttributes as `attr:${K}`]?: IonPickerColumnAttributes[K] } & { [K in keyof IonPickerColumn & keyof IonPickerColumnAttributes as `prop:${K}`]?: IonPickerColumn[K] }; + "ion-picker-column-option": Omit & { [K in keyof IonPickerColumnOption & keyof IonPickerColumnOptionAttributes]?: IonPickerColumnOption[K] } & { [K in keyof IonPickerColumnOption & keyof IonPickerColumnOptionAttributes as `attr:${K}`]?: IonPickerColumnOptionAttributes[K] } & { [K in keyof IonPickerColumnOption & keyof IonPickerColumnOptionAttributes as `prop:${K}`]?: IonPickerColumnOption[K] }; + "ion-picker-legacy": Omit & { [K in keyof IonPickerLegacy & keyof IonPickerLegacyAttributes]?: IonPickerLegacy[K] } & { [K in keyof IonPickerLegacy & keyof IonPickerLegacyAttributes as `attr:${K}`]?: IonPickerLegacyAttributes[K] } & { [K in keyof IonPickerLegacy & keyof IonPickerLegacyAttributes as `prop:${K}`]?: IonPickerLegacy[K] } & OneOf<"overlayIndex", IonPickerLegacy["overlayIndex"], IonPickerLegacyAttributes["overlayIndex"]>; "ion-picker-legacy-column": IonPickerLegacyColumn; - "ion-popover": IonPopover; - "ion-progress-bar": IonProgressBar; - "ion-radio": IonRadio; - "ion-radio-group": IonRadioGroup; - "ion-range": IonRange; - "ion-refresher": IonRefresher; - "ion-refresher-content": IonRefresherContent; + "ion-popover": Omit & { [K in keyof IonPopover & keyof IonPopoverAttributes]?: IonPopover[K] } & { [K in keyof IonPopover & keyof IonPopoverAttributes as `attr:${K}`]?: IonPopoverAttributes[K] } & { [K in keyof IonPopover & keyof IonPopoverAttributes as `prop:${K}`]?: IonPopover[K] } & OneOf<"overlayIndex", IonPopover["overlayIndex"], IonPopoverAttributes["overlayIndex"]>; + "ion-progress-bar": Omit & { [K in keyof IonProgressBar & keyof IonProgressBarAttributes]?: IonProgressBar[K] } & { [K in keyof IonProgressBar & keyof IonProgressBarAttributes as `attr:${K}`]?: IonProgressBarAttributes[K] } & { [K in keyof IonProgressBar & keyof IonProgressBarAttributes as `prop:${K}`]?: IonProgressBar[K] }; + "ion-radio": Omit & { [K in keyof IonRadio & keyof IonRadioAttributes]?: IonRadio[K] } & { [K in keyof IonRadio & keyof IonRadioAttributes as `attr:${K}`]?: IonRadioAttributes[K] } & { [K in keyof IonRadio & keyof IonRadioAttributes as `prop:${K}`]?: IonRadio[K] }; + "ion-radio-group": Omit & { [K in keyof IonRadioGroup & keyof IonRadioGroupAttributes]?: IonRadioGroup[K] } & { [K in keyof IonRadioGroup & keyof IonRadioGroupAttributes as `attr:${K}`]?: IonRadioGroupAttributes[K] } & { [K in keyof IonRadioGroup & keyof IonRadioGroupAttributes as `prop:${K}`]?: IonRadioGroup[K] }; + "ion-range": Omit & { [K in keyof IonRange & keyof IonRangeAttributes]?: IonRange[K] } & { [K in keyof IonRange & keyof IonRangeAttributes as `attr:${K}`]?: IonRangeAttributes[K] } & { [K in keyof IonRange & keyof IonRangeAttributes as `prop:${K}`]?: IonRange[K] }; + "ion-refresher": Omit & { [K in keyof IonRefresher & keyof IonRefresherAttributes]?: IonRefresher[K] } & { [K in keyof IonRefresher & keyof IonRefresherAttributes as `attr:${K}`]?: IonRefresherAttributes[K] } & { [K in keyof IonRefresher & keyof IonRefresherAttributes as `prop:${K}`]?: IonRefresher[K] }; + "ion-refresher-content": Omit & { [K in keyof IonRefresherContent & keyof IonRefresherContentAttributes]?: IonRefresherContent[K] } & { [K in keyof IonRefresherContent & keyof IonRefresherContentAttributes as `attr:${K}`]?: IonRefresherContentAttributes[K] } & { [K in keyof IonRefresherContent & keyof IonRefresherContentAttributes as `prop:${K}`]?: IonRefresherContent[K] }; "ion-reorder": IonReorder; - "ion-reorder-group": IonReorderGroup; - "ion-ripple-effect": IonRippleEffect; - "ion-route": IonRoute; - "ion-route-redirect": IonRouteRedirect; - "ion-router": IonRouter; - "ion-router-link": IonRouterLink; - "ion-router-outlet": IonRouterOutlet; + "ion-reorder-group": Omit & { [K in keyof IonReorderGroup & keyof IonReorderGroupAttributes]?: IonReorderGroup[K] } & { [K in keyof IonReorderGroup & keyof IonReorderGroupAttributes as `attr:${K}`]?: IonReorderGroupAttributes[K] } & { [K in keyof IonReorderGroup & keyof IonReorderGroupAttributes as `prop:${K}`]?: IonReorderGroup[K] }; + "ion-ripple-effect": Omit & { [K in keyof IonRippleEffect & keyof IonRippleEffectAttributes]?: IonRippleEffect[K] } & { [K in keyof IonRippleEffect & keyof IonRippleEffectAttributes as `attr:${K}`]?: IonRippleEffectAttributes[K] } & { [K in keyof IonRippleEffect & keyof IonRippleEffectAttributes as `prop:${K}`]?: IonRippleEffect[K] }; + "ion-route": Omit & { [K in keyof IonRoute & keyof IonRouteAttributes]?: IonRoute[K] } & { [K in keyof IonRoute & keyof IonRouteAttributes as `attr:${K}`]?: IonRouteAttributes[K] } & { [K in keyof IonRoute & keyof IonRouteAttributes as `prop:${K}`]?: IonRoute[K] } & OneOf<"component", IonRoute["component"], IonRouteAttributes["component"]>; + "ion-route-redirect": Omit & { [K in keyof IonRouteRedirect & keyof IonRouteRedirectAttributes]?: IonRouteRedirect[K] } & { [K in keyof IonRouteRedirect & keyof IonRouteRedirectAttributes as `attr:${K}`]?: IonRouteRedirectAttributes[K] } & { [K in keyof IonRouteRedirect & keyof IonRouteRedirectAttributes as `prop:${K}`]?: IonRouteRedirect[K] } & OneOf<"from", IonRouteRedirect["from"], IonRouteRedirectAttributes["from"]> & OneOf<"to", IonRouteRedirect["to"], IonRouteRedirectAttributes["to"]>; + "ion-router": Omit & { [K in keyof IonRouter & keyof IonRouterAttributes]?: IonRouter[K] } & { [K in keyof IonRouter & keyof IonRouterAttributes as `attr:${K}`]?: IonRouterAttributes[K] } & { [K in keyof IonRouter & keyof IonRouterAttributes as `prop:${K}`]?: IonRouter[K] }; + "ion-router-link": Omit & { [K in keyof IonRouterLink & keyof IonRouterLinkAttributes]?: IonRouterLink[K] } & { [K in keyof IonRouterLink & keyof IonRouterLinkAttributes as `attr:${K}`]?: IonRouterLinkAttributes[K] } & { [K in keyof IonRouterLink & keyof IonRouterLinkAttributes as `prop:${K}`]?: IonRouterLink[K] }; + "ion-router-outlet": Omit & { [K in keyof IonRouterOutlet & keyof IonRouterOutletAttributes]?: IonRouterOutlet[K] } & { [K in keyof IonRouterOutlet & keyof IonRouterOutletAttributes as `attr:${K}`]?: IonRouterOutletAttributes[K] } & { [K in keyof IonRouterOutlet & keyof IonRouterOutletAttributes as `prop:${K}`]?: IonRouterOutlet[K] }; "ion-row": IonRow; - "ion-searchbar": IonSearchbar; - "ion-segment": IonSegment; - "ion-segment-button": IonSegmentButton; + "ion-searchbar": Omit & { [K in keyof IonSearchbar & keyof IonSearchbarAttributes]?: IonSearchbar[K] } & { [K in keyof IonSearchbar & keyof IonSearchbarAttributes as `attr:${K}`]?: IonSearchbarAttributes[K] } & { [K in keyof IonSearchbar & keyof IonSearchbarAttributes as `prop:${K}`]?: IonSearchbar[K] }; + "ion-segment": Omit & { [K in keyof IonSegment & keyof IonSegmentAttributes]?: IonSegment[K] } & { [K in keyof IonSegment & keyof IonSegmentAttributes as `attr:${K}`]?: IonSegmentAttributes[K] } & { [K in keyof IonSegment & keyof IonSegmentAttributes as `prop:${K}`]?: IonSegment[K] }; + "ion-segment-button": Omit & { [K in keyof IonSegmentButton & keyof IonSegmentButtonAttributes]?: IonSegmentButton[K] } & { [K in keyof IonSegmentButton & keyof IonSegmentButtonAttributes as `attr:${K}`]?: IonSegmentButtonAttributes[K] } & { [K in keyof IonSegmentButton & keyof IonSegmentButtonAttributes as `prop:${K}`]?: IonSegmentButton[K] }; "ion-segment-content": IonSegmentContent; - "ion-segment-view": IonSegmentView; - "ion-select": IonSelect; - "ion-select-modal": IonSelectModal; - "ion-select-option": IonSelectOption; - "ion-select-popover": IonSelectPopover; - "ion-skeleton-text": IonSkeletonText; - "ion-spinner": IonSpinner; - "ion-split-pane": IonSplitPane; - "ion-tab": IonTab; - "ion-tab-bar": IonTabBar; - "ion-tab-button": IonTabButton; - "ion-tabs": IonTabs; - "ion-text": IonText; - "ion-textarea": IonTextarea; + "ion-segment-view": Omit & { [K in keyof IonSegmentView & keyof IonSegmentViewAttributes]?: IonSegmentView[K] } & { [K in keyof IonSegmentView & keyof IonSegmentViewAttributes as `attr:${K}`]?: IonSegmentViewAttributes[K] } & { [K in keyof IonSegmentView & keyof IonSegmentViewAttributes as `prop:${K}`]?: IonSegmentView[K] }; + "ion-select": Omit & { [K in keyof IonSelect & keyof IonSelectAttributes]?: IonSelect[K] } & { [K in keyof IonSelect & keyof IonSelectAttributes as `attr:${K}`]?: IonSelectAttributes[K] } & { [K in keyof IonSelect & keyof IonSelectAttributes as `prop:${K}`]?: IonSelect[K] }; + "ion-select-modal": Omit & { [K in keyof IonSelectModal & keyof IonSelectModalAttributes]?: IonSelectModal[K] } & { [K in keyof IonSelectModal & keyof IonSelectModalAttributes as `attr:${K}`]?: IonSelectModalAttributes[K] } & { [K in keyof IonSelectModal & keyof IonSelectModalAttributes as `prop:${K}`]?: IonSelectModal[K] }; + "ion-select-option": Omit & { [K in keyof IonSelectOption & keyof IonSelectOptionAttributes]?: IonSelectOption[K] } & { [K in keyof IonSelectOption & keyof IonSelectOptionAttributes as `attr:${K}`]?: IonSelectOptionAttributes[K] } & { [K in keyof IonSelectOption & keyof IonSelectOptionAttributes as `prop:${K}`]?: IonSelectOption[K] }; + "ion-select-popover": Omit & { [K in keyof IonSelectPopover & keyof IonSelectPopoverAttributes]?: IonSelectPopover[K] } & { [K in keyof IonSelectPopover & keyof IonSelectPopoverAttributes as `attr:${K}`]?: IonSelectPopoverAttributes[K] } & { [K in keyof IonSelectPopover & keyof IonSelectPopoverAttributes as `prop:${K}`]?: IonSelectPopover[K] }; + "ion-skeleton-text": Omit & { [K in keyof IonSkeletonText & keyof IonSkeletonTextAttributes]?: IonSkeletonText[K] } & { [K in keyof IonSkeletonText & keyof IonSkeletonTextAttributes as `attr:${K}`]?: IonSkeletonTextAttributes[K] } & { [K in keyof IonSkeletonText & keyof IonSkeletonTextAttributes as `prop:${K}`]?: IonSkeletonText[K] }; + "ion-spinner": Omit & { [K in keyof IonSpinner & keyof IonSpinnerAttributes]?: IonSpinner[K] } & { [K in keyof IonSpinner & keyof IonSpinnerAttributes as `attr:${K}`]?: IonSpinnerAttributes[K] } & { [K in keyof IonSpinner & keyof IonSpinnerAttributes as `prop:${K}`]?: IonSpinner[K] }; + "ion-split-pane": Omit & { [K in keyof IonSplitPane & keyof IonSplitPaneAttributes]?: IonSplitPane[K] } & { [K in keyof IonSplitPane & keyof IonSplitPaneAttributes as `attr:${K}`]?: IonSplitPaneAttributes[K] } & { [K in keyof IonSplitPane & keyof IonSplitPaneAttributes as `prop:${K}`]?: IonSplitPane[K] }; + "ion-tab": Omit & { [K in keyof IonTab & keyof IonTabAttributes]?: IonTab[K] } & { [K in keyof IonTab & keyof IonTabAttributes as `attr:${K}`]?: IonTabAttributes[K] } & { [K in keyof IonTab & keyof IonTabAttributes as `prop:${K}`]?: IonTab[K] } & OneOf<"tab", IonTab["tab"], IonTabAttributes["tab"]>; + "ion-tab-bar": Omit & { [K in keyof IonTabBar & keyof IonTabBarAttributes]?: IonTabBar[K] } & { [K in keyof IonTabBar & keyof IonTabBarAttributes as `attr:${K}`]?: IonTabBarAttributes[K] } & { [K in keyof IonTabBar & keyof IonTabBarAttributes as `prop:${K}`]?: IonTabBar[K] }; + "ion-tab-button": Omit & { [K in keyof IonTabButton & keyof IonTabButtonAttributes]?: IonTabButton[K] } & { [K in keyof IonTabButton & keyof IonTabButtonAttributes as `attr:${K}`]?: IonTabButtonAttributes[K] } & { [K in keyof IonTabButton & keyof IonTabButtonAttributes as `prop:${K}`]?: IonTabButton[K] }; + "ion-tabs": Omit & { [K in keyof IonTabs & keyof IonTabsAttributes]?: IonTabs[K] } & { [K in keyof IonTabs & keyof IonTabsAttributes as `attr:${K}`]?: IonTabsAttributes[K] } & { [K in keyof IonTabs & keyof IonTabsAttributes as `prop:${K}`]?: IonTabs[K] }; + "ion-text": Omit & { [K in keyof IonText & keyof IonTextAttributes]?: IonText[K] } & { [K in keyof IonText & keyof IonTextAttributes as `attr:${K}`]?: IonTextAttributes[K] } & { [K in keyof IonText & keyof IonTextAttributes as `prop:${K}`]?: IonText[K] }; + "ion-textarea": Omit & { [K in keyof IonTextarea & keyof IonTextareaAttributes]?: IonTextarea[K] } & { [K in keyof IonTextarea & keyof IonTextareaAttributes as `attr:${K}`]?: IonTextareaAttributes[K] } & { [K in keyof IonTextarea & keyof IonTextareaAttributes as `prop:${K}`]?: IonTextarea[K] }; "ion-thumbnail": IonThumbnail; - "ion-title": IonTitle; - "ion-toast": IonToast; - "ion-toggle": IonToggle; - "ion-toolbar": IonToolbar; + "ion-title": Omit & { [K in keyof IonTitle & keyof IonTitleAttributes]?: IonTitle[K] } & { [K in keyof IonTitle & keyof IonTitleAttributes as `attr:${K}`]?: IonTitleAttributes[K] } & { [K in keyof IonTitle & keyof IonTitleAttributes as `prop:${K}`]?: IonTitle[K] }; + "ion-toast": Omit & { [K in keyof IonToast & keyof IonToastAttributes]?: IonToast[K] } & { [K in keyof IonToast & keyof IonToastAttributes as `attr:${K}`]?: IonToastAttributes[K] } & { [K in keyof IonToast & keyof IonToastAttributes as `prop:${K}`]?: IonToast[K] } & OneOf<"overlayIndex", IonToast["overlayIndex"], IonToastAttributes["overlayIndex"]>; + "ion-toggle": Omit & { [K in keyof IonToggle & keyof IonToggleAttributes]?: IonToggle[K] } & { [K in keyof IonToggle & keyof IonToggleAttributes as `attr:${K}`]?: IonToggleAttributes[K] } & { [K in keyof IonToggle & keyof IonToggleAttributes as `prop:${K}`]?: IonToggle[K] }; + "ion-toolbar": Omit & { [K in keyof IonToolbar & keyof IonToolbarAttributes]?: IonToolbar[K] } & { [K in keyof IonToolbar & keyof IonToolbarAttributes as `attr:${K}`]?: IonToolbarAttributes[K] } & { [K in keyof IonToolbar & keyof IonToolbarAttributes as `prop:${K}`]?: IonToolbar[K] }; } } export { LocalJSX as JSX }; declare module "@stencil/core" { export namespace JSX { interface IntrinsicElements { - "ion-accordion": LocalJSX.IonAccordion & JSXBase.HTMLAttributes; - "ion-accordion-group": LocalJSX.IonAccordionGroup & JSXBase.HTMLAttributes; - "ion-action-sheet": LocalJSX.IonActionSheet & JSXBase.HTMLAttributes; - "ion-alert": LocalJSX.IonAlert & JSXBase.HTMLAttributes; - "ion-app": LocalJSX.IonApp & JSXBase.HTMLAttributes; - "ion-avatar": LocalJSX.IonAvatar & JSXBase.HTMLAttributes; - "ion-back-button": LocalJSX.IonBackButton & JSXBase.HTMLAttributes; - "ion-backdrop": LocalJSX.IonBackdrop & JSXBase.HTMLAttributes; - "ion-badge": LocalJSX.IonBadge & JSXBase.HTMLAttributes; - "ion-breadcrumb": LocalJSX.IonBreadcrumb & JSXBase.HTMLAttributes; - "ion-breadcrumbs": LocalJSX.IonBreadcrumbs & JSXBase.HTMLAttributes; - "ion-button": LocalJSX.IonButton & JSXBase.HTMLAttributes; - "ion-buttons": LocalJSX.IonButtons & JSXBase.HTMLAttributes; - "ion-card": LocalJSX.IonCard & JSXBase.HTMLAttributes; - "ion-card-content": LocalJSX.IonCardContent & JSXBase.HTMLAttributes; - "ion-card-header": LocalJSX.IonCardHeader & JSXBase.HTMLAttributes; - "ion-card-subtitle": LocalJSX.IonCardSubtitle & JSXBase.HTMLAttributes; - "ion-card-title": LocalJSX.IonCardTitle & JSXBase.HTMLAttributes; - "ion-checkbox": LocalJSX.IonCheckbox & JSXBase.HTMLAttributes; - "ion-chip": LocalJSX.IonChip & JSXBase.HTMLAttributes; - "ion-col": LocalJSX.IonCol & JSXBase.HTMLAttributes; - "ion-content": LocalJSX.IonContent & JSXBase.HTMLAttributes; - "ion-datetime": LocalJSX.IonDatetime & JSXBase.HTMLAttributes; - "ion-datetime-button": LocalJSX.IonDatetimeButton & JSXBase.HTMLAttributes; - "ion-fab": LocalJSX.IonFab & JSXBase.HTMLAttributes; - "ion-fab-button": LocalJSX.IonFabButton & JSXBase.HTMLAttributes; - "ion-fab-list": LocalJSX.IonFabList & JSXBase.HTMLAttributes; - "ion-footer": LocalJSX.IonFooter & JSXBase.HTMLAttributes; - "ion-grid": LocalJSX.IonGrid & JSXBase.HTMLAttributes; - "ion-header": LocalJSX.IonHeader & JSXBase.HTMLAttributes; - "ion-img": LocalJSX.IonImg & JSXBase.HTMLAttributes; - "ion-infinite-scroll": LocalJSX.IonInfiniteScroll & JSXBase.HTMLAttributes; - "ion-infinite-scroll-content": LocalJSX.IonInfiniteScrollContent & JSXBase.HTMLAttributes; - "ion-input": LocalJSX.IonInput & JSXBase.HTMLAttributes; - "ion-input-otp": LocalJSX.IonInputOtp & JSXBase.HTMLAttributes; - "ion-input-password-toggle": LocalJSX.IonInputPasswordToggle & JSXBase.HTMLAttributes; - "ion-item": LocalJSX.IonItem & JSXBase.HTMLAttributes; - "ion-item-divider": LocalJSX.IonItemDivider & JSXBase.HTMLAttributes; - "ion-item-group": LocalJSX.IonItemGroup & JSXBase.HTMLAttributes; - "ion-item-option": LocalJSX.IonItemOption & JSXBase.HTMLAttributes; - "ion-item-options": LocalJSX.IonItemOptions & JSXBase.HTMLAttributes; - "ion-item-sliding": LocalJSX.IonItemSliding & JSXBase.HTMLAttributes; - "ion-label": LocalJSX.IonLabel & JSXBase.HTMLAttributes; - "ion-list": LocalJSX.IonList & JSXBase.HTMLAttributes; - "ion-list-header": LocalJSX.IonListHeader & JSXBase.HTMLAttributes; - "ion-loading": LocalJSX.IonLoading & JSXBase.HTMLAttributes; - "ion-menu": LocalJSX.IonMenu & JSXBase.HTMLAttributes; - "ion-menu-button": LocalJSX.IonMenuButton & JSXBase.HTMLAttributes; - "ion-menu-toggle": LocalJSX.IonMenuToggle & JSXBase.HTMLAttributes; - "ion-modal": LocalJSX.IonModal & JSXBase.HTMLAttributes; - "ion-nav": LocalJSX.IonNav & JSXBase.HTMLAttributes; - "ion-nav-link": LocalJSX.IonNavLink & JSXBase.HTMLAttributes; - "ion-note": LocalJSX.IonNote & JSXBase.HTMLAttributes; - "ion-picker": LocalJSX.IonPicker & JSXBase.HTMLAttributes; - "ion-picker-column": LocalJSX.IonPickerColumn & JSXBase.HTMLAttributes; - "ion-picker-column-option": LocalJSX.IonPickerColumnOption & JSXBase.HTMLAttributes; - "ion-picker-legacy": LocalJSX.IonPickerLegacy & JSXBase.HTMLAttributes; - "ion-picker-legacy-column": LocalJSX.IonPickerLegacyColumn & JSXBase.HTMLAttributes; - "ion-popover": LocalJSX.IonPopover & JSXBase.HTMLAttributes; - "ion-progress-bar": LocalJSX.IonProgressBar & JSXBase.HTMLAttributes; - "ion-radio": LocalJSX.IonRadio & JSXBase.HTMLAttributes; - "ion-radio-group": LocalJSX.IonRadioGroup & JSXBase.HTMLAttributes; - "ion-range": LocalJSX.IonRange & JSXBase.HTMLAttributes; - "ion-refresher": LocalJSX.IonRefresher & JSXBase.HTMLAttributes; - "ion-refresher-content": LocalJSX.IonRefresherContent & JSXBase.HTMLAttributes; - "ion-reorder": LocalJSX.IonReorder & JSXBase.HTMLAttributes; - "ion-reorder-group": LocalJSX.IonReorderGroup & JSXBase.HTMLAttributes; - "ion-ripple-effect": LocalJSX.IonRippleEffect & JSXBase.HTMLAttributes; - "ion-route": LocalJSX.IonRoute & JSXBase.HTMLAttributes; - "ion-route-redirect": LocalJSX.IonRouteRedirect & JSXBase.HTMLAttributes; - "ion-router": LocalJSX.IonRouter & JSXBase.HTMLAttributes; - "ion-router-link": LocalJSX.IonRouterLink & JSXBase.HTMLAttributes; - "ion-router-outlet": LocalJSX.IonRouterOutlet & JSXBase.HTMLAttributes; - "ion-row": LocalJSX.IonRow & JSXBase.HTMLAttributes; - "ion-searchbar": LocalJSX.IonSearchbar & JSXBase.HTMLAttributes; - "ion-segment": LocalJSX.IonSegment & JSXBase.HTMLAttributes; - "ion-segment-button": LocalJSX.IonSegmentButton & JSXBase.HTMLAttributes; - "ion-segment-content": LocalJSX.IonSegmentContent & JSXBase.HTMLAttributes; - "ion-segment-view": LocalJSX.IonSegmentView & JSXBase.HTMLAttributes; - "ion-select": LocalJSX.IonSelect & JSXBase.HTMLAttributes; - "ion-select-modal": LocalJSX.IonSelectModal & JSXBase.HTMLAttributes; - "ion-select-option": LocalJSX.IonSelectOption & JSXBase.HTMLAttributes; - "ion-select-popover": LocalJSX.IonSelectPopover & JSXBase.HTMLAttributes; - "ion-skeleton-text": LocalJSX.IonSkeletonText & JSXBase.HTMLAttributes; - "ion-spinner": LocalJSX.IonSpinner & JSXBase.HTMLAttributes; - "ion-split-pane": LocalJSX.IonSplitPane & JSXBase.HTMLAttributes; - "ion-tab": LocalJSX.IonTab & JSXBase.HTMLAttributes; - "ion-tab-bar": LocalJSX.IonTabBar & JSXBase.HTMLAttributes; - "ion-tab-button": LocalJSX.IonTabButton & JSXBase.HTMLAttributes; - "ion-tabs": LocalJSX.IonTabs & JSXBase.HTMLAttributes; - "ion-text": LocalJSX.IonText & JSXBase.HTMLAttributes; - "ion-textarea": LocalJSX.IonTextarea & JSXBase.HTMLAttributes; - "ion-thumbnail": LocalJSX.IonThumbnail & JSXBase.HTMLAttributes; - "ion-title": LocalJSX.IonTitle & JSXBase.HTMLAttributes; - "ion-toast": LocalJSX.IonToast & JSXBase.HTMLAttributes; - "ion-toggle": LocalJSX.IonToggle & JSXBase.HTMLAttributes; - "ion-toolbar": LocalJSX.IonToolbar & JSXBase.HTMLAttributes; + "ion-accordion": LocalJSX.IntrinsicElements["ion-accordion"] & JSXBase.HTMLAttributes; + "ion-accordion-group": LocalJSX.IntrinsicElements["ion-accordion-group"] & JSXBase.HTMLAttributes; + "ion-action-sheet": LocalJSX.IntrinsicElements["ion-action-sheet"] & JSXBase.HTMLAttributes; + "ion-alert": LocalJSX.IntrinsicElements["ion-alert"] & JSXBase.HTMLAttributes; + "ion-app": LocalJSX.IntrinsicElements["ion-app"] & JSXBase.HTMLAttributes; + "ion-avatar": LocalJSX.IntrinsicElements["ion-avatar"] & JSXBase.HTMLAttributes; + "ion-back-button": LocalJSX.IntrinsicElements["ion-back-button"] & JSXBase.HTMLAttributes; + "ion-backdrop": LocalJSX.IntrinsicElements["ion-backdrop"] & JSXBase.HTMLAttributes; + "ion-badge": LocalJSX.IntrinsicElements["ion-badge"] & JSXBase.HTMLAttributes; + "ion-breadcrumb": LocalJSX.IntrinsicElements["ion-breadcrumb"] & JSXBase.HTMLAttributes; + "ion-breadcrumbs": LocalJSX.IntrinsicElements["ion-breadcrumbs"] & JSXBase.HTMLAttributes; + "ion-button": LocalJSX.IntrinsicElements["ion-button"] & JSXBase.HTMLAttributes; + "ion-buttons": LocalJSX.IntrinsicElements["ion-buttons"] & JSXBase.HTMLAttributes; + "ion-card": LocalJSX.IntrinsicElements["ion-card"] & JSXBase.HTMLAttributes; + "ion-card-content": LocalJSX.IntrinsicElements["ion-card-content"] & JSXBase.HTMLAttributes; + "ion-card-header": LocalJSX.IntrinsicElements["ion-card-header"] & JSXBase.HTMLAttributes; + "ion-card-subtitle": LocalJSX.IntrinsicElements["ion-card-subtitle"] & JSXBase.HTMLAttributes; + "ion-card-title": LocalJSX.IntrinsicElements["ion-card-title"] & JSXBase.HTMLAttributes; + "ion-checkbox": LocalJSX.IntrinsicElements["ion-checkbox"] & JSXBase.HTMLAttributes; + "ion-chip": LocalJSX.IntrinsicElements["ion-chip"] & JSXBase.HTMLAttributes; + "ion-col": LocalJSX.IntrinsicElements["ion-col"] & JSXBase.HTMLAttributes; + "ion-content": LocalJSX.IntrinsicElements["ion-content"] & JSXBase.HTMLAttributes; + "ion-datetime": LocalJSX.IntrinsicElements["ion-datetime"] & JSXBase.HTMLAttributes; + "ion-datetime-button": LocalJSX.IntrinsicElements["ion-datetime-button"] & JSXBase.HTMLAttributes; + "ion-fab": LocalJSX.IntrinsicElements["ion-fab"] & JSXBase.HTMLAttributes; + "ion-fab-button": LocalJSX.IntrinsicElements["ion-fab-button"] & JSXBase.HTMLAttributes; + "ion-fab-list": LocalJSX.IntrinsicElements["ion-fab-list"] & JSXBase.HTMLAttributes; + "ion-footer": LocalJSX.IntrinsicElements["ion-footer"] & JSXBase.HTMLAttributes; + "ion-grid": LocalJSX.IntrinsicElements["ion-grid"] & JSXBase.HTMLAttributes; + "ion-header": LocalJSX.IntrinsicElements["ion-header"] & JSXBase.HTMLAttributes; + "ion-img": LocalJSX.IntrinsicElements["ion-img"] & JSXBase.HTMLAttributes; + "ion-infinite-scroll": LocalJSX.IntrinsicElements["ion-infinite-scroll"] & JSXBase.HTMLAttributes; + "ion-infinite-scroll-content": LocalJSX.IntrinsicElements["ion-infinite-scroll-content"] & JSXBase.HTMLAttributes; + "ion-input": LocalJSX.IntrinsicElements["ion-input"] & JSXBase.HTMLAttributes; + "ion-input-otp": LocalJSX.IntrinsicElements["ion-input-otp"] & JSXBase.HTMLAttributes; + "ion-input-password-toggle": LocalJSX.IntrinsicElements["ion-input-password-toggle"] & JSXBase.HTMLAttributes; + "ion-item": LocalJSX.IntrinsicElements["ion-item"] & JSXBase.HTMLAttributes; + "ion-item-divider": LocalJSX.IntrinsicElements["ion-item-divider"] & JSXBase.HTMLAttributes; + "ion-item-group": LocalJSX.IntrinsicElements["ion-item-group"] & JSXBase.HTMLAttributes; + "ion-item-option": LocalJSX.IntrinsicElements["ion-item-option"] & JSXBase.HTMLAttributes; + "ion-item-options": LocalJSX.IntrinsicElements["ion-item-options"] & JSXBase.HTMLAttributes; + "ion-item-sliding": LocalJSX.IntrinsicElements["ion-item-sliding"] & JSXBase.HTMLAttributes; + "ion-label": LocalJSX.IntrinsicElements["ion-label"] & JSXBase.HTMLAttributes; + "ion-list": LocalJSX.IntrinsicElements["ion-list"] & JSXBase.HTMLAttributes; + "ion-list-header": LocalJSX.IntrinsicElements["ion-list-header"] & JSXBase.HTMLAttributes; + "ion-loading": LocalJSX.IntrinsicElements["ion-loading"] & JSXBase.HTMLAttributes; + "ion-menu": LocalJSX.IntrinsicElements["ion-menu"] & JSXBase.HTMLAttributes; + "ion-menu-button": LocalJSX.IntrinsicElements["ion-menu-button"] & JSXBase.HTMLAttributes; + "ion-menu-toggle": LocalJSX.IntrinsicElements["ion-menu-toggle"] & JSXBase.HTMLAttributes; + "ion-modal": LocalJSX.IntrinsicElements["ion-modal"] & JSXBase.HTMLAttributes; + "ion-nav": LocalJSX.IntrinsicElements["ion-nav"] & JSXBase.HTMLAttributes; + "ion-nav-link": LocalJSX.IntrinsicElements["ion-nav-link"] & JSXBase.HTMLAttributes; + "ion-note": LocalJSX.IntrinsicElements["ion-note"] & JSXBase.HTMLAttributes; + "ion-picker": LocalJSX.IntrinsicElements["ion-picker"] & JSXBase.HTMLAttributes; + "ion-picker-column": LocalJSX.IntrinsicElements["ion-picker-column"] & JSXBase.HTMLAttributes; + "ion-picker-column-option": LocalJSX.IntrinsicElements["ion-picker-column-option"] & JSXBase.HTMLAttributes; + "ion-picker-legacy": LocalJSX.IntrinsicElements["ion-picker-legacy"] & JSXBase.HTMLAttributes; + "ion-picker-legacy-column": LocalJSX.IntrinsicElements["ion-picker-legacy-column"] & JSXBase.HTMLAttributes; + "ion-popover": LocalJSX.IntrinsicElements["ion-popover"] & JSXBase.HTMLAttributes; + "ion-progress-bar": LocalJSX.IntrinsicElements["ion-progress-bar"] & JSXBase.HTMLAttributes; + "ion-radio": LocalJSX.IntrinsicElements["ion-radio"] & JSXBase.HTMLAttributes; + "ion-radio-group": LocalJSX.IntrinsicElements["ion-radio-group"] & JSXBase.HTMLAttributes; + "ion-range": LocalJSX.IntrinsicElements["ion-range"] & JSXBase.HTMLAttributes; + "ion-refresher": LocalJSX.IntrinsicElements["ion-refresher"] & JSXBase.HTMLAttributes; + "ion-refresher-content": LocalJSX.IntrinsicElements["ion-refresher-content"] & JSXBase.HTMLAttributes; + "ion-reorder": LocalJSX.IntrinsicElements["ion-reorder"] & JSXBase.HTMLAttributes; + "ion-reorder-group": LocalJSX.IntrinsicElements["ion-reorder-group"] & JSXBase.HTMLAttributes; + "ion-ripple-effect": LocalJSX.IntrinsicElements["ion-ripple-effect"] & JSXBase.HTMLAttributes; + "ion-route": LocalJSX.IntrinsicElements["ion-route"] & JSXBase.HTMLAttributes; + "ion-route-redirect": LocalJSX.IntrinsicElements["ion-route-redirect"] & JSXBase.HTMLAttributes; + "ion-router": LocalJSX.IntrinsicElements["ion-router"] & JSXBase.HTMLAttributes; + "ion-router-link": LocalJSX.IntrinsicElements["ion-router-link"] & JSXBase.HTMLAttributes; + "ion-router-outlet": LocalJSX.IntrinsicElements["ion-router-outlet"] & JSXBase.HTMLAttributes; + "ion-row": LocalJSX.IntrinsicElements["ion-row"] & JSXBase.HTMLAttributes; + "ion-searchbar": LocalJSX.IntrinsicElements["ion-searchbar"] & JSXBase.HTMLAttributes; + "ion-segment": LocalJSX.IntrinsicElements["ion-segment"] & JSXBase.HTMLAttributes; + "ion-segment-button": LocalJSX.IntrinsicElements["ion-segment-button"] & JSXBase.HTMLAttributes; + "ion-segment-content": LocalJSX.IntrinsicElements["ion-segment-content"] & JSXBase.HTMLAttributes; + "ion-segment-view": LocalJSX.IntrinsicElements["ion-segment-view"] & JSXBase.HTMLAttributes; + "ion-select": LocalJSX.IntrinsicElements["ion-select"] & JSXBase.HTMLAttributes; + "ion-select-modal": LocalJSX.IntrinsicElements["ion-select-modal"] & JSXBase.HTMLAttributes; + "ion-select-option": LocalJSX.IntrinsicElements["ion-select-option"] & JSXBase.HTMLAttributes; + "ion-select-popover": LocalJSX.IntrinsicElements["ion-select-popover"] & JSXBase.HTMLAttributes; + "ion-skeleton-text": LocalJSX.IntrinsicElements["ion-skeleton-text"] & JSXBase.HTMLAttributes; + "ion-spinner": LocalJSX.IntrinsicElements["ion-spinner"] & JSXBase.HTMLAttributes; + "ion-split-pane": LocalJSX.IntrinsicElements["ion-split-pane"] & JSXBase.HTMLAttributes; + "ion-tab": LocalJSX.IntrinsicElements["ion-tab"] & JSXBase.HTMLAttributes; + "ion-tab-bar": LocalJSX.IntrinsicElements["ion-tab-bar"] & JSXBase.HTMLAttributes; + "ion-tab-button": LocalJSX.IntrinsicElements["ion-tab-button"] & JSXBase.HTMLAttributes; + "ion-tabs": LocalJSX.IntrinsicElements["ion-tabs"] & JSXBase.HTMLAttributes; + "ion-text": LocalJSX.IntrinsicElements["ion-text"] & JSXBase.HTMLAttributes; + "ion-textarea": LocalJSX.IntrinsicElements["ion-textarea"] & JSXBase.HTMLAttributes; + "ion-thumbnail": LocalJSX.IntrinsicElements["ion-thumbnail"] & JSXBase.HTMLAttributes; + "ion-title": LocalJSX.IntrinsicElements["ion-title"] & JSXBase.HTMLAttributes; + "ion-toast": LocalJSX.IntrinsicElements["ion-toast"] & JSXBase.HTMLAttributes; + "ion-toggle": LocalJSX.IntrinsicElements["ion-toggle"] & JSXBase.HTMLAttributes; + "ion-toolbar": LocalJSX.IntrinsicElements["ion-toolbar"] & JSXBase.HTMLAttributes; } } } From 6ea186d96d80a94b774d4d0a51d536e0e5599935 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Fri, 20 Feb 2026 13:36:39 -0800 Subject: [PATCH 106/126] feat(datetime): add header parts (#30945) Co-authored-by: Brandy Smith --- core/api.txt | 8 + core/src/components/datetime/datetime.tsx | 37 +++- .../datetime/test/custom/datetime.e2e.ts | 184 ++++++++++++++++++ .../datetime/test/custom/index.html | 45 +++++ 4 files changed, 267 insertions(+), 7 deletions(-) diff --git a/core/api.txt b/core/api.txt index fd21aed675a..1ae4c424116 100644 --- a/core/api.txt +++ b/core/api.txt @@ -566,7 +566,15 @@ ion-datetime,part,calendar-day ion-datetime,part,calendar-day active ion-datetime,part,calendar-day disabled ion-datetime,part,calendar-day today +ion-datetime,part,calendar-days-of-week +ion-datetime,part,calendar-header +ion-datetime,part,datetime-header +ion-datetime,part,datetime-selected-date +ion-datetime,part,datetime-title ion-datetime,part,month-year-button +ion-datetime,part,navigation-button +ion-datetime,part,next-button +ion-datetime,part,previous-button ion-datetime,part,time-button ion-datetime,part,time-button active ion-datetime,part,wheel diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index 95f97d37cf0..8c767eee5a9 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -88,14 +88,23 @@ import { checkForPresentationFormatMismatch, warnIfTimeZoneProvided } from './ut * layout with `presentation="date-time"` or `"time-date"`. * @part time-button active - The time picker button when the picker is open. * + * @part calendar-header - The calendar header manages the date navigation controls (month/year picker and previous/next buttons) and the days of the week when using a grid style layout. * @part month-year-button - The button that opens the month/year picker when * using a grid style layout. + * @part navigation-button - The buttons used to navigate to the next or previous month when using a grid style layout. + * @part previous-button - The button used to navigate to the previous month when using a grid style layout. + * @part next-button - The button used to navigate to the next month when using a grid style layout. + * @part calendar-days-of-week - The container for the day-of-the-week header (both weekdays and weekends) when using a grid style layout. * * @part calendar-day - The individual buttons that display a day inside of the datetime * calendar. * @part calendar-day active - The currently selected calendar day. * @part calendar-day today - The calendar day that contains the current day. * @part calendar-day disabled - The calendar day that is disabled. + * + * @part datetime-header - The datetime header contains the content for the `title` slot and the selected date. + * @part datetime-title - The element that contains the `title` slot content. + * @part datetime-selected-date - The element that contains the selected date. */ @Component({ tag: 'ion-datetime', @@ -2166,7 +2175,7 @@ export class Datetime implements ComponentInterface { const hostDir = this.el.getAttribute('dir') || undefined; return ( -
+
-
+ +
+ +``` + +### `content` + +**What it does:** The main user-content area of an overlay or the primary content region (e.g. modal body, toolbar’s main slot). + +- **Use when**: The element is the primary content area where users see the main content (overlay body, or primary slot inside something like a toolbar). +- **Examples**: `ion-modal`, `ion-popover`, `ion-accordion`, `ion-toolbar` (the div that wraps the default slot inside the toolbar container). + +**ion-modal** - `content` wraps the default `` which is the primary content: + +```tsx + +``` + +**ion-toolbar** - `content` wraps the default `` which is the primary content: + +```tsx +
+ + +
+ +
+ + +
+``` + +## Specialized Parts + +Components may also expose specialized parts for specific elements. The following parts are reused across multiple components: + +| Name | Description | +| --- | --- | +| `background` | Background elements (e.g., `ion-content`, `ion-toolbar`) | +| `backdrop` | Backdrop elements. **Must only be used on `` components.** (e.g., `ion-modal`, `ion-popover`, `ion-menu`) | +| `label` | Label text elements - not the HTML `
-
+
+
diff --git a/core/src/components/item/test/css-variables/index.html b/core/src/components/item/test/css-variables/index.html deleted file mode 100644 index 44dbfe0c88e..00000000000 --- a/core/src/components/item/test/css-variables/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Item - CSS Variables - - - - - - - - - - - - - - - Item CSS variables - - - - - - - Item 1 - - - - Item 2 - - - - Item 3 - - - - - - diff --git a/core/src/components/item/test/css-variables/item.e2e.ts b/core/src/components/item/test/css-variables/item.e2e.ts deleted file mode 100644 index 7f24b1724cd..00000000000 --- a/core/src/components/item/test/css-variables/item.e2e.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { expect } from '@playwright/test'; -import { configs, test } from '@utils/test/playwright'; - -/** - * This behavior does not vary across directions - */ -configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { - test.describe(title('item: CSS variables'), () => { - test('should not have visual regressions', async ({ page }) => { - await page.goto(`/src/components/item/test/css-variables`, config); - - await page.setIonViewport(); - - await expect(page).toHaveScreenshot(screenshot(`item-css-vars-diff`)); - }); - }); -}); diff --git a/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-ios-ltr-Mobile-Chrome-linux.png deleted file mode 100644 index e5deac11796fe591093c71521ab67b172e90d211..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8066 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 v$CSUy@>f~@_@}qO(DD~r{@)P?+WcK81cA7Oxm diff --git a/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-ios-ltr-Mobile-Firefox-linux.png deleted file mode 100644 index de756ae34fcac6266a7141c058d743612da8e800..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14129 zcmeHuc{tSj-#5~UoMI?C$=XPZrRfy1Cu_Dki0n}jhBH~lJ}M<-={P4!sFbBFO)-PP zsD?QqlC>E_X3COg#$=gcjJZEw=enNfci;D4&vRebb3fPf`0wjGpM80~-mlmDEB&;S z&9<$(w~B~}Y_qeq{7pneG+jhQY*^wa@Fo`9TrMJ_Dq?4O!Zp^HNt3EWUOZ>^nJs?8 zn|@#R$~Ma?kvuV}{YM&4$^WtU;S;Tg72o6JF>zC^-B-cx;A<(~;sDcvy;;AHm z&+5~lVz-aEZ8xo36KZdls2ZZ+?4dtF#YhF2|JXE>&}OgOGQet_DqboYUoJ{Ab0zDm zf+`O$x$j@Zl9fZbV+j$|#QFEsvcmAD?vraj@``kiSucTpkX;l4WhW=97N)Bd~!AzBN3YIooo#PegeY%hr z(|Mr0&LB?5L&196rY%MW4 z2t~PE{yvs2>{Ai+Emb-vJ!@I4jzD4--7&|?1+nvUV5d%v%pa<0cuaVFo7tfl5oW|{ z2;?qm
Wio(xJZ;~UmIV`MZ*Q^5{UlZ9LiCUHN^7v*M58RNEcqt7EKbhx2mWA&>Z zL*}vCI7fX)Ij;w+wJl4OC7;2KzLGurIL0yZb9O8RH! z9UJA#C2I@iRO;9gPF_>c7-kWm<2h!e05)EsTAf{_120Zm`Xui@%TDGJ2nS7t%e{Dm z*G}6q+A|gK!qr}37}#jEe)RmxFmdgo%Mnhz!!T*7dVHmtwvz{ShIe!KsV{8W<--&X zV+8I5Mz&E?Z$#tQyIroCy%=ahnOOA5`Lrcy@sNBbK7u=r!Jw`7XujXYWeeBX)WWfa zvZc07(sc%XWcdlyM?1}Eeh!;_)PB$Sz#&cvzp*3~vlN6G(xU{I#t0UN(d2o0rY=qz z!+T2$3d~IT6p*Ri$}%X4rKh6`NKr!-twKIgIGe4D+om`2uo^!WPaD>4p0gm#_ZWE% zsPL)b1ZLBR-N;@OuD8NzYIN>?cQnS_~}QigwX2xv)tuMDp5csM)SQBnDtaV zhL6X)w|sNcO-Oo|8@tLOQ;DDt^sJ)2@6TGZPU@_WEO1blx_|AhWAn1v!6$mh-gV@HeUO z%)zl|bdclcUT?wA_nHwC{0f?9ec0cIWUReBtWt{Ozg05WSr+u`Dy#n7dzm^-6;fl< zuWJRA+GwHTps9~7DS;8r60kACuCh6LEQX85;E@dzH)*Zv{yD}!{?>^Ne3VpY^&!nY zwG8=H7NCf`86l)hD*fd4<4=ql+jshh)h01Rsrs0Cef$k6g&6l*gvKJkBNdw4L^7W_ z?Bm!GZ~fpxK(TSnkMf(A-ZLHP8cxQ3t8@hdg7FHhDq04mf5gzPT~bFrqnt|rqU8QJ zqWwp@b0U3qOjd1&dp(Mdq0RaZYlo1Ftix)P7oSsg1s`>zugZ||E8m`DXj2SvMKm~W zhTSK&C=J|r^RXtke7lV1oQJuPf}!KRHl@ql(k^RNS7n4B?0!61FqR<~T$O3*2rIz; zv;*yh`k2ji+LkVnD?vQ74R)>6T=9k_uYE9)M?#Ti`|`n|t~Sb^+ln8tR)Zy_GqM9E z2s}faK_!u)#GY;~)`16fY7YfJ9*2dXyfJH2n6cu-AMaS|6W}VbO!?4hrx`kVsKkt% zrxpE{sHbdjs|4F1S6A&VW)bl9Taf#E?_oH-)2wEDpth=$7Ge?Rr6n>RKU+s`bCpaS?uw<67A{jA#-|Xd|j-vdwuDl>B>=r8_c~Jku+b-Z7vrKMF@tf znqV%MFh4XgKVEV>>}Iti;_UhDeyi;)p^evoocl`Yv0HuIy>;}0026o_?Jh2B$SnEu zmgI*5+PJ`ni)#qUzWmrA`_~?W(!!zi)3*+-HW+za{L78<*ebJQRvojPkNLEjJ&-#R zTHDe@z*dGz+uyW&@R{+=7^kv)M`gxo6lMu~gKfhMoUw_PTEu2qsMqjHw;+<_``!EA z8e9c8tA~c@(DSiPwedE$JWc9%#`;7Lx-ke3CCWx3R<%e<9=mLWfti^p4VhA811D;y zhARAQO>)d&_c1s<#JEhK{>`u^z=pa_fAmAZeT|w^d$r2I5NzqGvefBLLl&HVN*|}2 zG-FS*)5gXA7PMoROXHNHEW%p6w`6UmBnExlMWK;VKhAF%pRKuK<5lJUAbRK=%?|mk z--Q!Ddd4aXyZtatzTX1Hg^BK#>Ou|If4Wo{{aQYB57y}jCE(etpK#HSVDub-tWa4O zhgm39VRjVkmMsx{52A7td%4YF`Sv$S)9nWD$ms?w2leldTPyY|Tkx)%@vgIwrMbH{ z4^O|shRd;YOYF zLLE3AjsZbX%un{={WmN}v)X+=1!o?+!^km9PJDnO*I%$rJvn+nJ2cbiZbM``p|D~0 z=gdm-4pA8S`2CNblEV7kVRjY)8exJk7Ca#2e3WbsW+t%nK+RT0XIztZ+36z|>XXDk z&%Mc5ZKo#GH5DXEHbe6s{S;Rrc|xIyaJAuac655dtly9Pj)1;nWtae86Q@zEudF<_ z{eIVgW&z!LS=@UXM;lPJCdzPBKxA^&J8}X_JMEIdVDiilM3~OERk7TavD11XSbmgU{cetSZsSMJynUCcv8J)jPb6#;9y2& zRYP8eO@82n$(xX-+*@1{g0$nb@%x>xW!;4crK4NBXNKVPM=26_pqs^FNxV5)R;L~n z7^1zRl9XOv9&iwG4bCzT%q%aV&r}usk!jS^D%i(A#jE9Q)wZ*(I?dYo>ebU5mRdR; zlKXH5k|g6O?|bCIs6?~Len!Y)c_YTRBV%TZ@O+poV(ky9K8`oWxNk?~1hzeWR$4eG zO{it0KlC`7lXoc$p`fD4_K^C;5#vxamT_oRqVUXngoeE6(UqhdeWe6@ue@8m?WM)o z7mAu~BlPrA1JN8@-+hPG$nJh}lU3Dq60OsfSQ#q&>Rx!p__lPy%@MlupCqCBgMiNc z9RTLlcLb`Lyg6L#up3!w6U`_omrAcxkU1|q>w>MF%Rca$XUNK?_hLw%r^PL_TFL#6 z9FHrh3m?mVCU2R@{6oy*@dfJLqz_=@d9Ds#q`&+eq)3u_H5q}Ka-S2%`D3h*$U2!l zk&~Q;!0y-NyE|nOF{AaQs51^;w{a4g4Hj84_f|A5)l~yB_7AC9pEzQ8r-Nf%;XtEz z8r0mf$q{yhA~a;3_1phKX<7Ex-FUyh!kRdIc*VhckZcjRN_%QhEHNH?UYVh}_+f`+opstv8?eeUXdQ5Gjj!$QkD2&IlNB4Q+OdmvOj{dH=Oe-!vgNsf z83?CU>}it~g2$QA)No^Eqm{hOh`3t2Pss*eF{dO(` zzDM|yywWxhH@$Fug|eN#)wm{=aZ1k#*R{g`jgy&zszMaWO1(qbz}yM_$kL{OQyN17 z^dA2>A>BPS*n2{Enfjr2Ks(#SB2kY>MNr%wVC_L=HJt7x19~KC3vA-}qJBqtvZVOIFa7l0n7fa8oN# zVx#H*jRkq(Z9yMPU?ZJP7G0^A%Znz_JKmKv0m(+qC$4_Qfd@_YyE(8I9*yF6?QI|Y z{zj5X39Ur}Y0~d8^(4T z*qjWp%WBy7dek}~RBMz#xGRSOmPi8SQJONPb!D&?_g;UznT8PxECSSvUbu*fAC%JK z=EhDxN}~+A`_Y_^fBh3jR!*q%LDTA)^~1ijbVHniZ|ox|He|90?C`>{mv(48w$EBI zYa62;1b;7(O*3UQzPzsQ=n^%8$ZC-`o--#*-Vbf6tmdu1a^-W0LII8MWW=mndL*4x zq1aVq`BlY@?3B_57r&ceJBlJJ(bAV8GsG*RC7KEpF9k9TV!#heBY`>fo1~3jn5;~f z(pK6){7aE@Hty4D<z5>3qQe2NK;9UMJrqZ1L+y@{2%STRO9@;Hz&$n2pKiNr5fzm z0{I3pn*1&uLKU->&+@UgEO-DkHiNt8%HL|p#Xz;AN|N9y?2CpRstPV9;Ma))t}az0Iovc_kR zJDDsFaJa<@tVUMlQ=ZAqhPS|z`~DCwr)sWxMiuZ?-|(?v?^i`oOz+~vSy%SiW^25d zm6>up7*%Fxt>X)#xj}55>2+l7g>|ntsDHd!^^Az*qwkwk97nR0<03U~Jt=fdHx6)># zL*OXmmMEc9Zb28oY-M7t#Aehu8QDE)fQroh9|K@}yc**KCYlT&H7_FV8w9xxU2Ug3i_UjH|*iHD9F zirvD+l^4f9W7hRMG9cO3#SCLn_l0=qRK zflnPD>oK11w%cnM^V=tH zDEJ1u`$W4D03;Hg^Bbrm!KGOp!5qp>#qbe5z*elJOaE5UIV)P_E+lUohUKHa= z0M;V~;4KX|5|A159ZSY3p+~VMfEJj*R1M29T?wYfO%+l9tGp0-1=4YZ$}(Vi$wjU_ z&<8-~e@m>(1a5t+-%(#Fdf*Hb>_(`&Z`?(%prU9Bly2B=vhX2hJc%3azJ$;KA~tl( zIxB4XhZUkT-*Z~B^v4t6~jZyVEW76pi&|o?0RhxW^I|lCGq#db(-hiaJbt+T7aeV z<)giBksF&XSp^}hSLrPyrS)*OTkFLe3w7laSF=97!xY?#F(@USPOZOav2aLlkvAKf2oaDOdmz@WH?TTH`^VI!A zXJ7An#kh0&tM`(8EFDg0vvXrXXhN16SMZ5CqoAh;0d7H&d5A4(Hwl>a$4&nLG07t@ zIfKOk7xH+fjT@u#X*G`WjPTZ@SdH`jRc}lVp{8;2J`;fc<yVKFnLd;gMtWZrwZ{9EOQvdO5yle!9u?? z+D3j>2D^56#U$hFPFW6o0Ln2uJ*y&Gf8lrDc{OuD82M6K`MDnQ-vHy7F^~5CE8EOU zuH&?;stG*a6aQ8nDt->c0nW&uh(+A5L$D8`ot zt=bI`wQv3d4{=llC{a=5t`90+0x|iet6#L&&kKm!L#75Hj{Yw+U26b0B~DA7tapLh zKO2A5eUI#+mRvC?E9VdLD4!<}6@eZ273hL{sm%~iiUOV#)%Tl$Mrj8Ubnq|HV4r{X z07<@vxFvugv7ZSUO;p|Jzw`d7&~sI^VACE#w@RH`u2=@$Zz?S5%2SLuhHdEfX;Hqb&Npr z*IeW3S7lk?+?^(XoB{Pf`Gb#+OehD61R1{&C@(biu5Ap4-AsqWO@53Db`=DFAjp zv53MoT#w$krGp(ONH1rL@Q5FKbh(?-=GK#WGtR^!9H!mw6GfLW-3d`3Vj2pjYH z>J}W74`u?p9NG8SiU}|#Sivum6Kldq*|a@aG3><&1$EdC{qe*|FOXWJ{1Wt_FTgVt z2sI=kYe(p|e81#4>cxDY$2)Ym|+3_B{c zbM?kz8LV)4D;{82jEmi`$b6rea|r;B3CHpp6d{O7g9&b6`ij-9x{U@Il_CTKo?gFzYw z$}w19UvE(fL+q3f-GSIVNY=z&(jqBBcFDEPXFY5|?rJY>P`EN%JAM|36x2Q4R$c)5 zWzKT}=%qy}T_Uf6qJm7@bH$dM`Vkxy{k5?^8x>j+FGx3U9oK_eIbQEk>T866c5AfsMViCp#EKk~%I)Ex3 zuf-|>HOp||eZkcKEMLNlRBOI5wg<-DAO(R`c?=0=Q^ym!6ITWq0uw+4%=+3Sq&{=8 z2Hg_6Ig+XbZdHin6X4OUGy#!|1DWgR37rR8v;6`x$-g<92^OGl0HXS>G>c;c^l5d! zPrSi(9(=Ba&*gp0Zyji5^IL1%#o~>B*-4f;zr)$H{S7b3jQ=SdHfp{8O@)H3R63MU zSBmUL_=tF4d8a{RpCZv0fr_X4w3Bxxg<-eDW~EEVOFewivWO*ccn8No+9~RhjOY$$ zmv)+ixV!Nmp?e|1xwy_xLpsGEXux&s4o#$aDTB?!fshIZ@W80W23yPXTV^U$Y?!Hj$B$H3`0U5)?A`+nj3YXT)d#`}|=O@c6Fp zGY|*c@_({8kVBkhE5GRzziht>MkjtmTt1O$CSGR{=pP6|*%b36kc%d!9fTh5r{vm} z9y<(5eFN0BV&WR&_MDebTqP0E}o6tdT(Z z8MLXF#VpjbhT6bctk6}3f8(Cs3?6NPZo6Ff)4q+NZmjCYS>3o+8(_78s~c>!L983$ z%0^_h5wC89)*FIlLtAYq)(vsJVOearEB~K+R&ByfL#EnK+7MfQfPaM(v9ofrtg-OF F_HQ(5Ya;*v diff --git a/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-ios-ltr-Mobile-Safari-linux.png b/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-ios-ltr-Mobile-Safari-linux.png deleted file mode 100644 index 763572ddc846fe5d82f0f318ef0bc5f9319b61b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9429 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 NCk;>J9zS>ezX8?C%=7>N diff --git a/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-md-ltr-Mobile-Chrome-linux.png b/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-md-ltr-Mobile-Chrome-linux.png deleted file mode 100644 index 10e9806c874cd30d0d611df9d3b2c53059c6ae9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8388 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 b_$s?DF4dBd6L}WQ4l&d-xsrGJ_T&Eo*T6oU diff --git a/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-md-ltr-Mobile-Firefox-linux.png b/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-md-ltr-Mobile-Firefox-linux.png deleted file mode 100644 index 24b45b3112e24442a5c1be2e47152f53f01b6782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14135 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 H|JDBi11ZS2 diff --git a/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-md-ltr-Mobile-Safari-linux.png b/core/src/components/item/test/css-variables/item.e2e.ts-snapshots/item-css-vars-diff-md-ltr-Mobile-Safari-linux.png deleted file mode 100644 index dbcf1f27b7a4499299f4ea149b5fb6966f725ca5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9958 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 { + test.describe(title('item: custom'), () => { + test.describe('CSS shadow parts', () => { + test('should be able to customize native part', async ({ page }) => { + await page.setContent( + ` + + + + Item + + `, + config + ); + + const item = page.locator('ion-item'); + const backgroundColor = await item.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const native = shadowRoot?.querySelector('.item-native'); + return native ? window.getComputedStyle(native).backgroundColor : ''; + }); + expect(backgroundColor).toBe('rgb(255, 0, 0)'); + }); + + test('should be able to customize inner part', async ({ page }) => { + await page.setContent( + ` + + + + Item + + `, + config + ); + + const item = page.locator('ion-item'); + const backgroundColor = await item.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const inner = shadowRoot?.querySelector('.item-inner'); + return inner ? window.getComputedStyle(inner).backgroundColor : ''; + }); + expect(backgroundColor).toBe('rgb(0, 128, 0)'); + }); + + test('should be able to customize container part', async ({ page }) => { + await page.setContent( + ` + + + + Item + + `, + config + ); + + const item = page.locator('ion-item'); + const backgroundColor = await item.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const container = shadowRoot?.querySelector('.input-wrapper'); + return container ? window.getComputedStyle(container).backgroundColor : ''; + }); + expect(backgroundColor).toBe('rgb(0, 0, 255)'); + }); + + test('should be able to customize detail-icon part', async ({ page }) => { + await page.setContent( + ` + + + + Item + + `, + config + ); + + const item = page.locator('ion-item'); + const backgroundColor = await item.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const detailIcon = shadowRoot?.querySelector('.item-detail-icon'); + return detailIcon ? window.getComputedStyle(detailIcon).backgroundColor : ''; + }); + expect(backgroundColor).toBe('rgb(255, 0, 0)'); + }); + }); + + test.describe('CSS variables', () => { + test('should be able to customize background using css variables', async ({ page }) => { + await page.setContent( + ` + + + + Item + + `, + config + ); + + const item = page.locator('ion-item'); + const backgroundColor = await item.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const native = shadowRoot?.querySelector('.item-native'); + return native ? window.getComputedStyle(native).backgroundColor : ''; + }); + expect(backgroundColor).toBe('rgb(255, 0, 0)'); + }); + + test('should be able to customize padding using css variables', async ({ page }) => { + await page.setContent( + ` + + + + Item + + `, + config + ); + + const item = page.locator('ion-item'); + const paddingValues = await item.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const native = shadowRoot?.querySelector('.item-native'); + return { + paddingTop: native ? window.getComputedStyle(native).paddingTop : '', + paddingBottom: native ? window.getComputedStyle(native).paddingBottom : '', + paddingStart: native ? window.getComputedStyle(native).paddingLeft : '', + paddingEnd: native ? window.getComputedStyle(native).paddingRight : '', + }; + }); + expect(paddingValues.paddingTop).toBe('20px'); + expect(paddingValues.paddingBottom).toBe('20px'); + expect(paddingValues.paddingStart).toBe('10px'); + expect(paddingValues.paddingEnd).toBe('10px'); + }); + }); + }); +}); From 2be39da9d33464540c6467ab3e13c466b512f707 Mon Sep 17 00:00:00 2001 From: OS-jacobbell <228905018+OS-jacobbell@users.noreply.github.com> Date: Fri, 27 Feb 2026 09:22:36 -0700 Subject: [PATCH 113/126] docs(stencil): document `externalRuntime: false` in config (#30975) ## Does this introduce a breaking change? - [ ] Yes - [X] No --- core/stencil.config.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/stencil.config.ts b/core/stencil.config.ts index 1e457e264c6..8a090b65bff 100644 --- a/core/stencil.config.ts +++ b/core/stencil.config.ts @@ -227,6 +227,11 @@ export const config: Config = { warn: true }], includeGlobalScripts: false, + /** + * External Runtime uses default runtime settings instead of this file's definitions. Disabling it enables + * `experimentalSlotFixes` to be applied and prevents `@stencil/core/internal/client` from being imported, which + * contains a dynamic import that caused a warning in Angular. + */ externalRuntime: false, }, { From 5cdeb7fd357298f15e7ae29b14412d97bdc7c656 Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Fri, 27 Feb 2026 12:53:49 -0500 Subject: [PATCH 114/126] feat(item-divider): add inner and container parts (#30928) Issue number: N/A --------- ## What is the current behavior? The inner structural elements of item-divider are not exposed as shadow parts, preventing users from being able to customize their styles directly. ## What is the new behavior? - Exposes `inner` and `container` shadow parts - Adds e2e test coverage for customizing the shadow parts ## Does this introduce a breaking change? - [ ] Yes - [x] No --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/api.txt | 2 + .../components/item-divider/item-divider.tsx | 7 ++- .../test/custom/item-divider.e2e.ts | 57 +++++++++++++++++++ 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 core/src/components/item-divider/test/custom/item-divider.e2e.ts diff --git a/core/api.txt b/core/api.txt index 7d28f5139c2..fc57c79d1c2 100644 --- a/core/api.txt +++ b/core/api.txt @@ -968,6 +968,8 @@ ion-item-divider,css-prop,--padding-start,ios ion-item-divider,css-prop,--padding-start,md ion-item-divider,css-prop,--padding-top,ios ion-item-divider,css-prop,--padding-top,md +ion-item-divider,part,container +ion-item-divider,part,inner ion-item-group,none diff --git a/core/src/components/item-divider/item-divider.tsx b/core/src/components/item-divider/item-divider.tsx index ac449ffa3ad..0febf393300 100644 --- a/core/src/components/item-divider/item-divider.tsx +++ b/core/src/components/item-divider/item-divider.tsx @@ -11,6 +11,9 @@ import type { Color } from '../../interface'; * @slot - Content is placed between the named slots if provided without a slot. * @slot start - Content is placed to the left of the divider text in LTR, and to the right in RTL. * @slot end - Content is placed to the right of the divider text in LTR, and to the left in RTL. + * + * @part inner - The inner wrapper element that arranges the divider content. + * @part container - The wrapper element that contains the default slot. */ @Component({ tag: 'ion-item-divider', @@ -50,8 +53,8 @@ export class ItemDivider implements ComponentInterface { })} > -
-
+
+
diff --git a/core/src/components/item-divider/test/custom/item-divider.e2e.ts b/core/src/components/item-divider/test/custom/item-divider.e2e.ts new file mode 100644 index 00000000000..497d607a2b8 --- /dev/null +++ b/core/src/components/item-divider/test/custom/item-divider.e2e.ts @@ -0,0 +1,57 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +/** + * This behavior does not vary across modes/directions + */ +configs({ directions: ['ltr'], modes: ['md'] }).forEach(({ title, config }) => { + test.describe(title('item-divider: custom'), () => { + test.describe('CSS shadow parts', () => { + test('should be able to customize inner part', async ({ page }) => { + await page.setContent( + ` + + + Divider + `, + config + ); + + const divider = page.locator('ion-item-divider'); + const backgroundColor = await divider.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const inner = shadowRoot?.querySelector('.item-divider-inner'); + return inner ? window.getComputedStyle(inner).backgroundColor : ''; + }); + expect(backgroundColor).toBe('rgb(255, 0, 0)'); + }); + + test('should be able to customize container part', async ({ page }) => { + await page.setContent( + ` + + + Divider + `, + config + ); + + const divider = page.locator('ion-item-divider'); + const backgroundColor = await divider.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const container = shadowRoot?.querySelector('.item-divider-wrapper'); + return container ? window.getComputedStyle(container).backgroundColor : ''; + }); + expect(backgroundColor).toBe('rgb(0, 128, 0)'); + }); + }); + }); +}); From f8f7ffda318c0143d9bb5c79fe55b4ecb88e6ce3 Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Fri, 27 Feb 2026 13:26:01 -0500 Subject: [PATCH 115/126] feat(item-option): add inner and container parts (#30929) Issue number: N/A --------- ## What is the current behavior? The inner structural elements of item-option are not exposed as shadow parts, preventing users from being able to customize their styles directly. ## What is the new behavior? - Exposes `inner` and `container` shadow parts - Adds e2e test coverage for customizing the shadow parts ## Does this introduce a breaking change? - [ ] Yes - [x] No --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/api.txt | 2 + .../components/item-option/item-option.tsx | 6 +- .../test/custom/item-option.e2e.ts | 80 +++++++++++++++++++ 3 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 core/src/components/item-option/test/custom/item-option.e2e.ts diff --git a/core/api.txt b/core/api.txt index fc57c79d1c2..db226fdcadc 100644 --- a/core/api.txt +++ b/core/api.txt @@ -987,6 +987,8 @@ ion-item-option,css-prop,--background,ios ion-item-option,css-prop,--background,md ion-item-option,css-prop,--color,ios ion-item-option,css-prop,--color,md +ion-item-option,part,container +ion-item-option,part,inner ion-item-option,part,native ion-item-options,none diff --git a/core/src/components/item-option/item-option.tsx b/core/src/components/item-option/item-option.tsx index 81bee8b8fef..c3cae1a9e2f 100644 --- a/core/src/components/item-option/item-option.tsx +++ b/core/src/components/item-option/item-option.tsx @@ -17,6 +17,8 @@ import type { Color } from '../../interface'; * @slot end - Content is placed to the right of the option text in LTR, and to the left in RTL. * * @part native - The native HTML button or anchor element that wraps all child elements. + * @part inner - The inner wrapper element that arranges the option content. + * @part container - The container element that wraps the start, icon-only, default, and end slots. */ @Component({ tag: 'ion-item-option', @@ -109,9 +111,9 @@ export class ItemOption implements ComponentInterface, AnchorInterface, ButtonIn })} > - + -
+
diff --git a/core/src/components/item-option/test/custom/item-option.e2e.ts b/core/src/components/item-option/test/custom/item-option.e2e.ts new file mode 100644 index 00000000000..b1a44d7dc6f --- /dev/null +++ b/core/src/components/item-option/test/custom/item-option.e2e.ts @@ -0,0 +1,80 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +/** + * This behavior does not vary across modes/directions + */ +configs({ directions: ['ltr'], modes: ['md'] }).forEach(({ title, config }) => { + test.describe(title('item-option: custom'), () => { + test.describe('CSS shadow parts', () => { + test('should be able to customize native part', async ({ page }) => { + await page.setContent( + ` + + + Option + `, + config + ); + + const itemOption = page.locator('ion-item-option'); + const backgroundColor = await itemOption.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const native = shadowRoot?.querySelector('.button-native'); + return native ? window.getComputedStyle(native).backgroundColor : ''; + }); + expect(backgroundColor).toBe('rgb(255, 0, 0)'); + }); + + test('should be able to customize inner part', async ({ page }) => { + await page.setContent( + ` + + + Option + `, + config + ); + + const itemOption = page.locator('ion-item-option'); + const backgroundColor = await itemOption.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const inner = shadowRoot?.querySelector('.button-inner'); + return inner ? window.getComputedStyle(inner).backgroundColor : ''; + }); + expect(backgroundColor).toBe('rgb(0, 128, 0)'); + }); + + test('should be able to customize container part', async ({ page }) => { + await page.setContent( + ` + + + Option + `, + config + ); + + const itemOption = page.locator('ion-item-option'); + const backgroundColor = await itemOption.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const container = shadowRoot?.querySelector('.horizontal-wrapper'); + return container ? window.getComputedStyle(container).backgroundColor : ''; + }); + expect(backgroundColor).toBe('rgb(0, 0, 255)'); + }); + }); + }); +}); From ef73476e08670630907e775a38f9ed30a84e3f1f Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Fri, 27 Feb 2026 13:40:42 -0500 Subject: [PATCH 116/126] feat(list-header): add inner part (#30930) Issue number: N/A --------- ## What is the current behavior? The inner structural element of list-header is not exposed as a shadow part, preventing users from being able to customize its styles directly. ## What is the new behavior? - Exposes `inner` shadow part - Adds e2e test coverage for customizing the shadow part ## Does this introduce a breaking change? - [ ] Yes - [x] No --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/api.txt | 1 + .../components/list-header/list-header.tsx | 4 ++- .../test/custom/list-header.e2e.ts | 34 +++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 core/src/components/list-header/test/custom/list-header.e2e.ts diff --git a/core/api.txt b/core/api.txt index db226fdcadc..f372d95883b 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1033,6 +1033,7 @@ ion-list-header,css-prop,--color,ios ion-list-header,css-prop,--color,md ion-list-header,css-prop,--inner-border-width,ios ion-list-header,css-prop,--inner-border-width,md +ion-list-header,part,inner ion-loading,scoped ion-loading,prop,animated,boolean,true,false,false diff --git a/core/src/components/list-header/list-header.tsx b/core/src/components/list-header/list-header.tsx index 8fb939c1277..0cb2b2837c3 100644 --- a/core/src/components/list-header/list-header.tsx +++ b/core/src/components/list-header/list-header.tsx @@ -7,6 +7,8 @@ import type { Color } from '../../interface'; /** * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use. + * + * @part inner - The inner wrapper element that arranges the list header content. */ @Component({ tag: 'ion-list-header', @@ -40,7 +42,7 @@ export class ListHeader implements ComponentInterface { [`list-header-lines-${lines}`]: lines !== undefined, })} > -
+
diff --git a/core/src/components/list-header/test/custom/list-header.e2e.ts b/core/src/components/list-header/test/custom/list-header.e2e.ts new file mode 100644 index 00000000000..64a7ae105de --- /dev/null +++ b/core/src/components/list-header/test/custom/list-header.e2e.ts @@ -0,0 +1,34 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +/** + * This behavior does not vary across modes/directions + */ +configs({ directions: ['ltr'], modes: ['md'] }).forEach(({ title, config }) => { + test.describe(title('list-header: custom'), () => { + test.describe('CSS shadow parts', () => { + test('should be able to customize inner part', async ({ page }) => { + await page.setContent( + ` + + + Header + `, + config + ); + + const header = page.locator('ion-list-header'); + const backgroundColor = await header.evaluate((el) => { + const shadowRoot = el.shadowRoot; + const inner = shadowRoot?.querySelector('.list-header-inner'); + return inner ? window.getComputedStyle(inner).backgroundColor : ''; + }); + expect(backgroundColor).toBe('rgb(255, 0, 0)'); + }); + }); + }); +}); From 5bcf92184118055483bf306ab9e319b8e3e61870 Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Wed, 4 Mar 2026 10:36:50 -0500 Subject: [PATCH 117/126] feat(range): add classes and expose parts to allow individual styling of dual knobs (#30941) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue number: resolves #29862 --------- ## What is the current behavior? Range exposes a single part for both knobs & pins. This makes it impossible to style the knobs/pins differently when dual knobs is enabled. ## What is the new behavior? - Fixes a bug where the knobs would swap A & B when they cross over each other - Fixes the focus behavior so that dual knobs act the same as a single knob range when focusing a knob - Adds the following classes to the host element when `dualKnobs` is enabled: - `range-dual-knobs` - `range-pressed-a` when the knob with name A is pressed - `range-pressed-b` when the knob with name B is pressed - `range-pressed-lower` when the lower knob is pressed - `range-pressed-upper` when the upper knob is pressed - Adds parts for the following: - `knob-handle-a` β€” The container for the knob with the static `A` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. - `knob-handle-b` β€” The container for the knob with the static `B` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. - `knob-handle-lower` β€” The container for the knob whose current `value` is `lower` when `dualKnobs` is `true`. The lower and upper parts swap which knob handle they refer to when the knobs cross. - `knob-handle-upper` β€” The container for the knob whose current `value` is `upper` when `dualKnobs` is `true`. The lower and upper parts swap which knob handle they refer to when the knobs cross. - `pin-a` β€” The value indicator above the knob with the static `A` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. - `pin-b` β€” The value indicator above the knob with the static `B` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. - `pin-lower` β€” The value indicator above the knob whose current `value` is `lower` when `dualKnobs` is `true`. The lower and upper parts swap which pin they refer to when the knobs cross. - `pin-upper` β€” The value indicator above the knob whose current `value` is `upper` when `dualKnobs` is `true`. The lower and upper parts swap which pin they refer to when the knobs cross. - `knob-a` β€” The visual knob for the static `A` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. - `knob-b` β€” The visual knob for the static `B` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. - `knob-lower` β€” The visual knob whose current `value` is `lower` when `dualKnobs` is `true`. The lower and upper parts swap which knob they refer to when the knobs cross. - `knob-upper` β€” The visual knob whose current `value` is `upper` when `dualKnobs` is `true`. The lower and upper parts swap which knob they refer to when the knobs cross. - `activated` β€” Added to the knob-handle, knob, and pin when the knob is active. Only one set has this part at a time when `dualKnobs` is `true`. - `focused` β€” Added to the knob-handle, knob, and pin that currently has focus. Only one set has this part at a time when `dualKnobs` is `true`. - `hover` β€” Added to the knob-handle, knob, and pin when the knob has hover. Only one set has this part at a time when `dualKnobs` is `true`. - `pressed` β€” Added to the knob-handle, knob, and pin that is currently being pressed to drag. Only one set has this part at a time when `dualKnobs` is `true`. - Adds e2e tests for the following: - customizing label part - customizing bar parts - customizing pin parts - customizing tick parts - customizing knob parts - customizing dual knob a & b parts - customizing dual knob lower & upper parts - verifies that a & b parts stay on the original elements but lower & upper parts swap when the values swap - Adds spec tests for the following: - css classes - value state classes - boolean property classes - pressed state classes - shadow parts - static shadow parts - verifies the shadow parts exist based on the existence of certain range properties - state shadow parts - verifies the shadow parts exist based on the state of the range knob (pressed, focused, activated, hover) ## Does this introduce a breaking change? - [ ] Yes - [x] No --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/api.txt | 17 + core/setupJest.js | 4 +- core/src/components/range/range-interface.ts | 2 + core/src/components/range/range.tsx | 285 ++++++-- .../components/range/test/basic/range.spec.ts | 22 +- .../components/range/test/custom/index.html | 360 ++++++++++ .../components/range/test/custom/range.e2e.ts | 426 ++++++++++- ...nge-custom-ios-ltr-Mobile-Chrome-linux.png | Bin 1953 -> 0 bytes ...ge-custom-ios-ltr-Mobile-Firefox-linux.png | Bin 2738 -> 0 bytes ...nge-custom-ios-ltr-Mobile-Safari-linux.png | Bin 1948 -> 0 bytes ...ange-custom-md-ltr-Mobile-Chrome-linux.png | Bin 751 -> 0 bytes ...nge-custom-md-ltr-Mobile-Firefox-linux.png | Bin 1092 -> 0 bytes ...ange-custom-md-ltr-Mobile-Safari-linux.png | Bin 782 -> 0 bytes core/src/components/range/test/range.spec.ts | 661 ++++++++++++++++-- 14 files changed, 1638 insertions(+), 139 deletions(-) delete mode 100644 core/src/components/range/test/custom/range.e2e.ts-snapshots/range-custom-ios-ltr-Mobile-Chrome-linux.png delete mode 100644 core/src/components/range/test/custom/range.e2e.ts-snapshots/range-custom-ios-ltr-Mobile-Firefox-linux.png delete mode 100644 core/src/components/range/test/custom/range.e2e.ts-snapshots/range-custom-ios-ltr-Mobile-Safari-linux.png delete mode 100644 core/src/components/range/test/custom/range.e2e.ts-snapshots/range-custom-md-ltr-Mobile-Chrome-linux.png delete mode 100644 core/src/components/range/test/custom/range.e2e.ts-snapshots/range-custom-md-ltr-Mobile-Firefox-linux.png delete mode 100644 core/src/components/range/test/custom/range.e2e.ts-snapshots/range-custom-md-ltr-Mobile-Safari-linux.png diff --git a/core/api.txt b/core/api.txt index f372d95883b..80e9632d489 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1488,11 +1488,28 @@ ion-range,css-prop,--pin-background,ios ion-range,css-prop,--pin-background,md ion-range,css-prop,--pin-color,ios ion-range,css-prop,--pin-color,md +ion-range,part,activated ion-range,part,bar ion-range,part,bar-active +ion-range,part,focused +ion-range,part,hover ion-range,part,knob +ion-range,part,knob-a +ion-range,part,knob-b +ion-range,part,knob-handle +ion-range,part,knob-handle-a +ion-range,part,knob-handle-b +ion-range,part,knob-handle-lower +ion-range,part,knob-handle-upper +ion-range,part,knob-lower +ion-range,part,knob-upper ion-range,part,label ion-range,part,pin +ion-range,part,pin-a +ion-range,part,pin-b +ion-range,part,pin-lower +ion-range,part,pin-upper +ion-range,part,pressed ion-range,part,tick ion-range,part,tick-active diff --git a/core/setupJest.js b/core/setupJest.js index f2eb0e70a31..77ea127c680 100644 --- a/core/setupJest.js +++ b/core/setupJest.js @@ -8,7 +8,9 @@ expect.extend({ throw new Error('expected toHaveShadowPart to be called on an element with a shadow root'); } - const shadowPart = received.shadowRoot.querySelector(`[part="${part}"]`); + // Use attribute selector with ~= to match space-separated part values + // e.g., [part~="knob"] matches elements with part="knob" or part="knob knob-a" + const shadowPart = received.shadowRoot.querySelector(`[part~="${part}"]`); const pass = shadowPart !== null; const message = `expected ${received.tagName.toLowerCase()} to have shadow part "${part}"`; diff --git a/core/src/components/range/range-interface.ts b/core/src/components/range/range-interface.ts index 1908bbab172..9cc696d90e3 100644 --- a/core/src/components/range/range-interface.ts +++ b/core/src/components/range/range-interface.ts @@ -1,5 +1,7 @@ export type KnobName = 'A' | 'B' | undefined; +export type KnobPosition = 'lower' | 'upper' | undefined; + export type RangeValue = number | { lower: number; upper: number }; export type PinFormatter = (value: number) => number | string; diff --git a/core/src/components/range/range.tsx b/core/src/components/range/range.tsx index 431dbe4b7fe..26e5ef785dd 100644 --- a/core/src/components/range/range.tsx +++ b/core/src/components/range/range.tsx @@ -1,5 +1,5 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; -import { Component, Element, Event, Host, Prop, State, Watch, h } from '@stencil/core'; +import { Build, Component, Element, Event, Host, Prop, State, Watch, h } from '@stencil/core'; import { findClosestIonContent, disableContentScrollY, resetContentScrollY } from '@utils/content'; import type { Attributes } from '@utils/helpers'; import { inheritAriaAttributes, clamp, debounceEvent, renderHiddenInput, isSafeNumber } from '@utils/helpers'; @@ -13,6 +13,7 @@ import { roundToMaxDecimalPlaces } from '../../utils/floating-point'; import type { KnobName, + KnobPosition, RangeChangeEventDetail, RangeKnobMoveEndEventDetail, RangeKnobMoveStartEventDetail, @@ -29,13 +30,30 @@ import type { * @slot start - Content is placed to the left of the range slider in LTR, and to the right in RTL. * @slot end - Content is placed to the right of the range slider in LTR, and to the left in RTL. * + * @part label - The label text describing the range. * @part tick - An inactive tick mark. * @part tick-active - An active tick mark. - * @part pin - The counter that appears above a knob. - * @part knob - The handle that is used to drag the range. * @part bar - The inactive part of the bar. * @part bar-active - The active part of the bar. - * @part label - The label text describing the range. + * @part knob-handle - The container that wraps the knob and handles drag interactions. + * @part knob-handle-a - The container for the knob with the static `A` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. + * @part knob-handle-b - The container for the knob with the static `B` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. + * @part knob-handle-lower - The container for the knob whose current `value` is `lower` when `dualKnobs` is `true`. The lower and upper parts swap which knob handle they refer to when the knobs cross. + * @part knob-handle-upper - The container for the knob whose current `value` is `upper` when `dualKnobs` is `true`. The lower and upper parts swap which knob handle they refer to when the knobs cross. + * @part pin - The value indicator displayed above a knob. + * @part pin-a - The value indicator above the knob with the static `A` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. + * @part pin-b - The value indicator above the knob with the static `B` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. + * @part pin-lower - The value indicator above the knob whose current `value` is `lower` when `dualKnobs` is `true`. The lower and upper parts swap which pin they refer to when the knobs cross. + * @part pin-upper - The value indicator above the knob whose current `value` is `upper` when `dualKnobs` is `true`. The lower and upper parts swap which pin they refer to when the knobs cross. + * @part knob - The visual knob element on the range track. + * @part knob-a - The visual knob for the static `A` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. + * @part knob-b - The visual knob for the static `B` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value. + * @part knob-lower - The visual knob whose current `value` is `lower` when `dualKnobs` is `true`. The lower and upper parts swap which knob they refer to when the knobs cross. + * @part knob-upper - The visual knob whose current `value` is `upper` when `dualKnobs` is `true`. The lower and upper parts swap which knob they refer to when the knobs cross. + * @part activated - Added to the knob-handle, knob, and pin when the knob is active. Only one set has this part at a time when `dualKnobs` is `true`. + * @part focused - Added to the knob-handle, knob, and pin that currently has focus. Only one set has this part at a time when `dualKnobs` is `true`. + * @part hover - Added to the knob-handle, knob, and pin when the knob has hover. Only one set has this part at a time when `dualKnobs` is `true`. + * @part pressed - Added to the knob-handle, knob, and pin that is currently being pressed to drag. Only one set has this part at a time when `dualKnobs` is `true`. */ @Component({ tag: 'ion-range', @@ -57,11 +75,27 @@ export class Range implements ComponentInterface { private contentEl: HTMLElement | null = null; private initialContentScrollY = true; private originalIonInput?: EventEmitter; + /** + * Used to avoid setting the focused state on click or tap. The focused + * state is only set when the focus comes from the keyboard (e.g. Tab). + * This is set to true on pointer down (mouse/touch). + */ + private focusFromPointer = false; + /** + * Observes class changes on the knob handles to keep the activatedKnob + * state in sync with the ion-activated class. This is necessary to + * determine which knob the user is dragging when using dual knobs and + * apply the activated part correctly. + */ + private activatedObserver?: MutationObserver; @Element() el!: HTMLIonRangeElement; @State() private ratioA = 0; @State() private ratioB = 0; + @State() private activatedKnob: KnobName; + @State() private focusedKnob: KnobName; + @State() private hoveredKnob: KnobName; @State() private pressedKnob: KnobName; /** @@ -324,6 +358,34 @@ export class Range implements ComponentInterface { } }; + /** + * Observes the knob handles for the ion-activated class and syncs + * activatedKnob so the activated part is correctly set on the handle, + * knob, and pin. + */ + private setupActivatedObserver = () => { + const knobHandleA = this.el.shadowRoot!.querySelector('.range-knob-handle-a'); + const knobHandleB = this.el.shadowRoot!.querySelector('.range-knob-handle-b'); + + const syncActivated = () => { + this.activatedKnob = (knobHandleA as HTMLElement)?.classList.contains('ion-activated') + ? 'A' + : (knobHandleB as HTMLElement)?.classList.contains('ion-activated') + ? 'B' + : undefined; + }; + + if (Build.isBrowser && typeof MutationObserver !== 'undefined') { + this.activatedObserver = new MutationObserver(syncActivated); + this.activatedObserver.observe(this.el.shadowRoot!, { + attributes: true, + attributeFilter: ['class'], + subtree: true, + }); + } + syncActivated(); + }; + componentWillLoad() { /** * If user has custom ID set then we should @@ -345,6 +407,7 @@ export class Range implements ComponentInterface { this.originalIonInput = this.ionInput; this.setupGesture(); this.updateRatio(); + this.setupActivatedObserver(); this.didLoad = true; } @@ -362,6 +425,7 @@ export class Range implements ComponentInterface { */ if (this.didLoad) { this.setupGesture(); + this.setupActivatedObserver(); } const ionContent = findClosestIonContent(this.el); @@ -373,6 +437,10 @@ export class Range implements ComponentInterface { this.gesture.destroy(); this.gesture = undefined; } + if (this.activatedObserver) { + this.activatedObserver.disconnect(); + this.activatedObserver = undefined; + } } private handleKeyboard = (knob: KnobName, isIncrease: boolean) => { @@ -467,7 +535,7 @@ export class Range implements ComponentInterface { * started dragging the knob. * * This is necessary to determine which knob the user is dragging, - * especially when it's a dual knob. + * especially when using dual knobs. * Plus, it determines when to apply certain styles. * * This only needs to be done once since the knob won't change @@ -496,7 +564,7 @@ export class Range implements ComponentInterface { * dragged the knob. They just tapped on the bar. * * This is necessary to determine which knob the user is changing, - * especially when it's a dual knob. + * especially when using dual knobs. * Plus, it determines when to apply certain styles. */ if (this.pressedKnob === undefined) { @@ -515,6 +583,7 @@ export class Range implements ComponentInterface { // update the active knob's position this.update(currentX); + /** * Reset the pressed knob to undefined since the user * may start dragging a different knob in the next gesture event. @@ -559,8 +628,6 @@ export class Range implements ComponentInterface { ratio = 1 - ratio; } this.pressedKnob = !this.dualKnobs || Math.abs(this.ratioA - ratio) < Math.abs(this.ratioB - ratio) ? 'A' : 'B'; - - this.setFocus(this.pressedKnob); } private get valA() { @@ -592,9 +659,26 @@ export class Range implements ComponentInterface { private updateRatio() { const value = this.getValue() as any; const { min, max } = this; + + /** + * For dual knobs, value gives lower/upper but not which is A vs B. + * Assign (lowerRatio, upperRatio) to (ratioA, ratioB) in the way that + * minimizes change from the current ratios so the knobs don't swap. + */ if (this.dualKnobs) { - this.ratioA = valueToRatio(value.lower, min, max); - this.ratioB = valueToRatio(value.upper, min, max); + const lowerRatio = valueToRatio(value.lower, min, max); + const upperRatio = valueToRatio(value.upper, min, max); + + if ( + Math.abs(this.ratioA - lowerRatio) + Math.abs(this.ratioB - upperRatio) <= + Math.abs(this.ratioA - upperRatio) + Math.abs(this.ratioB - lowerRatio) + ) { + this.ratioA = lowerRatio; + this.ratioB = upperRatio; + } else { + this.ratioA = upperRatio; + this.ratioB = lowerRatio; + } } else { this.ratioA = valueToRatio(value, min, max); } @@ -614,20 +698,10 @@ export class Range implements ComponentInterface { this.noUpdate = false; } - private setFocus(knob: KnobName) { - if (this.el.shadowRoot) { - const knobEl = this.el.shadowRoot.querySelector(knob === 'A' ? '.range-knob-a' : '.range-knob-b') as - | HTMLElement - | undefined; - if (knobEl) { - knobEl.focus(); - } - } - } - private onBlur = () => { if (this.hasFocus) { this.hasFocus = false; + this.focusedKnob = undefined; this.ionBlur.emit(); } }; @@ -640,24 +714,20 @@ export class Range implements ComponentInterface { }; private onKnobFocus = (knob: KnobName) => { + // Clicking focuses the range which is needed for the keyboard, + // but we only want to add the ion-focused class when focused via Tab. + if (!this.focusFromPointer) { + this.focusedKnob = knob; + } else { + this.focusFromPointer = false; + this.focusedKnob = undefined; + } + + // If the knob was not already focused, emit the focus event if (!this.hasFocus) { this.hasFocus = true; this.ionFocus.emit(); } - - // Manually manage ion-focused class for dual knobs - if (this.dualKnobs && this.el.shadowRoot) { - const knobA = this.el.shadowRoot.querySelector('.range-knob-a'); - const knobB = this.el.shadowRoot.querySelector('.range-knob-b'); - - // Remove ion-focused from both knobs first - knobA?.classList.remove('ion-focused'); - knobB?.classList.remove('ion-focused'); - - // Add ion-focused only to the focused knob - const focusedKnobEl = knob === 'A' ? knobA : knobB; - focusedKnobEl?.classList.add('ion-focused'); - } }; private onKnobBlur = () => { @@ -670,20 +740,21 @@ export class Range implements ComponentInterface { if (!isStillFocusedOnKnob) { if (this.hasFocus) { this.hasFocus = false; + this.focusedKnob = undefined; this.ionBlur.emit(); } - - // Remove ion-focused from both knobs when focus leaves the range - if (this.dualKnobs && this.el.shadowRoot) { - const knobA = this.el.shadowRoot.querySelector('.range-knob-a'); - const knobB = this.el.shadowRoot.querySelector('.range-knob-b'); - knobA?.classList.remove('ion-focused'); - knobB?.classList.remove('ion-focused'); - } } }, 0); }; + private onKnobMouseEnter = (knob: KnobName) => { + this.hoveredKnob = knob; + }; + + private onKnobMouseLeave = () => { + this.hoveredKnob = undefined; + }; + /** * Returns true if content was passed to the "start" slot */ @@ -708,6 +779,9 @@ export class Range implements ComponentInterface { max, step, handleKeyboard, + activatedKnob, + focusedKnob, + hoveredKnob, pressedKnob, disabled, pin, @@ -790,6 +864,9 @@ export class Range implements ComponentInterface {
(this.rangeSlider = rangeEl)} + onPointerDown={() => { + this.focusFromPointer = true; + }} /** * Since the gesture has a threshold, the value * won't change until the user has dragged past @@ -802,6 +879,8 @@ export class Range implements ComponentInterface { * we need to listen for the "pointerUp" event. */ onPointerUp={(ev: PointerEvent) => { + this.focusFromPointer = false; + /** * If the user drags the knob on the web * version (does not occur on mobile), @@ -848,6 +927,11 @@ export class Range implements ComponentInterface { {renderKnob(rtl, { knob: 'A', + position: getKnobPosition('A', this.ratioA, this.ratioB, this.dualKnobs), + dualKnobs: this.dualKnobs, + activated: activatedKnob === 'A', + focused: focusedKnob === 'A', + hovered: hoveredKnob === 'A', pressed: pressedKnob === 'A', value: this.valA, ratio: this.ratioA, @@ -860,11 +944,18 @@ export class Range implements ComponentInterface { inheritedAttributes, onKnobFocus: this.onKnobFocus, onKnobBlur: this.onKnobBlur, + onKnobMouseEnter: this.onKnobMouseEnter, + onKnobMouseLeave: this.onKnobMouseLeave, })} {this.dualKnobs && renderKnob(rtl, { knob: 'B', + position: getKnobPosition('B', this.ratioA, this.ratioB, this.dualKnobs), + dualKnobs: this.dualKnobs, + activated: activatedKnob === 'B', + focused: focusedKnob === 'B', + hovered: hoveredKnob === 'B', pressed: pressedKnob === 'B', value: this.valB, ratio: this.ratioB, @@ -877,6 +968,8 @@ export class Range implements ComponentInterface { inheritedAttributes, onKnobFocus: this.onKnobFocus, onKnobBlur: this.onKnobBlur, + onKnobMouseEnter: this.onKnobMouseEnter, + onKnobMouseLeave: this.onKnobMouseLeave, })}
); @@ -906,6 +999,14 @@ export class Range implements ComponentInterface { const mode = getIonMode(this); + /** + * Determine the name and position of the pressed knob to apply + * Host classes for styling. + */ + const pressedKnobName = dualKnobs ? pressedKnob?.toLowerCase() : undefined; + const pressedKnobPosition = + dualKnobs && pressedKnob ? getKnobPosition(pressedKnob, this.ratioA, this.ratioB, dualKnobs) : undefined; + /** * Determine if any knob is at the min or max value to * apply Host classes for styling. @@ -924,7 +1025,10 @@ export class Range implements ComponentInterface { [mode]: true, 'in-item': inItem, 'range-disabled': disabled, + 'range-dual-knobs': dualKnobs, 'range-pressed': pressedKnob !== undefined, + [`range-pressed-${pressedKnobName}`]: pressedKnob !== undefined && pressedKnobName !== undefined, + [`range-pressed-${pressedKnobPosition}`]: pressedKnob !== undefined && pressedKnobPosition !== undefined, 'range-has-pin': pin, [`range-label-placement-${labelPlacement}`]: true, 'range-item-start-adjustment': needsStartAdjustment, @@ -956,29 +1060,41 @@ export class Range implements ComponentInterface { interface RangeKnob { knob: KnobName; + position: KnobPosition; + dualKnobs: boolean; value: number; ratio: number; min: number; max: number; disabled: boolean; pressed: boolean; + focused: boolean; + hovered: boolean; + activated: boolean; pin: boolean; pinFormatter: PinFormatter; inheritedAttributes: Attributes; handleKeyboard: (name: KnobName, isIncrease: boolean) => void; onKnobFocus: (knob: KnobName) => void; onKnobBlur: () => void; + onKnobMouseEnter: (knob: KnobName) => void; + onKnobMouseLeave: () => void; } const renderKnob = ( rtl: boolean, { knob, + position, + dualKnobs, value, ratio, min, max, disabled, + activated, + focused, + hovered, pressed, pin, handleKeyboard, @@ -986,6 +1102,8 @@ const renderKnob = ( inheritedAttributes, onKnobFocus, onKnobBlur, + onKnobMouseEnter, + onKnobMouseLeave, }: RangeKnob ) => { const start = rtl ? 'right' : 'left'; @@ -1017,16 +1135,32 @@ const renderKnob = ( }} onFocus={() => onKnobFocus(knob)} onBlur={onKnobBlur} + onMouseEnter={() => onKnobMouseEnter(knob)} + onMouseLeave={onKnobMouseLeave} class={{ 'range-knob-handle': true, - 'range-knob-a': knob === 'A', - 'range-knob-b': knob === 'B', + 'range-knob-handle-a': knob === 'A', + 'range-knob-handle-b': knob === 'B', 'range-knob-pressed': pressed, 'range-knob-min': value === min, 'range-knob-max': value === max, 'ion-activatable': true, 'ion-focusable': true, + 'ion-focused': focused, }} + part={[ + 'knob-handle', + dualKnobs && knob === 'A' && 'knob-handle-a', + dualKnobs && knob === 'B' && 'knob-handle-b', + dualKnobs && position === 'lower' && 'knob-handle-lower', + dualKnobs && position === 'upper' && 'knob-handle-upper', + pressed && 'pressed', + focused && 'focused', + hovered && 'hover', + activated && 'activated', + ] + .filter(Boolean) + .join(' ')} style={knobStyle()} role="slider" tabindex={disabled ? -1 : 0} @@ -1038,15 +1172,72 @@ const renderKnob = ( aria-valuenow={value} > {pin && ( -

-=_|8`gP|V`DebzK?uj^7n3!K?kd;t-Ub+V|iTf2-`#BS)^T4 z#I^pkRSn&Cad9EiQ2EI8lSU^dbQ_22u4-tM&&~=LrUhnqV2X~>kmt{@E&l#vN!OK* zHELn;=`y|!V9rU(q!gerJQwOZV@U1o0=B47ApbZ~>}Jy^v*R}+YP!2QapVg-|Lxnigvxp4N{rLs z4njY8dvmm~0p3TQ*>S!Q>#PohVjqtAW*2{+axi7zj*x?5oBj7OkvMg~h6dH!{hgGU z(?MCq^XcgCf(t+7;~479{>GRg*jEmERaGn`B&1hp=YRh`8G2OXji+dEXWY_~1mKl< z%kM!fyfE#AxcEm{$Bp*xl^-h2|AxfZeEmS^X$@xc>({FjRv0C#0lQj=b0#uJXOB>%6XRWSF^&OT@;;z4sl0V|Eb` zWC)^)#qnv$hMi_(iKD|xlg8wb2D6Ti&M39-&4pFP^iJ!%EcDnTbTp6a%o}OF+7~CH zRtKpUs*QASyszDROXrPjp+K z#HzrA#GdSRA}{SLwdkNeS}f=2c#?=bvj+MsEiKV*-W`Pff69F=J8=>=^Q+9vCq}|B zTWE-rA!3n1zT7T;aL^e-YRP~cenObRjJ;|+XpsH_gWnK!YVY%wj*dF$&Sj8Mzu8Bx zt+@c-Pj}qkHeefOD{dtqX*bGn>((tI5ABB2Zy?`I-QAxF)Z|{A`|2R>^|7t^=aYSI zl@JjL=n$uVRwb)(u?UBj3|z+cH^fMvm*Q5wa%E|{$8tQC!s|3A9R-j30;9j;gWO!P zOD;!C|Fper5)l!ZMPS>s{(Px(i9s-rYy)g^3!Tkr{i4wjMFK`VOuKaHl7g}_#W}Jj z%T>Wk{HiIR&sdq%465slO`~C4{x&>O7;MaL+1n`BW}l*&d?>a=NBcl%xkb)~C55Ga zTix)T!@rgy-ab)%cVTmY5U9qcriP&<>t@pEw_VlC%IC7Ay>!GIrgkQ%V zI`HHy1D$U*W#Vvs{#Dmgc|#5p1GseU#3D?t2XAlU3qX9ZE8MDQSLB;#bQES^Xr;E= zA6+;ca7Xzxg8UQe|z$o*XlGF u61f35`s<9UVw$|sgZ~Aop=@~o literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Chrome-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..574cc7307a17fbb65f6cff9f3c2fbb29d067fc94 GIT binary patch literal 14108 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 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Safari-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..26d2d861dc4226a50924ffc1f2993cdcbf09c384 GIT binary patch literal 17780 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 T7=^z%1-X7zO*v1|DDb}kHDloy literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ee77f057b4edca01dbd58439ecb8b0df40e694 GIT binary patch literal 16419 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 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Safari-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f2721a2c6e87f4359ceee24f1d1e4ab78e568d01 GIT binary patch literal 21938 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 B*h2sS literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-md-ltr-Mobile-Firefox-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..900782be5d907d3bd445afdc99385dc0e4942475 GIT binary patch literal 25389 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 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a04545790e40191454c2861e158186f1a4b8d057 GIT binary patch literal 13644 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 Ns!Cd~pbGDU{s*&+kIn!9 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9bcc9aa4203ff5837139074b04ede26df308d7 GIT binary patch literal 24694 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 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Safari-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..14c84c9b58ba782a041270a90e09c1921b882175 GIT binary patch literal 18768 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 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Chrome-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6e082daf219756069dfd79c00df4d106cb51103f GIT binary patch literal 13637 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 U^o^f#ggr#>71ZUyvgV=x4ZON<+yDRo literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Firefox-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..abbd6c1406f613c7231f5abe01bd9cff0bc3c669 GIT binary patch literal 22525 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%0D*2 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 H`}qF?32&>F literal 0 HcmV?d00001 diff --git a/core/src/components/popover/utils.ts b/core/src/components/popover/utils.ts index 794ebb20884..0d11a4dfeef 100644 --- a/core/src/components/popover/utils.ts +++ b/core/src/components/popover/utils.ts @@ -32,11 +32,79 @@ export interface PopoverStyles { originY: string; checkSafeAreaLeft: boolean; checkSafeAreaRight: boolean; + checkSafeAreaTop: boolean; + checkSafeAreaBottom: boolean; arrowTop: number; arrowLeft: number; addPopoverBottomClass: boolean; + hideArrow: boolean; } +export interface SafeAreaInsets { + top: number; + bottom: number; + left: number; + right: number; +} + +/** + * Shared per-frame cache for safe-area insets. Avoids creating a temporary + * DOM element and forcing a synchronous reflow on every call within the same + * frame (e.g., multiple popovers presenting simultaneously). Invalidated + * after the next animation frame so values stay fresh across orientation + * changes and viewport resizes. + */ +let cachedInsets: SafeAreaInsets | null = null; +let cacheInvalidationScheduled = false; + +/** + * Resolves the current --ion-safe-area-* CSS custom property values + * to actual pixel numbers. A temporary element is needed because + * getComputedStyle on :root returns the declared value of custom + * properties (e.g. "env(safe-area-inset-top)") rather than a + * resolved number. By assigning them to standard padding properties, + * the browser resolves the value. + * + * Results are cached for the current frame to avoid repeated reflows. + */ +export const getSafeAreaInsets = (doc: Document): SafeAreaInsets => { + if (cachedInsets !== null) { + return cachedInsets; + } + + if (doc.body === null) { + return { top: 0, bottom: 0, left: 0, right: 0 }; + } + + const el = doc.createElement('div'); + el.style.cssText = + 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;' + + 'padding-top:var(--ion-safe-area-top,0px);' + + 'padding-bottom:var(--ion-safe-area-bottom,0px);' + + 'padding-left:var(--ion-safe-area-left,0px);' + + 'padding-right:var(--ion-safe-area-right,0px);'; + doc.body.appendChild(el); + const style = getComputedStyle(el); + const insets = { + top: parseFloat(style.paddingTop) || 0, + bottom: parseFloat(style.paddingBottom) || 0, + left: parseFloat(style.paddingLeft) || 0, + right: parseFloat(style.paddingRight) || 0, + }; + el.remove(); + + cachedInsets = insets; + if (!cacheInvalidationScheduled) { + cacheInvalidationScheduled = true; + raf(() => { + cachedInsets = null; + cacheInvalidationScheduled = false; + }); + } + + return insets; +}; + /** * Returns the dimensions of the popover * arrow on `ios` mode. If arrow is disabled @@ -804,6 +872,8 @@ const calculatePopoverCenterAlign = ( * Adjusts popover positioning coordinates * such that popover does not appear offscreen * or overlapping safe area bounds. + * + * @internal - This is not part of the public API. */ export const calculateWindowAdjustment = ( side: PositionSide, @@ -814,7 +884,7 @@ export const calculateWindowAdjustment = ( bodyHeight: number, contentWidth: number, contentHeight: number, - safeAreaMargin: number, + safeArea: SafeAreaInsets, contentOriginX: string, contentOriginY: string, triggerCoordinates?: ReferenceCoordinates, @@ -831,17 +901,20 @@ export const calculateWindowAdjustment = ( let originY = contentOriginY; let checkSafeAreaLeft = false; let checkSafeAreaRight = false; + let checkSafeAreaTop = false; + let checkSafeAreaBottom = false; const triggerTop = triggerCoordinates ? triggerCoordinates.top + triggerCoordinates.height : bodyHeight / 2 - contentHeight / 2; const triggerHeight = triggerCoordinates ? triggerCoordinates.height : 0; let addPopoverBottomClass = false; + const hideArrow = false; /** * Adjust popover so it does not * go off the left of the screen. */ - if (left < bodyPadding + safeAreaMargin) { + if (left < bodyPadding + safeArea.left) { left = bodyPadding; checkSafeAreaLeft = true; originX = 'left'; @@ -849,7 +922,7 @@ export const calculateWindowAdjustment = ( * Adjust popover so it does not * go off the right of the screen. */ - } else if (contentWidth + bodyPadding + left + safeAreaMargin > bodyWidth) { + } else if (contentWidth + bodyPadding + left + safeArea.right > bodyWidth) { checkSafeAreaRight = true; left = bodyWidth - contentWidth - bodyPadding; originX = 'right'; @@ -857,34 +930,54 @@ export const calculateWindowAdjustment = ( /** * Adjust popover so it does not - * go off the top of the screen. + * go off the bottom of the screen + * or overlap the bottom safe area. * If popover is on the left or the right of * the trigger, then we should not adjust top * margins. */ - if (triggerTop + triggerHeight + contentHeight > bodyHeight && (side === 'top' || side === 'bottom')) { - if (triggerTop - contentHeight > 0) { + if ( + triggerTop + triggerHeight + contentHeight > bodyHeight - safeArea.bottom && + (side === 'top' || side === 'bottom') + ) { + /** + * Calculate where the popover top would be if flipped + * above the trigger. Check whether that position clears + * the top safe area with room for bodyPadding. + */ + const idealFlipTop = triggerTop - contentHeight - triggerHeight - (arrowHeight - 1); + + if (idealFlipTop >= safeArea.top + bodyPadding) { /** - * While we strive to align the popover with the trigger - * on smaller screens this is not always possible. As a result, - * we adjust the popover up so that it does not hang - * off the bottom of the screen. However, we do not want to move - * the popover up so much that it goes off the top of the screen. - * - * We chose 12 here so that the popover position looks a bit nicer as - * it is not right up against the edge of the screen. + * Popover fits above the trigger without overlapping + * the top safe area. Use the ideal position directly β€” + * no safe-area CSS vars needed since it clears both edges. */ - top = Math.max(12, triggerTop - contentHeight - triggerHeight - (arrowHeight - 1)); + top = idealFlipTop; arrowTop = top + contentHeight; originY = 'bottom'; addPopoverBottomClass = true; - + } else { /** - * If not enough room for popover to appear - * above trigger, then cut it off. + * Can't flip above the trigger. Constrain the bottom + * edge while keeping the top near the trigger. This + * creates a scrollable area anchored to the trigger. */ - } else { bottom = bodyPadding; + checkSafeAreaBottom = true; + + /** + * When the trigger is near the bottom of the screen, + * the calculated top may be at or past the bottom + * constraint, leaving zero visible height. In that + * case, pull top up to the top safe area so the + * popover fills the available space between safe areas. + */ + const bottomEdge = bodyHeight - safeArea.bottom - bodyPadding; + if (top >= bottomEdge) { + top = safeArea.top + bodyPadding; + checkSafeAreaTop = true; + } } } @@ -896,9 +989,12 @@ export const calculateWindowAdjustment = ( originY, checkSafeAreaLeft, checkSafeAreaRight, + checkSafeAreaTop, + checkSafeAreaBottom, arrowTop, arrowLeft, addPopoverBottomClass, + hideArrow, }; }; From 53172d1a4035d5b510c230553aabd53dc1389e4b Mon Sep 17 00:00:00 2001 From: Shane Date: Tue, 17 Feb 2026 09:37:54 -0800 Subject: [PATCH 100/126] fix(nav-controller): reset direction state when navigation is canceled (#30955) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue number: resolves internal --------- ## What is the current behavior? When a CanDeactivate guard cancels a back navigation (like when it's initiated by ion-back-button), the NavController’s explicit direction state (back) is never consumed because consumeTransition() is not called for canceled navigations. This stale direction leaks into the next forward navigation, causing it to be incorrectly treated as a back/root navigation. ## What is the new behavior? The NavController now listens for NavigationCancel and NavigationError router events and resets direction, animated, and animationBuilder back to their defaults. This ensures stale state from a canceled navigation does not affect subsequent navigations. The reset puts the NavController into 'auto' mode, which correctly uses guessDirection for the next navigation. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information Current dev build: ``` 8.7.18-dev.11771020096.1ca03a6d ``` --- .../common/src/providers/nav-controller.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/angular/common/src/providers/nav-controller.ts b/packages/angular/common/src/providers/nav-controller.ts index 1ae3a0a603f..4bb33a67594 100644 --- a/packages/angular/common/src/providers/nav-controller.ts +++ b/packages/angular/common/src/providers/nav-controller.ts @@ -1,6 +1,14 @@ import { Location } from '@angular/common'; import { Injectable, Optional } from '@angular/core'; -import { NavigationExtras, Router, UrlSerializer, UrlTree, NavigationStart } from '@angular/router'; +import { + NavigationExtras, + Router, + UrlSerializer, + UrlTree, + NavigationStart, + NavigationCancel, + NavigationError, +} from '@angular/router'; import type { AnimationBuilder, NavDirection, RouterDirection } from '@ionic/core/components'; import { IonRouterOutlet } from '../directives/navigation/router-outlet'; @@ -42,6 +50,14 @@ export class NavController { this.guessDirection = this.guessAnimation = id < this.lastNavId ? 'back' : 'forward'; this.lastNavId = this.guessDirection === 'forward' ? ev.id : id; } + + // Reset explicit direction when navigation is canceled (e.g., guard rejection) + // to prevent stale direction from leaking into the next navigation + if (ev instanceof NavigationCancel || ev instanceof NavigationError) { + this.direction = DEFAULT_DIRECTION; + this.animated = DEFAULT_ANIMATED; + this.animationBuilder = undefined; + } }); } From 5cea5aeb44393edab7064e5980a1eb7e607d1b8d Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Tue, 17 Feb 2026 12:50:22 -0800 Subject: [PATCH 101/126] feat(select): add wrapper and bottom shadow parts (#30951) --- core/api.txt | 3 ++ core/src/components/select/select.tsx | 13 +++-- .../select/test/custom/select.e2e.ts | 51 +++++++++++++++++++ 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/core/api.txt b/core/api.txt index cec14576248..33582d0fe55 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1758,14 +1758,17 @@ ion-select,css-prop,--placeholder-opacity,ios ion-select,css-prop,--placeholder-opacity,md ion-select,css-prop,--ripple-color,ios ion-select,css-prop,--ripple-color,md +ion-select,part,bottom ion-select,part,container ion-select,part,error-text ion-select,part,helper-text ion-select,part,icon +ion-select,part,inner ion-select,part,label ion-select,part,placeholder ion-select,part,supporting-text ion-select,part,text +ion-select,part,wrapper ion-select-modal,scoped ion-select-modal,prop,cancelText,string,'Close',false,false diff --git a/core/src/components/select/select.tsx b/core/src/components/select/select.tsx index 97309bac332..e39856c2482 100644 --- a/core/src/components/select/select.tsx +++ b/core/src/components/select/select.tsx @@ -45,6 +45,9 @@ import type { SelectChangeEventDetail, SelectInterface, SelectCompareFn } from ' * @part supporting-text - Supporting text displayed beneath the select. * @part helper-text - Supporting text displayed beneath the select when the select is valid. * @part error-text - Supporting text displayed beneath the select when the select is invalid and touched. + * @part bottom - The container element for helper text, error text, and counter. + * @part wrapper - The clickable label element that wraps the entire form field (label text, slots, selected values or placeholder, and toggle icons). + * @part inner - The inner element of the wrapper that manages the slots, selected values or placeholder, and toggle icons. */ @Component({ tag: 'ion-select', @@ -1173,7 +1176,11 @@ export class Select implements ComponentInterface { return; } - return