diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4188c9f..27eaf17 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,15 @@
+# [0.13.0-beta.1](https://github.com/mi-examples/pp-dev/compare/v0.12.4...v0.13.0-beta.1) (2026-01-22)
+
+
+### Bug Fixes
+
+* **plugin:** add null check for integrateMiTopBar validation ([df35e2a](https://github.com/mi-examples/pp-dev/commit/df35e2a8a265bd4a6445ec78c9ae94d4c24f105d))
+
+
+### Features
+
+* **plugin:** enhance integrateMiTopBar with selective configuration options ([cbb9a6c](https://github.com/mi-examples/pp-dev/commit/cbb9a6c59db401201fb2530f46ca47eaaa585526))
+
## [0.12.4-beta.1](https://github.com/mi-examples/pp-dev/compare/v0.12.3...v0.12.4-beta.1) (2026-01-14)
diff --git a/README.md b/README.md
index 3afdd36..6798a76 100644
--- a/README.md
+++ b/README.md
@@ -210,7 +210,7 @@ export default config;
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `miHudLess` | boolean | `false` | Disables Metric Insights navigation bar in development |
-| `integrateMiTopBar` | boolean | `false` | Integrates MI Top Bar and script into the App build (requires `miHudLess: true`) |
+| `integrateMiTopBar` | boolean \| object | `false` | Integrates MI Top Bar and scripts into the App build (requires `miHudLess: true`). When `true`, enables both `addRootElement` and `addSharedComponentsScripts`. When an object, allows selective enabling: `{ addRootElement?: boolean, addSharedComponentsScripts?: boolean }` |
| `templateLess` | boolean | `false` | Disables template variable transformation |
| `enableProxyCache` | boolean | `true` | Enables caching of proxied requests |
| `proxyCacheTTL` | number | `600000` | Cache TTL in milliseconds (10 minutes) |
@@ -232,7 +232,24 @@ The `integrateMiTopBar` option allows you to integrate the Metric Insights Top B
**Important**: This option can only be enabled when `miHudLess` is set to `true`.
-Example configuration:
+#### Configuration Options
+
+`integrateMiTopBar` can be configured in two ways:
+
+**1. Boolean (Simple)**
+- `true`: Enables both `addRootElement` and `addSharedComponentsScripts`
+- `false`: Disables integration (default)
+
+**2. Object (Advanced)**
+- `addRootElement`: Adds `
` element to the body for React mounting
+- `addSharedComponentsScripts`: Adds MI shared component scripts and styles:
+ - `/auth/info.js` - Authentication info script
+ - `/js/main.js` - Main MI JavaScript bundle
+ - `/css/main.css` - MI stylesheet
+
+#### Examples
+
+**Simple boolean configuration:**
```javascript
// pp-dev.config.js
module.exports = {
@@ -243,6 +260,34 @@ module.exports = {
};
```
+**Advanced object configuration (selective features):**
+```javascript
+// pp-dev.config.js
+module.exports = {
+ backendBaseURL: 'https://mi.company.com',
+ appId: 1,
+ miHudLess: true,
+ integrateMiTopBar: {
+ addRootElement: true, // Add root element for React
+ addSharedComponentsScripts: true, // Add MI scripts and styles
+ },
+};
+```
+
+**Partial integration (scripts only, manual root element):**
+```javascript
+// pp-dev.config.js
+module.exports = {
+ backendBaseURL: 'https://mi.company.com',
+ appId: 1,
+ miHudLess: true,
+ integrateMiTopBar: {
+ addRootElement: false, // Don't add root element
+ addSharedComponentsScripts: true, // Add MI scripts and styles
+ },
+};
+```
+
### v7Features Details
When enabled (`true`), this option:
diff --git a/package-lock.json b/package-lock.json
index acf6e17..3faa040 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@metricinsights/pp-dev",
- "version": "0.12.4-beta.1",
+ "version": "0.13.0-beta.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@metricinsights/pp-dev",
- "version": "0.12.4-beta.1",
+ "version": "0.13.0-beta.1",
"license": "ISC",
"dependencies": {
"axios": "^1.7.8",
@@ -81,14 +81,14 @@
}
},
"node_modules/@actions/core": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@actions/core/-/core-2.0.1.tgz",
- "integrity": "sha512-oBfqT3GwkvLlo1fjvhQLQxuwZCGTarTE5OuZ2Wg10hvhBj7LRIlF611WT4aZS6fDhO5ZKlY7lCAZTlpmyaHaeg==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@actions/core/-/core-2.0.2.tgz",
+ "integrity": "sha512-Ast1V7yHbGAhplAsuVlnb/5J8Mtr/Zl6byPPL+Qjq3lmfIgWF1ak1iYfF/079cRERiuTALTXkSuEUdZeDCfGtA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@actions/exec": "^2.0.0",
- "@actions/http-client": "^3.0.0"
+ "@actions/http-client": "^3.0.1"
}
},
"node_modules/@actions/exec": {
@@ -102,9 +102,9 @@
}
},
"node_modules/@actions/http-client": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.0.tgz",
- "integrity": "sha512-1s3tXAfVMSz9a4ZEBkXXRQD4QhY3+GAsWSbaYpeknPOKEeyRiU3lH+bHiLMZdo2x/fIeQ/hscL1wCkDLVM2DZQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.1.tgz",
+ "integrity": "sha512-SbGS8c/vySbNO3kjFgSW77n83C4MQx/Yoe+b1hAdpuvfHxnkHzDq2pWljUpAA56Si1Gae/7zjeZsV0CYjmLo/w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -910,23 +910,6 @@
"url": "https://opencollective.com/libvips"
}
},
- "node_modules/@img/sharp-libvips-linux-ppc64": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.0.tgz",
- "integrity": "sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==",
- "cpu": [
- "ppc64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
"node_modules/@img/sharp-libvips-linux-s390x": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
@@ -1035,29 +1018,6 @@
"@img/sharp-libvips-linux-arm64": "1.0.4"
}
},
- "node_modules/@img/sharp-linux-ppc64": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz",
- "integrity": "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==",
- "cpu": [
- "ppc64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-ppc64": "1.2.0"
- }
- },
"node_modules/@img/sharp-linux-s390x": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
@@ -1165,26 +1125,6 @@
"url": "https://opencollective.com/libvips"
}
},
- "node_modules/@img/sharp-win32-arm64": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz",
- "integrity": "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true,
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
"node_modules/@img/sharp-win32-ia32": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
@@ -1261,6 +1201,18 @@
"node": ">=12"
}
},
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/@istanbuljs/schema": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
@@ -1330,154 +1282,10 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@next/env": {
- "version": "15.5.9",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.9.tgz",
- "integrity": "sha512-4GlTZ+EJM7WaW2HEZcyU317tIQDjkQIyENDLxYJfSWlfqguN+dHkZgyQTV/7ykvobU7yEH5gKvreNrH4B6QgIg==",
- "license": "MIT",
- "optional": true,
- "peer": true
- },
- "node_modules/@next/swc-darwin-arm64": {
- "version": "15.5.7",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.7.tgz",
- "integrity": "sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "peer": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-darwin-x64": {
- "version": "15.5.7",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.7.tgz",
- "integrity": "sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "peer": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-linux-arm64-gnu": {
- "version": "15.5.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.7.tgz",
- "integrity": "sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-linux-arm64-musl": {
- "version": "15.5.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.7.tgz",
- "integrity": "sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-linux-x64-gnu": {
- "version": "15.5.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.7.tgz",
- "integrity": "sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-linux-x64-musl": {
- "version": "15.5.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.7.tgz",
- "integrity": "sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-win32-arm64-msvc": {
- "version": "15.5.7",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.7.tgz",
- "integrity": "sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-win32-x64-msvc": {
- "version": "15.5.7",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.7.tgz",
- "integrity": "sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true,
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/@npmcli/agent": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz",
- "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz",
+ "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==",
"license": "ISC",
"dependencies": {
"agent-base": "^7.1.0",
@@ -1487,25 +1295,25 @@
"socks-proxy-agent": "^8.0.3"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@npmcli/fs": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz",
- "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz",
+ "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==",
"license": "ISC",
"dependencies": {
"semver": "^7.3.5"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@npmcli/fs/node_modules/semver": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
- "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -1980,7 +1788,7 @@
"version": "1.57.0",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz",
"integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==",
- "devOptional": true,
+ "dev": true,
"license": "Apache-2.0",
"dependencies": {
"playwright": "1.57.0"
@@ -2579,9 +2387,9 @@
}
},
"node_modules/@semantic-release/github/node_modules/undici": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz",
- "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==",
+ "version": "7.19.1",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.19.1.tgz",
+ "integrity": "sha512-Gpq0iNm5M6cQWlyHQv9MV+uOj1jWk7LpkoE5vSp/7zjb4zMdAcUD+VL5y0nH4p9EbUklq00eVIIX/XcDHzu5xg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2997,17 +2805,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@swc/helpers": {
- "version": "0.5.15",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
- "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
- "license": "Apache-2.0",
- "optional": true,
- "peer": true,
- "dependencies": {
- "tslib": "^2.8.0"
- }
- },
"node_modules/@tokenizer/token": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
@@ -3431,12 +3228,12 @@
"license": "MIT"
},
"node_modules/abbrev": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz",
- "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz",
+ "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
"license": "ISC",
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/accepts": {
@@ -3486,6 +3283,7 @@
"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",
@@ -3553,35 +3351,6 @@
"integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
"license": "MIT"
},
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "license": "ISC",
- "optional": true,
- "peer": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/anymatch/node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -3719,20 +3488,6 @@
"dev": true,
"license": "Apache-2.0"
},
- "node_modules/binary-extensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
- "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
@@ -3743,23 +3498,23 @@
}
},
"node_modules/body-parser": {
- "version": "1.20.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
- "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "version": "1.20.4",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz",
+ "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==",
"license": "MIT",
"dependencies": {
- "bytes": "3.1.2",
+ "bytes": "~3.1.2",
"content-type": "~1.0.5",
"debug": "2.6.9",
"depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.13.0",
- "raw-body": "2.5.2",
+ "destroy": "~1.2.0",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "on-finished": "~2.4.1",
+ "qs": "~6.14.0",
+ "raw-body": "~2.5.3",
"type-is": "~1.6.18",
- "unpipe": "1.0.0"
+ "unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8",
@@ -3775,12 +3530,41 @@
"ms": "2.0.0"
}
},
+ "node_modules/body-parser/node_modules/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
+ "node_modules/body-parser/node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/boolbase": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
@@ -3877,12 +3661,12 @@
}
},
"node_modules/cacache": {
- "version": "18.0.4",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz",
- "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==",
+ "version": "19.0.1",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz",
+ "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==",
"license": "ISC",
"dependencies": {
- "@npmcli/fs": "^3.1.0",
+ "@npmcli/fs": "^4.0.0",
"fs-minipass": "^3.0.0",
"glob": "^10.2.2",
"lru-cache": "^10.0.1",
@@ -3890,13 +3674,13 @@
"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"
+ "p-map": "^7.0.2",
+ "ssri": "^12.0.0",
+ "tar": "^7.4.3",
+ "unique-filename": "^4.0.0"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/cacache/node_modules/brace-expansion": {
@@ -3958,21 +3742,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/cacache/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==",
- "license": "MIT",
- "dependencies": {
- "aggregate-error": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/cacache/node_modules/path-scurry": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
@@ -4028,28 +3797,6 @@
"node": ">=6"
}
},
- "node_modules/caniuse-lite": {
- "version": "1.0.30001715",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz",
- "integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==",
- "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",
- "optional": true,
- "peer": true
- },
"node_modules/chai": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz",
@@ -4174,18 +3921,19 @@
}
},
"node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "license": "ISC",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "license": "BlueOak-1.0.0",
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"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"
@@ -4385,14 +4133,6 @@
"node": ">=8"
}
},
- "node_modules/client-only": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
- "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
- "license": "MIT",
- "optional": true,
- "peer": true
- },
"node_modules/cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
@@ -5682,45 +5422,45 @@
}
},
"node_modules/exponential-backoff": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz",
- "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
+ "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
"license": "Apache-2.0"
},
"node_modules/express": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
- "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "version": "4.22.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz",
+ "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==",
"license": "MIT",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.3",
- "content-disposition": "0.5.4",
+ "body-parser": "~1.20.3",
+ "content-disposition": "~0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.7.1",
- "cookie-signature": "1.0.6",
+ "cookie": "~0.7.1",
+ "cookie-signature": "~1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.3.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
+ "finalhandler": "~1.3.1",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.0",
"merge-descriptors": "1.0.3",
"methods": "~1.1.2",
- "on-finished": "2.4.1",
+ "on-finished": "~2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.12",
+ "path-to-regexp": "~0.1.12",
"proxy-addr": "~2.0.7",
- "qs": "6.13.0",
+ "qs": "~6.14.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
+ "send": "~0.19.0",
+ "serve-static": "~1.16.2",
"setprototypeof": "1.2.0",
- "statuses": "2.0.1",
+ "statuses": "~2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
@@ -6334,20 +6074,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "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==",
- "license": "ISC",
- "optional": true,
- "peer": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/glob/node_modules/minimatch": {
"version": "10.1.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
@@ -6548,9 +6274,9 @@
}
},
"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==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
"license": "BSD-2-Clause"
},
"node_modules/http-errors": {
@@ -6757,6 +6483,7 @@
"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"
@@ -6806,14 +6533,10 @@
}
},
"node_modules/ip-address": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
- "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
+ "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
"license": "MIT",
- "dependencies": {
- "jsbn": "1.1.0",
- "sprintf-js": "^1.1.3"
- },
"engines": {
"node": ">= 12"
}
@@ -6834,20 +6557,6 @@
"dev": true,
"license": "MIT"
},
- "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==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-core-module": {
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
@@ -6910,12 +6619,6 @@
"node": ">=0.10.0"
}
},
- "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==",
- "license": "MIT"
- },
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -7197,12 +6900,6 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/jsbn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
- "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
- "license": "MIT"
- },
"node_modules/jsdom": {
"version": "25.0.1",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz",
@@ -7363,15 +7060,15 @@
}
},
"node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "version": "4.17.23",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
+ "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
"license": "MIT"
},
"node_modules/lodash-es": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
- "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
+ "version": "4.17.23",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz",
+ "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
"dev": true,
"license": "MIT"
},
@@ -7494,26 +7191,34 @@
}
},
"node_modules/make-fetch-happen": {
- "version": "13.0.1",
- "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz",
- "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==",
+ "version": "14.0.3",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz",
+ "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==",
"license": "ISC",
"dependencies": {
- "@npmcli/agent": "^2.0.0",
- "cacache": "^18.0.0",
+ "@npmcli/agent": "^3.0.0",
+ "cacache": "^19.0.1",
"http-cache-semantics": "^4.1.1",
- "is-lambda": "^1.0.1",
"minipass": "^7.0.2",
- "minipass-fetch": "^3.0.0",
+ "minipass-fetch": "^4.0.0",
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.4",
- "negotiator": "^0.6.3",
- "proc-log": "^4.2.0",
+ "negotiator": "^1.0.0",
+ "proc-log": "^5.0.0",
"promise-retry": "^2.0.1",
- "ssri": "^10.0.0"
+ "ssri": "^12.0.0"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/negotiator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
}
},
"node_modules/marked": {
@@ -7751,17 +7456,17 @@
}
},
"node_modules/minipass-fetch": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz",
- "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz",
+ "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==",
"license": "MIT",
"dependencies": {
"minipass": "^7.0.3",
"minipass-sized": "^1.0.3",
- "minizlib": "^2.1.2"
+ "minizlib": "^3.0.1"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
},
"optionalDependencies": {
"encoding": "^0.1.13"
@@ -7791,6 +7496,12 @@
"node": ">=8"
}
},
+ "node_modules/minipass-flush/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
"node_modules/minipass-pipeline": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
@@ -7815,6 +7526,12 @@
"node": ">=8"
}
},
+ "node_modules/minipass-pipeline/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
"node_modules/minipass-sized": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
@@ -7839,41 +7556,22 @@
"node": ">=8"
}
},
+ "node_modules/minipass-sized/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
"node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
+ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
"license": "MIT",
"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==",
- "license": "ISC",
- "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==",
- "license": "MIT",
- "bin": {
- "mkdirp": "bin/cmd.js"
+ "minipass": "^7.1.2"
},
"engines": {
- "node": ">=10"
+ "node": ">= 18"
}
},
"node_modules/ms": {
@@ -7894,9 +7592,9 @@
}
},
"node_modules/nan": {
- "version": "2.22.2",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz",
- "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==",
+ "version": "2.25.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.25.0.tgz",
+ "integrity": "sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==",
"license": "MIT"
},
"node_modules/nanoid": {
@@ -7940,712 +7638,104 @@
"dev": true,
"license": "MIT"
},
- "node_modules/next": {
- "version": "15.5.9",
- "resolved": "https://registry.npmjs.org/next/-/next-15.5.9.tgz",
- "integrity": "sha512-agNLK89seZEtC5zUHwtut0+tNrc0Xw4FT/Dg+B/VLEo9pAcS9rtTKpek3V6kVcVwsB2YlqMaHdfZL4eLEVYuCg==",
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
"license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@next/env": "15.5.9",
- "@swc/helpers": "0.5.15",
- "caniuse-lite": "^1.0.30001579",
- "postcss": "8.4.31",
- "styled-jsx": "5.1.6"
- },
- "bin": {
- "next": "dist/bin/next"
- },
- "engines": {
- "node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
- },
- "optionalDependencies": {
- "@next/swc-darwin-arm64": "15.5.7",
- "@next/swc-darwin-x64": "15.5.7",
- "@next/swc-linux-arm64-gnu": "15.5.7",
- "@next/swc-linux-arm64-musl": "15.5.7",
- "@next/swc-linux-x64-gnu": "15.5.7",
- "@next/swc-linux-x64-musl": "15.5.7",
- "@next/swc-win32-arm64-msvc": "15.5.7",
- "@next/swc-win32-x64-msvc": "15.5.7",
- "sharp": "^0.34.3"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.1.0",
- "@playwright/test": "^1.51.1",
- "babel-plugin-react-compiler": "*",
- "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
- "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
- "sass": "^1.3.0"
- },
- "peerDependenciesMeta": {
- "@opentelemetry/api": {
- "optional": true
- },
- "@playwright/test": {
- "optional": true
- },
- "babel-plugin-react-compiler": {
- "optional": true
+ "optional": true
+ },
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "deprecated": "Use your platform's native DOMException instead",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
},
- "sass": {
- "optional": true
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
}
- }
- },
- "node_modules/next/node_modules/@img/sharp-darwin-arm64": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz",
- "integrity": "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "darwin"
],
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-darwin-arm64": "1.2.0"
+ "node": ">=10.5.0"
}
},
- "node_modules/next/node_modules/@img/sharp-darwin-x64": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz",
- "integrity": "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "peer": true,
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
+ "node_modules/node-emoji": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz",
+ "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/is": "^4.6.0",
+ "char-regex": "^1.0.2",
+ "emojilib": "^2.4.0",
+ "skin-tone": "^2.0.0"
},
- "optionalDependencies": {
- "@img/sharp-libvips-darwin-x64": "1.2.0"
- }
- },
- "node_modules/next/node_modules/@img/sharp-libvips-darwin-arm64": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz",
- "integrity": "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==",
- "cpu": [
- "arm64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "darwin"
- ],
- "peer": true,
- "funding": {
- "url": "https://opencollective.com/libvips"
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/next/node_modules/@img/sharp-libvips-darwin-x64": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz",
- "integrity": "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==",
- "cpu": [
- "x64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "darwin"
- ],
- "peer": true,
+ "node_modules/node-fetch": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
+ "license": "MIT",
+ "dependencies": {
+ "data-uri-to-buffer": "^4.0.0",
+ "fetch-blob": "^3.1.4",
+ "formdata-polyfill": "^4.0.10"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
"funding": {
- "url": "https://opencollective.com/libvips"
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-fetch"
}
},
- "node_modules/next/node_modules/@img/sharp-libvips-linux-arm": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz",
- "integrity": "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==",
- "cpu": [
- "arm"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/next/node_modules/@img/sharp-libvips-linux-arm64": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz",
- "integrity": "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==",
- "cpu": [
- "arm64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/next/node_modules/@img/sharp-libvips-linux-s390x": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz",
- "integrity": "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==",
- "cpu": [
- "s390x"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/next/node_modules/@img/sharp-libvips-linux-x64": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz",
- "integrity": "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==",
- "cpu": [
- "x64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/next/node_modules/@img/sharp-libvips-linuxmusl-arm64": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz",
- "integrity": "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==",
- "cpu": [
- "arm64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/next/node_modules/@img/sharp-libvips-linuxmusl-x64": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz",
- "integrity": "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==",
- "cpu": [
- "x64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/next/node_modules/@img/sharp-linux-arm": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz",
- "integrity": "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==",
- "cpu": [
- "arm"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-arm": "1.2.0"
- }
- },
- "node_modules/next/node_modules/@img/sharp-linux-arm64": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz",
- "integrity": "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-arm64": "1.2.0"
- }
- },
- "node_modules/next/node_modules/@img/sharp-linux-s390x": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz",
- "integrity": "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==",
- "cpu": [
- "s390x"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-s390x": "1.2.0"
- }
- },
- "node_modules/next/node_modules/@img/sharp-linux-x64": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz",
- "integrity": "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-x64": "1.2.0"
- }
- },
- "node_modules/next/node_modules/@img/sharp-linuxmusl-arm64": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz",
- "integrity": "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linuxmusl-arm64": "1.2.0"
- }
- },
- "node_modules/next/node_modules/@img/sharp-linuxmusl-x64": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz",
- "integrity": "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linuxmusl-x64": "1.2.0"
- }
- },
- "node_modules/next/node_modules/@img/sharp-wasm32": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz",
- "integrity": "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==",
- "cpu": [
- "wasm32"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@emnapi/runtime": "^1.4.4"
- },
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/next/node_modules/@img/sharp-win32-ia32": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz",
- "integrity": "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==",
- "cpu": [
- "ia32"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true,
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/next/node_modules/@img/sharp-win32-x64": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz",
- "integrity": "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true,
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/next/node_modules/detect-libc": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
- "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
- "license": "Apache-2.0",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/next/node_modules/postcss": {
- "version": "8.4.31",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
- "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "nanoid": "^3.3.6",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/next/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
- "license": "ISC",
- "optional": true,
- "peer": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/next/node_modules/sharp": {
- "version": "0.34.3",
- "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz",
- "integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==",
- "hasInstallScript": true,
- "license": "Apache-2.0",
- "optional": true,
- "peer": true,
- "dependencies": {
- "color": "^4.2.3",
- "detect-libc": "^2.0.4",
- "semver": "^7.7.2"
- },
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-darwin-arm64": "0.34.3",
- "@img/sharp-darwin-x64": "0.34.3",
- "@img/sharp-libvips-darwin-arm64": "1.2.0",
- "@img/sharp-libvips-darwin-x64": "1.2.0",
- "@img/sharp-libvips-linux-arm": "1.2.0",
- "@img/sharp-libvips-linux-arm64": "1.2.0",
- "@img/sharp-libvips-linux-ppc64": "1.2.0",
- "@img/sharp-libvips-linux-s390x": "1.2.0",
- "@img/sharp-libvips-linux-x64": "1.2.0",
- "@img/sharp-libvips-linuxmusl-arm64": "1.2.0",
- "@img/sharp-libvips-linuxmusl-x64": "1.2.0",
- "@img/sharp-linux-arm": "0.34.3",
- "@img/sharp-linux-arm64": "0.34.3",
- "@img/sharp-linux-ppc64": "0.34.3",
- "@img/sharp-linux-s390x": "0.34.3",
- "@img/sharp-linux-x64": "0.34.3",
- "@img/sharp-linuxmusl-arm64": "0.34.3",
- "@img/sharp-linuxmusl-x64": "0.34.3",
- "@img/sharp-wasm32": "0.34.3",
- "@img/sharp-win32-arm64": "0.34.3",
- "@img/sharp-win32-ia32": "0.34.3",
- "@img/sharp-win32-x64": "0.34.3"
- }
- },
- "node_modules/node-addon-api": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
- "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
- "license": "MIT",
- "optional": true
- },
- "node_modules/node-domexception": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
- "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
- "deprecated": "Use your platform's native DOMException instead",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/jimmywarting"
- },
- {
- "type": "github",
- "url": "https://paypal.me/jimmywarting"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=10.5.0"
- }
- },
- "node_modules/node-emoji": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz",
- "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@sindresorhus/is": "^4.6.0",
- "char-regex": "^1.0.2",
- "emojilib": "^2.4.0",
- "skin-tone": "^2.0.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/node-fetch": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
- "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
- "license": "MIT",
- "dependencies": {
- "data-uri-to-buffer": "^4.0.0",
- "fetch-blob": "^3.1.4",
- "formdata-polyfill": "^4.0.10"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/node-fetch"
- }
- },
- "node_modules/node-gyp": {
- "version": "10.3.1",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz",
- "integrity": "sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==",
- "license": "MIT",
- "dependencies": {
- "env-paths": "^2.2.0",
- "exponential-backoff": "^3.1.1",
- "glob": "^10.3.10",
- "graceful-fs": "^4.2.6",
- "make-fetch-happen": "^13.0.0",
- "nopt": "^7.0.0",
- "proc-log": "^4.1.0",
- "semver": "^7.3.5",
- "tar": "^6.2.1",
- "which": "^4.0.0"
- },
- "bin": {
- "node-gyp": "bin/node-gyp.js"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/node-gyp/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/node-gyp/node_modules/glob": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
- "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
- "license": "ISC",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node_modules/node-gyp": {
+ "version": "11.5.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.5.0.tgz",
+ "integrity": "sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==",
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^14.0.3",
+ "nopt": "^8.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.5",
+ "tar": "^7.4.3",
+ "tinyglobby": "^0.2.12",
+ "which": "^5.0.0"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/node-gyp/node_modules/isexe": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
- "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
- "license": "ISC",
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/node-gyp/node_modules/jackspeak": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
- "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
- }
- },
- "node_modules/node-gyp/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/node-gyp/node_modules/path-scurry": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
- "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "lru-cache": "^10.2.0",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
- },
- "engines": {
- "node": ">=16 || 14 >=14.18"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
}
},
"node_modules/node-gyp/node_modules/semver": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
- "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -8655,9 +7745,9 @@
}
},
"node_modules/node-gyp/node_modules/which": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
- "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
+ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
"license": "ISC",
"dependencies": {
"isexe": "^3.1.1"
@@ -8666,22 +7756,22 @@
"node-which": "bin/which.js"
},
"engines": {
- "node": "^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/nopt": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz",
- "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz",
+ "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
"license": "ISC",
"dependencies": {
- "abbrev": "^2.0.0"
+ "abbrev": "^3.0.0"
},
"bin": {
"nopt": "bin/nopt.js"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/normalize-package-data": {
@@ -8712,17 +7802,6 @@
"node": ">=10"
}
},
- "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==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/normalize-url": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.0.tgz",
@@ -8737,9 +7816,9 @@
}
},
"node_modules/npm": {
- "version": "11.7.0",
- "resolved": "https://registry.npmjs.org/npm/-/npm-11.7.0.tgz",
- "integrity": "sha512-wiCZpv/41bIobCoJ31NStIWKfAxxYyD1iYnWCtiyns8s5v3+l8y0HCP/sScuH6B5+GhIfda4HQKiqeGZwJWhFw==",
+ "version": "11.8.0",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-11.8.0.tgz",
+ "integrity": "sha512-n19sJeW+RGKdkHo8SCc5xhSwkKhQUFfZaFzSc+EsYXLjSqIV0tl72aDYQVuzVvfrbysGwdaQsNLNy58J10EBSQ==",
"bundleDependencies": [
"@isaacs/string-locale-compare",
"@npmcli/arborist",
@@ -8819,8 +7898,8 @@
],
"dependencies": {
"@isaacs/string-locale-compare": "^1.1.0",
- "@npmcli/arborist": "^9.1.9",
- "@npmcli/config": "^10.4.5",
+ "@npmcli/arborist": "^9.1.10",
+ "@npmcli/config": "^10.5.0",
"@npmcli/fs": "^5.0.0",
"@npmcli/map-workspaces": "^5.0.3",
"@npmcli/metavuln-calculator": "^9.0.3",
@@ -8828,7 +7907,7 @@
"@npmcli/promise-spawn": "^9.0.1",
"@npmcli/redact": "^4.0.0",
"@npmcli/run-script": "^10.0.3",
- "@sigstore/tuf": "^4.0.0",
+ "@sigstore/tuf": "^4.0.1",
"abbrev": "^4.0.0",
"archy": "~1.0.0",
"cacache": "^20.0.3",
@@ -8845,11 +7924,11 @@
"is-cidr": "^6.0.1",
"json-parse-even-better-errors": "^5.0.0",
"libnpmaccess": "^10.0.3",
- "libnpmdiff": "^8.0.12",
- "libnpmexec": "^10.1.11",
- "libnpmfund": "^7.0.12",
+ "libnpmdiff": "^8.0.13",
+ "libnpmexec": "^10.1.12",
+ "libnpmfund": "^7.0.13",
"libnpmorg": "^8.0.1",
- "libnpmpack": "^9.0.12",
+ "libnpmpack": "^9.0.13",
"libnpmpublish": "^11.1.3",
"libnpmsearch": "^9.0.1",
"libnpmteam": "^8.0.2",
@@ -8878,11 +7957,11 @@
"spdx-expression-parse": "^4.0.0",
"ssri": "^13.0.0",
"supports-color": "^10.2.2",
- "tar": "^7.5.2",
+ "tar": "^7.5.4",
"text-table": "~0.2.0",
"tiny-relative-date": "^2.0.2",
"treeverse": "^3.0.0",
- "validate-npm-package-name": "^7.0.0",
+ "validate-npm-package-name": "^7.0.2",
"which": "^6.0.0"
},
"bin": {
@@ -8962,7 +8041,7 @@
}
},
"node_modules/npm/node_modules/@npmcli/arborist": {
- "version": "9.1.9",
+ "version": "9.1.10",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -8980,7 +8059,7 @@
"@npmcli/run-script": "^10.0.0",
"bin-links": "^6.0.0",
"cacache": "^20.0.1",
- "common-ancestor-path": "^1.0.1",
+ "common-ancestor-path": "^2.0.0",
"hosted-git-info": "^9.0.0",
"json-stringify-nice": "^1.1.4",
"lru-cache": "^11.2.1",
@@ -9009,7 +8088,7 @@
}
},
"node_modules/npm/node_modules/@npmcli/config": {
- "version": "10.4.5",
+ "version": "10.5.0",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -9204,7 +8283,7 @@
}
},
"node_modules/npm/node_modules/@sigstore/core": {
- "version": "3.0.0",
+ "version": "3.1.0",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
@@ -9222,52 +8301,43 @@
}
},
"node_modules/npm/node_modules/@sigstore/sign": {
- "version": "4.0.1",
+ "version": "4.1.0",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
"@sigstore/bundle": "^4.0.0",
- "@sigstore/core": "^3.0.0",
+ "@sigstore/core": "^3.1.0",
"@sigstore/protobuf-specs": "^0.5.0",
- "make-fetch-happen": "^15.0.2",
- "proc-log": "^5.0.0",
+ "make-fetch-happen": "^15.0.3",
+ "proc-log": "^6.1.0",
"promise-retry": "^2.0.1"
},
"engines": {
"node": "^20.17.0 || >=22.9.0"
}
},
- "node_modules/npm/node_modules/@sigstore/sign/node_modules/proc-log": {
- "version": "5.0.0",
- "dev": true,
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": "^18.17.0 || >=20.5.0"
- }
- },
"node_modules/npm/node_modules/@sigstore/tuf": {
- "version": "4.0.0",
+ "version": "4.0.1",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
"@sigstore/protobuf-specs": "^0.5.0",
- "tuf-js": "^4.0.0"
+ "tuf-js": "^4.1.0"
},
"engines": {
"node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/npm/node_modules/@sigstore/verify": {
- "version": "3.0.0",
+ "version": "3.1.0",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
"@sigstore/bundle": "^4.0.0",
- "@sigstore/core": "^3.0.0",
+ "@sigstore/core": "^3.1.0",
"@sigstore/protobuf-specs": "^0.5.0"
},
"engines": {
@@ -9284,33 +8354,18 @@
}
},
"node_modules/npm/node_modules/@tufjs/models": {
- "version": "4.0.0",
+ "version": "4.1.0",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
"@tufjs/canonical-json": "2.0.0",
- "minimatch": "^9.0.5"
+ "minimatch": "^10.1.1"
},
"engines": {
"node": "^20.17.0 || >=22.9.0"
}
},
- "node_modules/npm/node_modules/@tufjs/models/node_modules/minimatch": {
- "version": "9.0.5",
- "dev": true,
- "inBundle": 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/node_modules/abbrev": {
"version": "4.0.0",
"dev": true,
@@ -9350,12 +8405,6 @@
"inBundle": true,
"license": "MIT"
},
- "node_modules/npm/node_modules/balanced-match": {
- "version": "1.0.2",
- "dev": true,
- "inBundle": true,
- "license": "MIT"
- },
"node_modules/npm/node_modules/bin-links": {
"version": "6.0.0",
"dev": true,
@@ -9384,15 +8433,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/npm/node_modules/brace-expansion": {
- "version": "2.0.2",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
"node_modules/npm/node_modules/cacache": {
"version": "20.0.3",
"dev": true,
@@ -9486,10 +8526,13 @@
}
},
"node_modules/npm/node_modules/common-ancestor-path": {
- "version": "1.0.1",
+ "version": "2.0.0",
"dev": true,
"inBundle": true,
- "license": "ISC"
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">= 18"
+ }
},
"node_modules/npm/node_modules/cssesc": {
"version": "3.0.0",
@@ -9521,7 +8564,7 @@
}
},
"node_modules/npm/node_modules/diff": {
- "version": "8.0.2",
+ "version": "8.0.3",
"dev": true,
"inBundle": true,
"license": "BSD-3-Clause",
@@ -9716,7 +8759,7 @@
}
},
"node_modules/npm/node_modules/ip-address": {
- "version": "10.0.1",
+ "version": "10.1.0",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -9819,12 +8862,12 @@
}
},
"node_modules/npm/node_modules/libnpmdiff": {
- "version": "8.0.12",
+ "version": "8.0.13",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^9.1.9",
+ "@npmcli/arborist": "^9.1.10",
"@npmcli/installed-package-contents": "^4.0.0",
"binary-extensions": "^3.0.0",
"diff": "^8.0.2",
@@ -9838,12 +8881,12 @@
}
},
"node_modules/npm/node_modules/libnpmexec": {
- "version": "10.1.11",
+ "version": "10.1.12",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^9.1.9",
+ "@npmcli/arborist": "^9.1.10",
"@npmcli/package-json": "^7.0.0",
"@npmcli/run-script": "^10.0.0",
"ci-info": "^4.0.0",
@@ -9861,12 +8904,12 @@
}
},
"node_modules/npm/node_modules/libnpmfund": {
- "version": "7.0.12",
+ "version": "7.0.13",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^9.1.9"
+ "@npmcli/arborist": "^9.1.10"
},
"engines": {
"node": "^20.17.0 || >=22.9.0"
@@ -9886,12 +8929,12 @@
}
},
"node_modules/npm/node_modules/libnpmpack": {
- "version": "9.0.12",
+ "version": "9.0.13",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^9.1.9",
+ "@npmcli/arborist": "^9.1.10",
"@npmcli/run-script": "^10.0.0",
"npm-package-arg": "^13.0.0",
"pacote": "^21.0.2"
@@ -9961,10 +9004,10 @@
}
},
"node_modules/npm/node_modules/lru-cache": {
- "version": "11.2.2",
+ "version": "11.2.4",
"dev": true,
"inBundle": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"engines": {
"node": "20 || >=22"
}
@@ -10375,7 +9418,7 @@
}
},
"node_modules/npm/node_modules/path-scurry": {
- "version": "2.0.0",
+ "version": "2.0.1",
"dev": true,
"inBundle": true,
"license": "BlueOak-1.0.0",
@@ -10391,7 +9434,7 @@
}
},
"node_modules/npm/node_modules/postcss-selector-parser": {
- "version": "7.1.0",
+ "version": "7.1.1",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -10534,17 +9577,17 @@
}
},
"node_modules/npm/node_modules/sigstore": {
- "version": "4.0.0",
+ "version": "4.1.0",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
"@sigstore/bundle": "^4.0.0",
- "@sigstore/core": "^3.0.0",
+ "@sigstore/core": "^3.1.0",
"@sigstore/protobuf-specs": "^0.5.0",
- "@sigstore/sign": "^4.0.0",
- "@sigstore/tuf": "^4.0.0",
- "@sigstore/verify": "^3.0.0"
+ "@sigstore/sign": "^4.1.0",
+ "@sigstore/tuf": "^4.0.1",
+ "@sigstore/verify": "^3.1.0"
},
"engines": {
"node": "^20.17.0 || >=22.9.0"
@@ -10681,7 +9724,7 @@
}
},
"node_modules/npm/node_modules/tar": {
- "version": "7.5.2",
+ "version": "7.5.4",
"dev": true,
"inBundle": true,
"license": "BlueOak-1.0.0",
@@ -10772,14 +9815,14 @@
}
},
"node_modules/npm/node_modules/tuf-js": {
- "version": "4.0.0",
+ "version": "4.1.0",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
- "@tufjs/models": "4.0.0",
- "debug": "^4.4.1",
- "make-fetch-happen": "^15.0.0"
+ "@tufjs/models": "4.1.0",
+ "debug": "^4.4.3",
+ "make-fetch-happen": "^15.0.1"
},
"engines": {
"node": "^20.17.0 || >=22.9.0"
@@ -10836,7 +9879,7 @@
}
},
"node_modules/npm/node_modules/validate-npm-package-name": {
- "version": "7.0.0",
+ "version": "7.0.2",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -11048,7 +10091,6 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz",
"integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
@@ -11394,7 +10436,7 @@
"version": "1.57.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz",
"integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==",
- "devOptional": true,
+ "dev": true,
"license": "Apache-2.0",
"dependencies": {
"playwright-core": "1.57.0"
@@ -11413,7 +10455,7 @@
"version": "1.57.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz",
"integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==",
- "devOptional": true,
+ "dev": true,
"license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
@@ -11498,12 +10540,12 @@
}
},
"node_modules/proc-log": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz",
- "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz",
+ "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==",
"license": "ISC",
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/process-nextick-args": {
@@ -11571,12 +10613,12 @@
}
},
"node_modules/qs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
- "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "version": "6.14.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz",
+ "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==",
"license": "BSD-3-Clause",
"dependencies": {
- "side-channel": "^1.0.6"
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">=0.6"
@@ -11605,16 +10647,45 @@
}
},
"node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
+ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
"license": "MIT",
"dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
},
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/raw-body/node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -11635,31 +10706,6 @@
"rc": "cli.js"
}
},
- "node_modules/react": {
- "version": "19.2.3",
- "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz",
- "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "19.2.3",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz",
- "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "scheduler": "^0.27.0"
- },
- "peerDependencies": {
- "react": "^19.2.3"
- }
- },
"node_modules/read-package-up": {
"version": "12.0.0",
"resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-12.0.0.tgz",
@@ -12070,14 +11116,6 @@
"node": ">=v12.22.7"
}
},
- "node_modules/scheduler": {
- "version": "0.27.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
- "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
- "license": "MIT",
- "optional": true,
- "peer": true
- },
"node_modules/semantic-release": {
"version": "25.0.2",
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-25.0.2.tgz",
@@ -12895,12 +11933,12 @@
"license": "MIT"
},
"node_modules/socks": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz",
- "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==",
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
"license": "MIT",
"dependencies": {
- "ip-address": "^9.0.5",
+ "ip-address": "^10.0.1",
"smart-buffer": "^4.2.0"
},
"engines": {
@@ -13003,22 +12041,16 @@
"through2": "~2.0.0"
}
},
- "node_modules/sprintf-js": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
- "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
- "license": "BSD-3-Clause"
- },
"node_modules/ssri": {
- "version": "10.0.6",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz",
- "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==",
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz",
+ "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==",
"license": "ISC",
"dependencies": {
"minipass": "^7.0.3"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/stack-trace": {
@@ -13242,31 +12274,6 @@
"url": "https://github.com/sponsors/Borewit"
}
},
- "node_modules/styled-jsx": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
- "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "client-only": "0.0.1"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "peerDependencies": {
- "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
- },
- "peerDependenciesMeta": {
- "@babel/core": {
- "optional": true
- },
- "babel-plugin-macros": {
- "optional": true
- }
- }
- },
"node_modules/sucrase": {
"version": "3.35.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
@@ -13524,9 +12531,9 @@
}
},
"node_modules/svgtofont": {
- "version": "6.3.2",
- "resolved": "https://registry.npmjs.org/svgtofont/-/svgtofont-6.3.2.tgz",
- "integrity": "sha512-lK58H4sLLp+BdQYOe8RbMthudbPkS6fCbWqce5R79M34FcLo4UZ7wy5zf0mjrBfueFcqSJlZycoe5JnFnu9yoA==",
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/svgtofont/-/svgtofont-6.5.1.tgz",
+ "integrity": "sha512-qhKdsOBV83o3elEQP//lnEqyhyVfwvnspIqtnPSSxJAHK1Ze8/ELo13Ax28rJiN+2NkikVQEYePsM7ECYHJXBQ==",
"license": "MIT",
"dependencies": {
"auto-config-loader": "^2.0.0",
@@ -13540,7 +12547,7 @@
"svgo": "~3.3.0",
"ttf2eot": "~3.1.0",
"ttf2woff": "~3.0.0",
- "ttf2woff2": "~6.0.0",
+ "ttf2woff2": "~8.0.0",
"yargs": "^17.7.2"
},
"bin": {
@@ -13561,32 +12568,6 @@
}
}
},
- "node_modules/svgtofont/node_modules/chokidar": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "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"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
"node_modules/svgtofont/node_modules/commander": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
@@ -13635,34 +12616,6 @@
}
}
},
- "node_modules/svgtofont/node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/svgtofont/node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
"node_modules/symbol-tree": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
@@ -13683,53 +12636,19 @@
}
},
"node_modules/tar": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
- "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
- "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",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "license": "ISC",
- "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==",
- "license": "ISC",
+ "version": "7.5.6",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.6.tgz",
+ "integrity": "sha512-xqUeu2JAIJpXyvskvU3uvQW8PAmHrtXp2KDuMJwQqW8Sqq0CaZBAQ+dKS3RBXVhU4wC5NjAdKrmh84241gO9cA==",
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "yallist": "^4.0.0"
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.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==",
- "license": "ISC",
- "engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
"node_modules/temp-dir": {
@@ -14207,17 +13126,17 @@
}
},
"node_modules/ttf2woff2": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ttf2woff2/-/ttf2woff2-6.0.1.tgz",
- "integrity": "sha512-QVkHvd4VsJ9cZNnzrfJL4Fhl5tyGkO5ih9PRY3DQ2BicKjyA+92I+00H2p06mBw1d0eCtzSQh5bp7NTUA57trg==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/ttf2woff2/-/ttf2woff2-8.0.0.tgz",
+ "integrity": "sha512-lW7oRGaRAARAfftS7fWJ+4QIfD+biBjXCHlSlH86pSDc6/5nzKp4p/Uj1Ot7RQGiAaUU4kLGwOi6p8YYYdzrTg==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"bindings": "^1.5.0",
"bufferstreams": "^4.0.0",
- "debug": "^4.3.5",
- "nan": "^2.20.0",
- "node-gyp": "^10.2.0",
+ "debug": "^4.4.1",
+ "nan": "^2.22.2",
+ "node-gyp": "^11.2.0",
"yerror": "^8.0.0"
},
"bin": {
@@ -14306,9 +13225,9 @@
}
},
"node_modules/undici": {
- "version": "6.21.2",
- "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz",
- "integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==",
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz",
+ "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==",
"license": "MIT",
"engines": {
"node": ">=18.17"
@@ -14344,27 +13263,27 @@
}
},
"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==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz",
+ "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==",
"license": "ISC",
"dependencies": {
- "unique-slug": "^4.0.0"
+ "unique-slug": "^5.0.0"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.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==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz",
+ "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==",
"license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/unique-string": {
@@ -15003,10 +13922,13 @@
}
},
"node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "license": "ISC"
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/yaml": {
"version": "2.7.1",
diff --git a/package.json b/package.json
index 2f44da4..f99c407 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "@metricinsights/pp-dev",
"type": "module",
- "version": "0.12.4-beta.1",
+ "version": "0.13.0-beta.1",
"description": "Portal Page dev build tool",
"bin": {
"pp-dev": "bin/pp-dev.js"
@@ -65,6 +65,9 @@
"engines": {
"node": ">=22.14"
},
+ "overrides": {
+ "chokidar": "^4.0.3"
+ },
"peerDependencies": {
"next": ">= 13 < 16"
},
diff --git a/src/index.ts b/src/index.ts
index 421dd04..ef26839 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -50,7 +50,7 @@ export async function getViteConfig() {
normalizedPPDevConfig;
if (integrateMiTopBar) {
- plugins.push(miTopBarPlugin());
+ plugins.push(miTopBarPlugin(integrateMiTopBar));
}
if (imageOptimizer) {
diff --git a/src/plugin.ts b/src/plugin.ts
index e3b95e1..8ad7ade 100644
--- a/src/plugin.ts
+++ b/src/plugin.ts
@@ -1,18 +1,19 @@
-import { IndexHtmlTransformResult, Plugin, ServerOptions } from 'vite';
-import proxyPassMiddleware from './lib/proxy-pass.middleware.js';
-import { MiAPI } from './lib/pp.middleware.js';
-import { redirect, urlReplacer } from './lib/helpers/url.helper.js';
-import { ClientService } from './lib/client.service.js';
-import { initProxyCache } from './lib/proxy-cache.middleware.js';
-import { DistService } from './lib/dist.service.js';
-import { initRewriteResponse } from './lib/rewrite-response.middleware.js';
-import { initPPRedirect } from './lib/pp-redirect.middleware.js';
-import { initLoadPPData } from './lib/load-pp-data.middleware.js';
-import type { ViteImageOptimizer } from 'vite-plugin-image-optimizer';
-import internalServer from './lib/internal.middleware';
-import { getTokenErrorInfo } from './lib/helpers/index.js';
-
-type RequiredSelection
= Required> & Omit;
+import { IndexHtmlTransformResult, Plugin, ServerOptions } from "vite";
+import proxyPassMiddleware from "./lib/proxy-pass.middleware.js";
+import { MiAPI } from "./lib/pp.middleware.js";
+import { redirect, urlReplacer } from "./lib/helpers/url.helper.js";
+import { ClientService } from "./lib/client.service.js";
+import { initProxyCache } from "./lib/proxy-cache.middleware.js";
+import { DistService } from "./lib/dist.service.js";
+import { initRewriteResponse } from "./lib/rewrite-response.middleware.js";
+import { initPPRedirect } from "./lib/pp-redirect.middleware.js";
+import { initLoadPPData } from "./lib/load-pp-data.middleware.js";
+import type { ViteImageOptimizer } from "vite-plugin-image-optimizer";
+import internalServer from "./lib/internal.middleware";
+import { getTokenErrorInfo } from "./lib/helpers/index.js";
+
+type RequiredSelection = Required> &
+ Omit;
interface DistZipOptions {
/**
@@ -77,7 +78,22 @@ export interface VitePPDevOptions {
* @since 0.11.0
* @default false
*/
- integrateMiTopBar?: boolean;
+ integrateMiTopBar?:
+ | boolean
+ | {
+ /**
+ * Add MI Top Bar root element to the build.
+ * If disabled, you will need to add the root element manually to the HTML.
+ * @default false
+ */
+ addRootElement?: boolean;
+
+ /**
+ * Add MI Shared Components scripts to the build.
+ * @default false
+ */
+ addSharedComponentsScripts?: boolean;
+ };
/**
* Enable or disable request caching to the backend by the local proxy.
@@ -147,68 +163,87 @@ export interface VitePPDevOptions {
export type NormalizedVitePPDevOptions = RequiredSelection<
VitePPDevOptions,
- | 'templateName'
- | 'templateLess'
- | 'miHudLess'
- | 'integrateMiTopBar'
- | 'enableProxyCache'
- | 'proxyCacheTTL'
- | 'disableSSLValidation'
- | 'imageOptimizer'
- | 'outDir'
- | 'distZip'
- | 'syncBackupsDir'
- | 'v7Features'
- | 'personalAccessToken'
+ | "templateName"
+ | "templateLess"
+ | "miHudLess"
+ | "integrateMiTopBar"
+ | "enableProxyCache"
+ | "proxyCacheTTL"
+ | "disableSSLValidation"
+ | "imageOptimizer"
+ | "outDir"
+ | "distZip"
+ | "syncBackupsDir"
+ | "v7Features"
+ | "personalAccessToken"
>;
// Add more specific types for validation
type ValidationResult = { isValid: true } | { isValid: false; error: string };
-function validateConfigValue(value: T, validator: (v: T) => boolean, errorMessage: string): ValidationResult {
- return validator(value) ? { isValid: true } : { isValid: false, error: errorMessage };
+function validateConfigValue(
+ value: T,
+ validator: (v: T) => boolean,
+ errorMessage: string
+): ValidationResult {
+ return validator(value)
+ ? { isValid: true }
+ : { isValid: false, error: errorMessage };
}
function validateConfig(config: VitePPDevOptions): ValidationResult {
const validations: ValidationResult[] = [
validateConfigValue(
config,
- (c): c is VitePPDevOptions => typeof c === 'object' && c !== null,
- 'VitePPDevOptions must be an object',
+ (c): c is VitePPDevOptions => typeof c === "object" && c !== null,
+ "VitePPDevOptions must be an object"
),
validateConfigValue(
config.templateName,
- (name): name is string => typeof name === 'string' && name.length > 0,
- 'VitePPDevOptions.templateName must be a non-empty string',
+ (name): name is string => typeof name === "string" && name.length > 0,
+ "VitePPDevOptions.templateName must be a non-empty string"
),
validateConfigValue(
config.backendBaseURL,
- (url): url is string | undefined => url === undefined || (typeof url === 'string' && url.length > 0),
- 'VitePPDevOptions.backendBaseURL must be a non-empty string if provided',
+ (url): url is string | undefined =>
+ url === undefined || (typeof url === "string" && url.length > 0),
+ "VitePPDevOptions.backendBaseURL must be a non-empty string if provided"
),
validateConfigValue(
config.portalPageId,
- (id): id is number | undefined => id === undefined || (typeof id === 'number' && id > 0),
- 'VitePPDevOptions.portalPageId must be a positive number if provided',
+ (id): id is number | undefined =>
+ id === undefined || (typeof id === "number" && id > 0),
+ "VitePPDevOptions.portalPageId must be a positive number if provided"
),
validateConfigValue(
config.appId,
- (id): id is number | undefined => id === undefined || (typeof id === 'number' && id > 0),
- 'VitePPDevOptions.appId must be a positive number if provided',
+ (id): id is number | undefined =>
+ id === undefined || (typeof id === "number" && id > 0),
+ "VitePPDevOptions.appId must be a positive number if provided"
),
validateConfigValue(
config.proxyCacheTTL,
- (ttl): ttl is number | undefined => ttl === undefined || (typeof ttl === 'number' && ttl > 0),
- 'VitePPDevOptions.proxyCacheTTL must be a positive number if provided',
+ (ttl): ttl is number | undefined =>
+ ttl === undefined || (typeof ttl === "number" && ttl > 0),
+ "VitePPDevOptions.proxyCacheTTL must be a positive number if provided"
),
validateConfigValue(
config.integrateMiTopBar,
- (integrate): integrate is boolean | undefined => {
+ (
+ integrate
+ ): integrate is
+ | boolean
+ | { addRootElement?: boolean; addSharedComponentsScripts?: boolean }
+ | undefined => {
if (integrate === undefined) {
return true;
}
- if (typeof integrate !== 'boolean') {
+ if (integrate === null) {
+ return false;
+ }
+
+ if (typeof integrate !== "boolean" && typeof integrate !== "object") {
return false;
}
@@ -217,9 +252,33 @@ function validateConfig(config: VitePPDevOptions): ValidationResult {
return false;
}
+ if (typeof integrate === "object" && integrate !== null) {
+ if (
+ integrate.addRootElement !== undefined &&
+ typeof integrate.addRootElement !== "boolean"
+ ) {
+ return false;
+ }
+
+ if (
+ integrate.addSharedComponentsScripts !== undefined &&
+ typeof integrate.addSharedComponentsScripts !== "boolean"
+ ) {
+ return false;
+ }
+
+ if (
+ config.miHudLess !== true &&
+ (integrate.addRootElement === true ||
+ integrate.addSharedComponentsScripts === true)
+ ) {
+ return false;
+ }
+ }
+
return true;
},
- 'VitePPDevOptions.integrateMiTopBar can only be true when miHudLess is true',
+ "VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans"
),
];
@@ -228,7 +287,9 @@ function validateConfig(config: VitePPDevOptions): ValidationResult {
return invalidResult || { isValid: true };
}
-export function normalizeVitePPDevConfig(config: VitePPDevOptions): NormalizedVitePPDevOptions {
+export function normalizeVitePPDevConfig(
+ config: VitePPDevOptions
+): NormalizedVitePPDevOptions {
const validationResult = validateConfig(config);
if (!validationResult.isValid) {
@@ -246,9 +307,9 @@ export function normalizeVitePPDevConfig(config: VitePPDevOptions): NormalizedVi
miHudLess = false,
integrateMiTopBar = false,
templateLess = false,
- outDir = 'dist',
+ outDir = "dist",
distZip = true,
- syncBackupsDir = 'backups',
+ syncBackupsDir = "backups",
v7Features = false,
personalAccessToken = process.env.MI_ACCESS_TOKEN,
} = config || {};
@@ -258,15 +319,15 @@ export function normalizeVitePPDevConfig(config: VitePPDevOptions): NormalizedVi
if (distZipConfig === true) {
distZipConfig = {
outFileName: `${config.templateName}.zip`,
- outDir: 'dist-zip',
+ outDir: "dist-zip",
};
- } else if (typeof distZip === 'object') {
+ } else if (typeof distZip === "object") {
distZipConfig = {
outFileName:
- typeof distZip.outFileName === 'string'
- ? distZip.outFileName.replace('[templateName]', config.templateName)
+ typeof distZip.outFileName === "string"
+ ? distZip.outFileName.replace("[templateName]", config.templateName)
: `${config.templateName}.zip`,
- outDir: distZip.outDir ?? 'dist-zip',
+ outDir: distZip.outDir ?? "dist-zip",
};
} else {
distZipConfig = false;
@@ -274,11 +335,11 @@ export function normalizeVitePPDevConfig(config: VitePPDevOptions): NormalizedVi
let imageOptimizerConfig = imageOptimizer;
- if (typeof imageOptimizer === 'boolean') {
+ if (typeof imageOptimizer === "boolean") {
if (imageOptimizerConfig === true) {
imageOptimizerConfig = {};
}
- } else if (typeof imageOptimizer !== 'object') {
+ } else if (typeof imageOptimizer !== "object") {
imageOptimizerConfig = false;
}
@@ -300,18 +361,22 @@ export function normalizeVitePPDevConfig(config: VitePPDevOptions): NormalizedVi
} as NormalizedVitePPDevOptions;
}
-function validateServerConfig(config: ServerOptions & { base: string }): ValidationResult {
+function validateServerConfig(
+ config: ServerOptions & { base: string }
+): ValidationResult {
const validations: ValidationResult[] = [
validateConfigValue(
config.base,
- (base): base is string => typeof base === 'string' && base.length > 0 && base !== '/',
- 'Server base path cannot be empty or "/"',
+ (base): base is string =>
+ typeof base === "string" && base.length > 0 && base !== "/",
+ 'Server base path cannot be empty or "/"'
),
validateConfigValue(
config.port,
(port): port is number | undefined =>
- port === undefined || (typeof port === 'number' && port > 0 && port < 65536),
- 'Server port must be a valid port number (1-65535)',
+ port === undefined ||
+ (typeof port === "number" && port > 0 && port < 65536),
+ "Server port must be a valid port number (1-65535)"
),
];
@@ -338,27 +403,30 @@ function validateMiAPIConfig(config: MiAPIConfig): ValidationResult {
const validations: ValidationResult[] = [
validateConfigValue(
config.headers,
- (headers): headers is MiAPIConfig['headers'] =>
- typeof headers === 'object' &&
- typeof headers.host === 'string' &&
- typeof headers.referer === 'string' &&
- typeof headers.origin === 'string',
- 'MiAPI headers must be properly configured',
+ (headers): headers is MiAPIConfig["headers"] =>
+ typeof headers === "object" &&
+ typeof headers.host === "string" &&
+ typeof headers.referer === "string" &&
+ typeof headers.origin === "string",
+ "MiAPI headers must be properly configured"
),
validateConfigValue(
config.portalPageId,
- (id): id is number | undefined => id === undefined || (typeof id === 'number' && id > 0),
- 'MiAPI portalPageId must be a positive number if provided',
+ (id): id is number | undefined =>
+ id === undefined || (typeof id === "number" && id > 0),
+ "MiAPI portalPageId must be a positive number if provided"
),
validateConfigValue(
config.appId,
- (id): id is number | undefined => id === undefined || (typeof id === 'number' && id > 0),
- 'MiAPI appId must be a positive number if provided',
+ (id): id is number | undefined =>
+ id === undefined || (typeof id === "number" && id > 0),
+ "MiAPI appId must be a positive number if provided"
),
validateConfigValue(
config.personalAccessToken,
- (token): token is string | undefined => token === undefined || typeof token === 'string',
- 'MiAPI personalAccessToken must be a string if provided',
+ (token): token is string | undefined =>
+ token === undefined || typeof token === "string",
+ "MiAPI personalAccessToken must be a string if provided"
),
];
@@ -376,8 +444,8 @@ function validateProxyCacheConfig(config: ProxyCacheConfig): ValidationResult {
const validations: ValidationResult[] = [
validateConfigValue(
config.ttl,
- (ttl): ttl is number => typeof ttl === 'number' && ttl > 0,
- 'Proxy cache TTL must be a positive number',
+ (ttl): ttl is number => typeof ttl === "number" && ttl > 0,
+ "Proxy cache TTL must be a positive number"
),
];
@@ -407,11 +475,11 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
let baseDir = process.cwd();
return {
- name: 'vite-pp-dev',
- apply: 'serve',
+ name: "vite-pp-dev",
+ apply: "serve",
config: (config) => {
const serverConfig: ServerOptions & { base: string } = {
- base: config.base || '',
+ base: config.base || "",
...config.server,
};
@@ -445,8 +513,8 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
isFirstRequest = false;
result.tags.push({
- tag: 'script',
- injectTo: 'body',
+ tag: "script",
+ injectTo: "body",
children: `${Math.random()}`,
});
}
@@ -456,11 +524,11 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
configureServer: (server) => {
let base = server.config.base;
- if (!base.endsWith('/')) {
- base += '/';
+ if (!base.endsWith("/")) {
+ base += "/";
}
- const baseWithoutTrailingSlash = base.substring(0, base.lastIndexOf('/'));
+ const baseWithoutTrailingSlash = base.substring(0, base.lastIndexOf("/"));
server.middlewares.use(initPPRedirect(base, templateName));
@@ -471,14 +539,18 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
headers: {
host: baseUrlHost,
referer: backendBaseURL,
- origin: backendBaseURL.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i, '$1$2'),
+ origin: backendBaseURL.replace(
+ /^(https?:\/\/)([^/]+)(\/.*)?$/i,
+ "$1$2"
+ ),
},
portalPageId,
appId: portalPageId,
templateLess,
disableSSLValidation,
v7Features,
- personalAccessToken: personalAccessToken ?? process.env.MI_ACCESS_TOKEN,
+ personalAccessToken:
+ personalAccessToken ?? process.env.MI_ACCESS_TOKEN,
};
const validationResult = validateMiAPIConfig(miConfig);
@@ -513,20 +585,33 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
const isIndexRegExp = new RegExp(`^((${base})|/)$`);
// Get portal page variables from the backend (also, redirect magic)
- server.middlewares.use(initLoadPPData(isIndexRegExp, mi, Object.assign({}, options)));
+ server.middlewares.use(
+ initLoadPPData(isIndexRegExp, mi, Object.assign({}, options))
+ );
server.middlewares.use(
proxyPassMiddleware({
devServer: server,
baseURL: backendBaseURL,
- proxyIgnore: ['/@vite', '/@metricinsights', '/@', baseWithoutTrailingSlash],
+ proxyIgnore: [
+ "/@vite",
+ "/@metricinsights",
+ "/@",
+ baseWithoutTrailingSlash,
+ ],
disableSSLValidation,
miAPI: mi,
- }) as any,
+ }) as any
);
// Helper function to send error responses consistently
- const sendErrorResponse = (res: any, status: number, error: string, details?: string, code?: string) => {
+ const sendErrorResponse = (
+ res: any,
+ status: number,
+ error: string,
+ details?: string,
+ code?: string
+ ) => {
const response: any = { error };
if (details) {
@@ -541,9 +626,16 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
};
// Helper function to handle token validation errors
- const handleTokenValidationError = (res: any, error: any, tokenType: string) => {
+ const handleTokenValidationError = (
+ res: any,
+ error: any,
+ tokenType: string
+ ) => {
// Log the error for debugging
- server.config.logger.error(`${tokenType} token validation error:`, error);
+ server.config.logger.error(
+ `${tokenType} token validation error:`,
+ error
+ );
// Use the token helper for better error handling
const errorInfo = getTokenErrorInfo(error);
@@ -553,7 +645,7 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
const enhancedErrorInfo = error.tokenErrorInfo;
server.config.logger.info(
- `Using enhanced error info: ${enhancedErrorInfo.code} - ${enhancedErrorInfo.userFriendlyMessage}`,
+ `Using enhanced error info: ${enhancedErrorInfo.code} - ${enhancedErrorInfo.userFriendlyMessage}`
);
const status = enhancedErrorInfo.status || 500;
@@ -564,7 +656,7 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
sendErrorResponse(res, status, userFriendlyMessage, details, code);
} else {
server.config.logger.info(
- `Using original error info: ${errorInfo.code} - ${errorInfo.userFriendlyMessage}`,
+ `Using original error info: ${errorInfo.code} - ${errorInfo.userFriendlyMessage}`
);
// Map error codes to appropriate HTTP status codes and messages
@@ -573,32 +665,36 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
let errorCode: string;
switch (errorInfo.code) {
- case 'SESSION_EXPIRED':
+ case "SESSION_EXPIRED":
status = 412;
- errorMessage = tokenType === 'personal' ? 'Personal access token expired' : 'Session expired';
- errorCode = tokenType === 'personal' ? 'PAT_EXPIRED' : 'SESSION_EXPIRED';
+ errorMessage =
+ tokenType === "personal"
+ ? "Personal access token expired"
+ : "Session expired";
+ errorCode =
+ tokenType === "personal" ? "PAT_EXPIRED" : "SESSION_EXPIRED";
break;
- case 'UNAUTHORIZED':
+ case "UNAUTHORIZED":
status = 401;
- errorMessage = 'Unauthorized';
- errorCode = 'UNAUTHORIZED';
+ errorMessage = "Unauthorized";
+ errorCode = "UNAUTHORIZED";
break;
- case 'FORBIDDEN':
+ case "FORBIDDEN":
status = 403;
- errorMessage = 'Access forbidden';
- errorCode = 'FORBIDDEN';
+ errorMessage = "Access forbidden";
+ errorCode = "FORBIDDEN";
break;
default:
status = 500;
- errorMessage = 'Internal server error';
+ errorMessage = "Internal server error";
errorCode = errorInfo.code;
}
const details =
- tokenType === 'personal' && errorCode === 'PAT_EXPIRED'
- ? 'Your personal access token has expired. Please generate a new token from the portal.'
- : tokenType === 'regular' && errorCode === 'SESSION_EXPIRED'
- ? 'Your portal session has expired. Please refresh your token or re-authenticate.'
+ tokenType === "personal" && errorCode === "PAT_EXPIRED"
+ ? "Your personal access token has expired. Please generate a new token from the portal."
+ : tokenType === "regular" && errorCode === "SESSION_EXPIRED"
+ ? "Your portal session has expired. Please refresh your token or re-authenticate."
: errorInfo.userFriendlyMessage;
sendErrorResponse(res, status, errorMessage, details, errorCode);
@@ -607,84 +703,93 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
return null;
};
- internalServer.post('/@api/login', async (req, res, next) => {
+ internalServer.post("/@api/login", async (req, res, next) => {
const { token, tokenType } = req.body;
if (!token) {
- sendErrorResponse(res, 400, 'Token is required');
+ sendErrorResponse(res, 400, "Token is required");
return;
}
// Log token validation attempt
- server.config.logger.info(`Attempting to validate ${tokenType} token...`);
+ server.config.logger.info(
+ `Attempting to validate ${tokenType} token...`
+ );
- if (tokenType === 'personal') {
+ if (tokenType === "personal") {
const testRequest = await mi
.get<{ user: { user_id: number; username: string } }>(
- '/data/page/index/auth/info',
+ "/data/page/index/auth/info",
{
- 'Content-Type': 'application/json',
- Accept: 'application/json',
+ "Content-Type": "application/json",
+ Accept: "application/json",
Authorization: `Bearer ${token}`,
},
- true,
+ true
)
.then(async (response) => {
- if (typeof response.data?.user?.user_id === 'number') {
+ if (typeof response.data?.user?.user_id === "number") {
mi.personalAccessToken = token;
server.config.logger.info(
- `Personal access token validated successfully for user ${response.data.user.user_id}`,
+ `Personal access token validated successfully for user ${response.data.user.user_id}`
);
return response;
}
- sendErrorResponse(res, 400, 'Token expired or invalid');
+ sendErrorResponse(res, 400, "Token expired or invalid");
return null;
})
- .catch((error: any) => handleTokenValidationError(res, error, 'personal'));
+ .catch((error: any) =>
+ handleTokenValidationError(res, error, "personal")
+ );
if (!testRequest) {
return;
}
- redirect(res, '/', 302);
- } else if (tokenType === 'regular') {
+ redirect(res, "/", 302);
+ } else if (tokenType === "regular") {
const testRequest = await mi
.get<{ users: { user_id: number; username: string }[] }>(
- '/api/user',
+ "/api/user",
{
- 'Content-Type': 'application/json',
- Accept: 'application/json',
+ "Content-Type": "application/json",
+ Accept: "application/json",
Token: token,
},
- true,
+ true
)
.then((response) => {
if (response.data?.users?.length) {
mi.personalAccessToken = undefined;
server.config.logger.info(
- `Regular token validated successfully for ${response.data.users.length} user(s)`,
+ `Regular token validated successfully for ${response.data.users.length} user(s)`
);
- res.setHeader('set-cookie', response.headers['set-cookie'] ?? '');
+ res.setHeader(
+ "set-cookie",
+ response.headers["set-cookie"] ?? ""
+ );
return response;
}
- sendErrorResponse(res, 400, 'Token expired or invalid');
+ sendErrorResponse(res, 400, "Token expired or invalid");
return null;
})
- .catch((error: any) => handleTokenValidationError(res, error, 'regular'));
+ .catch((error: any) =>
+ handleTokenValidationError(res, error, "regular")
+ );
if (!testRequest) {
return;
}
- redirect(res, '/', 302);
+ redirect(res, "/", 302);
}
});
@@ -696,13 +801,13 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
templateName,
Object.assign(
{ backupDir: syncBackupsDir },
- typeof distZip === 'object'
+ typeof distZip === "object"
? {
distZipFolder: distZip.outDir,
distZipFilename: distZip.outFileName,
}
- : undefined,
- ),
+ : undefined
+ )
)
: undefined;
@@ -715,14 +820,20 @@ function vitePPDev(options: NormalizedVitePPDevOptions): Plugin {
server.middlewares.use(
initRewriteResponse(
(url) => {
- console.log('initRewriteResponse.url', url);
+ console.log("initRewriteResponse.url", url);
- return url.split('?')[0].endsWith('index.html');
+ return url.split("?")[0].endsWith("index.html");
},
(response, req) => {
- return Buffer.from(urlReplacer(baseUrlHost, req.headers.host ?? '', mi.buildPage(response, miHudLess)));
- },
- ),
+ return Buffer.from(
+ urlReplacer(
+ baseUrlHost,
+ req.headers.host ?? "",
+ mi.buildPage(response, miHudLess)
+ )
+ );
+ }
+ )
);
};
}
diff --git a/src/plugins/mi-topbar-plugin.ts b/src/plugins/mi-topbar-plugin.ts
index ad1f1f1..f3fe4c7 100644
--- a/src/plugins/mi-topbar-plugin.ts
+++ b/src/plugins/mi-topbar-plugin.ts
@@ -1,33 +1,54 @@
-import { Plugin } from "vite";
+import {
+ HtmlTagDescriptor,
+ Plugin,
+} from "vite";
-export function miTopBarPlugin(): Plugin {
+export function miTopBarPlugin(
+ integrateMiTopBar?:
+ | boolean
+ | { addRootElement?: boolean; addSharedComponentsScripts?: boolean }
+): Plugin {
return {
name: "mi-topbar-plugin",
transformIndexHtml() {
- return [
- {
- tag: "script",
- injectTo: "head-prepend",
- attrs: { src: "/auth/info.js" },
- },
- {
- tag: "script",
- injectTo: "head-prepend",
- attrs: { src: "/js/main.js", defer: "defer" },
- },
- {
- tag: "link",
- injectTo: "head-prepend",
- attrs: { href: "/css/main.css", rel: "stylesheet" },
- },
- {
+ const tags: HtmlTagDescriptor[] = [];
+
+ if (
+ integrateMiTopBar === true ||
+ (typeof integrateMiTopBar === "object" && integrateMiTopBar.addRootElement === true)
+ ) {
+ tags.push({
tag: "div",
injectTo: "body-prepend",
- attrs: {
- id: "mi-react-root",
+ attrs: { id: "mi-react-root" },
+ });
+ }
+
+ if (
+ integrateMiTopBar === true ||
+ (typeof integrateMiTopBar === "object" &&
+ integrateMiTopBar.addSharedComponentsScripts === true)
+ ) {
+ tags.push(
+ {
+ tag: "script",
+ injectTo: "head-prepend",
+ attrs: { src: "/auth/info.js" },
},
- },
- ];
+ {
+ tag: "script",
+ injectTo: "head-prepend",
+ attrs: { src: "/js/main.js", defer: "defer" },
+ },
+ {
+ tag: "link",
+ injectTo: "head-prepend",
+ attrs: { href: "/css/main.css", rel: "stylesheet" },
+ }
+ );
+ }
+
+ return tags;
},
};
}
diff --git a/tests/unit/plugin/plugin.normalize.spec.ts b/tests/unit/plugin/plugin.normalize.spec.ts
index 1c791a1..daac4e0 100644
--- a/tests/unit/plugin/plugin.normalize.spec.ts
+++ b/tests/unit/plugin/plugin.normalize.spec.ts
@@ -288,7 +288,85 @@ describe('normalizeVitePPDevConfig', () => {
integrateMiTopBar: true,
miHudLess: false,
})
- ).toThrow('integrateMiTopBar can only be true when miHudLess is true');
+ ).toThrow('VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans');
+ });
+
+ it('should throw error when integrateMiTopBar object has addRootElement true but miHudLess is false', () => {
+ expect(() =>
+ normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: { addRootElement: true },
+ miHudLess: false,
+ })
+ ).toThrow('VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans');
+ });
+
+ it('should throw error when integrateMiTopBar object has addSharedComponentsScripts true but miHudLess is false', () => {
+ expect(() =>
+ normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: { addSharedComponentsScripts: true },
+ miHudLess: false,
+ })
+ ).toThrow('VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans');
+ });
+
+ it('should throw error when integrateMiTopBar object has both properties true but miHudLess is false', () => {
+ expect(() =>
+ normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: {
+ addRootElement: true,
+ addSharedComponentsScripts: true,
+ },
+ miHudLess: false,
+ })
+ ).toThrow('VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans');
+ });
+
+ it('should throw error when integrateMiTopBar is invalid type (string)', () => {
+ expect(() =>
+ normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: 'invalid' as any,
+ })
+ ).toThrow('VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans');
+ });
+
+ it('should throw error when integrateMiTopBar is invalid type (number)', () => {
+ expect(() =>
+ normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: 123 as any,
+ })
+ ).toThrow('VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans');
+ });
+
+ it('should throw error when integrateMiTopBar object has invalid addRootElement type', () => {
+ expect(() =>
+ normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: { addRootElement: 'invalid' as any },
+ })
+ ).toThrow('VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans');
+ });
+
+ it('should throw error when integrateMiTopBar object has invalid addSharedComponentsScripts type', () => {
+ expect(() =>
+ normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: { addSharedComponentsScripts: 123 as any },
+ })
+ ).toThrow('VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans');
+ });
+
+ it('should throw error when integrateMiTopBar is null', () => {
+ expect(() =>
+ normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: null as any,
+ })
+ ).toThrow('VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans');
});
it('should allow integrateMiTopBar: true when miHudLess is true', () => {
@@ -301,6 +379,106 @@ describe('normalizeVitePPDevConfig', () => {
expect(config.integrateMiTopBar).toBe(true);
expect(config.miHudLess).toBe(true);
});
+
+ it('should allow integrateMiTopBar: false when miHudLess is false', () => {
+ const config = normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: false,
+ miHudLess: false,
+ });
+
+ expect(config.integrateMiTopBar).toBe(false);
+ expect(config.miHudLess).toBe(false);
+ });
+
+ it('should allow integrateMiTopBar object with addRootElement true when miHudLess is true', () => {
+ const config = normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: { addRootElement: true },
+ miHudLess: true,
+ });
+
+ expect(config.integrateMiTopBar).toEqual({ addRootElement: true });
+ expect(config.miHudLess).toBe(true);
+ });
+
+ it('should allow integrateMiTopBar object with addSharedComponentsScripts true when miHudLess is true', () => {
+ const config = normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: { addSharedComponentsScripts: true },
+ miHudLess: true,
+ });
+
+ expect(config.integrateMiTopBar).toEqual({ addSharedComponentsScripts: true });
+ expect(config.miHudLess).toBe(true);
+ });
+
+ it('should allow integrateMiTopBar object with both properties true when miHudLess is true', () => {
+ const config = normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: {
+ addRootElement: true,
+ addSharedComponentsScripts: true,
+ },
+ miHudLess: true,
+ });
+
+ expect(config.integrateMiTopBar).toEqual({
+ addRootElement: true,
+ addSharedComponentsScripts: true,
+ });
+ expect(config.miHudLess).toBe(true);
+ });
+
+ it('should allow integrateMiTopBar object with both properties false when miHudLess is false', () => {
+ const config = normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: {
+ addRootElement: false,
+ addSharedComponentsScripts: false,
+ },
+ miHudLess: false,
+ });
+
+ expect(config.integrateMiTopBar).toEqual({
+ addRootElement: false,
+ addSharedComponentsScripts: false,
+ });
+ expect(config.miHudLess).toBe(false);
+ });
+
+ it('should allow integrateMiTopBar empty object when miHudLess is false', () => {
+ const config = normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: {},
+ miHudLess: false,
+ });
+
+ expect(config.integrateMiTopBar).toEqual({});
+ expect(config.miHudLess).toBe(false);
+ });
+
+ it('should allow integrateMiTopBar object with addRootElement false when miHudLess is false', () => {
+ const config = normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: { addRootElement: false },
+ miHudLess: false,
+ });
+
+ expect(config.integrateMiTopBar).toEqual({ addRootElement: false });
+ expect(config.miHudLess).toBe(false);
+ });
+
+ it('should allow integrateMiTopBar object with addSharedComponentsScripts false when miHudLess is false', () => {
+ const config = normalizeVitePPDevConfig({
+ templateName: 'test',
+ integrateMiTopBar: { addSharedComponentsScripts: false },
+ miHudLess: false,
+ });
+
+ expect(config.integrateMiTopBar).toEqual({ addSharedComponentsScripts: false });
+ expect(config.miHudLess).toBe(false);
+ });
});
describe('Complete Configuration', () => {