diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8857db1a..1f879fec 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -76,7 +76,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
- run: "pip install ruff==0.8.6"
+ run: "pip install ruff==0.11.0"
- name: "Linting: ruff check"
run: "ruff check ."
- name: "Linting: ruff format"
@@ -212,6 +212,7 @@ jobs:
- "3.10"
- "3.11"
- "3.12"
+ - "3.13"
if: |
always() && !cancelled() &&
!contains(needs.*.result, 'failure') &&
diff --git a/.github/workflows/sync-docs.yml b/.github/workflows/sync-docs.yml
index ee8a74f4..3882edd7 100644
--- a/.github/workflows/sync-docs.yml
+++ b/.github/workflows/sync-docs.yml
@@ -8,7 +8,8 @@ on:
- stable
paths:
- 'docs/docs/**'
- - 'docs/sidebars.ts'
+ - 'docs/sidebars-infrahubctl.ts'
+ - 'docs/sidebars-python-sdk.ts'
pull_request:
branches:
- stable
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8c57d1c8..8b242f64 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,21 @@ This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the chang
+## [1.8.0](https://github.com/opsmill/infrahub-sdk-python/tree/v1.8.0) - 2025-03-19
+
+### Deprecated
+
+- Timestamp: Direct access to `obj` and `add_delta` have been deprecated and will be removed in a future version. ([#255](https://github.com/opsmill/infrahub-sdk-python/issues/255))
+
+### Added
+
+- Added support for Enum in GraphQL query and mutation. ([#18](https://github.com/opsmill/infrahub-sdk-python/issues/18))
+
+### Fixed
+
+- Refactored Timestamp to use `whenever` instead of `pendulum` and extend Timestamp with `add()`, `subtract()`, and `to_datetime()`. ([#255](https://github.com/opsmill/infrahub-sdk-python/issues/255))
+- Fixed support for Python 3.13 as it's no longer required to have Rust installed on the system.
+
## [1.7.2](https://github.com/opsmill/infrahub-sdk-python/tree/v1.7.2) - 2025-03-07
### Added
@@ -26,6 +41,14 @@ This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the chang
### Fixed
- `protocols` CTL command properly gets default branch setting from environment variable. ([#104](https://github.com/opsmill/infrahub-sdk-python/issues/104))
+- Fix typing for Python 3.9 ([#251](https://github.com/opsmill/infrahub-sdk-python/issues/251))
+- Refactor Timestamp to use `whenever` instead of `pendulum` and extend Timestamp with add(), subtract(), and to_datetime(). ([#255](https://github.com/opsmill/infrahub-sdk-python/issues/255))
+- Remove default value "main" for branch parameter from all Infrahub CTL commands. ([#264](https://github.com/opsmill/infrahub-sdk-python/issues/264))
+- Fixed support for Python 3.13, it's no longer required to have Rust installed on the system.
+
+### Housekeeping
+
+- Move the function `read_file` from the ctl module to the SDK.
- Fixed typing for Python 3.9 and removed support for Python 3.13. ([#251](https://github.com/opsmill/infrahub-sdk-python/issues/251))
- Removed default value "main" for branch parameter from all Infrahub CTL commands. ([#264](https://github.com/opsmill/infrahub-sdk-python/issues/264))
diff --git a/docs/docs/python-sdk/guides/query_data.mdx b/docs/docs/python-sdk/guides/query_data.mdx
index 5b83f84d..4f3116a0 100644
--- a/docs/docs/python-sdk/guides/query_data.mdx
+++ b/docs/docs/python-sdk/guides/query_data.mdx
@@ -19,26 +19,7 @@ The `get` and `filters` query methods allow you to use filters. Filters specify
### Discovering available filters
-The easiest way to discover the available filters for a kind of node is by querying the schema.
-
-
-
-
- ```python
- tag_schema = await client.schema.get("BuiltinTag")
- print(tag_schema.filters)
- ```
-
-
-
-
- ```python
- tag_schema = client.schema.get("BuiltinTag")
- print(tag_schema.filters)
- ```
-
-
-
+The easiest way to discover the available filters for a kind of node is by opening the GraphQLi Explorer in the GraphQL sandbox. Under each GraphQL query you will find the available filters.
### Attribute filters
diff --git a/docs/docs/python-sdk/introduction.mdx b/docs/docs/python-sdk/introduction.mdx
index a461c98f..9ee84167 100644
--- a/docs/docs/python-sdk/introduction.mdx
+++ b/docs/docs/python-sdk/introduction.mdx
@@ -10,18 +10,18 @@ The Infrahub Python SDK greatly simplifies how you can interact with Infrahub pr
## Guides
-- [Installing infrahub-sdk](./guides/installation)
-- [Creating a client](./guides/client)
-- [Querying data in Infrahub](./guides/query_data)
-- [Managing nodes](./guides/create_update_delete)
-- [Managing branches](./guides/branches)
-- [Using the client store](./guides/store)
-- [Using the client tracking mode](./guides/tracking)
+- [Installing infrahub-sdk](./guides/installation.mdx)
+- [Creating a client](./guides/client.mdx)
+- [Querying data in Infrahub](./guides/query_data.mdx)
+- [Managing nodes](./guides/create_update_delete.mdx)
+- [Managing branches](./guides/branches.mdx)
+- [Using the client store](./guides/store.mdx)
+- [Using the client tracking mode](./guides/tracking.mdx)
## Topics
-- [Understanding tracking in the Python SDK](./topics/tracking)
+- [Understanding tracking in the Python SDK](./topics/tracking.mdx)
## Reference
-- [Client configuration](./reference/config)
+- [Client configuration](./reference/config.mdx)
diff --git a/docs/package-lock.json b/docs/package-lock.json
index 143994c3..0cd8b82f 100644
--- a/docs/package-lock.json
+++ b/docs/package-lock.json
@@ -8,8 +8,8 @@
"name": "docs",
"version": "0.0.0",
"dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/preset-classic": "3.5.2",
+ "@docusaurus/core": "^3.7.0",
+ "@docusaurus/preset-classic": "^3.7.0",
"@mdx-js/react": "^3.0.0",
"clsx": "^2.0.0",
"prism-react-renderer": "^2.3.0",
@@ -18,7 +18,7 @@
"react-dom": "^18.0.0"
},
"devDependencies": {
- "@docusaurus/module-type-aliases": "3.5.2",
+ "@docusaurus/module-type-aliases": "^3.7.0",
"@docusaurus/tsconfig": "3.5.2",
"@docusaurus/types": "3.5.2",
"typescript": "~5.5.2"
@@ -28,234 +28,144 @@
}
},
"node_modules/@algolia/autocomplete-core": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz",
- "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==",
+ "version": "1.17.9",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz",
+ "integrity": "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==",
"license": "MIT",
"dependencies": {
- "@algolia/autocomplete-plugin-algolia-insights": "1.9.3",
- "@algolia/autocomplete-shared": "1.9.3"
+ "@algolia/autocomplete-plugin-algolia-insights": "1.17.9",
+ "@algolia/autocomplete-shared": "1.17.9"
}
},
"node_modules/@algolia/autocomplete-plugin-algolia-insights": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz",
- "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==",
+ "version": "1.17.9",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz",
+ "integrity": "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==",
"license": "MIT",
"dependencies": {
- "@algolia/autocomplete-shared": "1.9.3"
+ "@algolia/autocomplete-shared": "1.17.9"
},
"peerDependencies": {
"search-insights": ">= 1 < 3"
}
},
"node_modules/@algolia/autocomplete-preset-algolia": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.6.tgz",
- "integrity": "sha512-Cvg5JENdSCMuClwhJ1ON1/jSuojaYMiUW2KePm18IkdCzPJj/NXojaOxw58RFtQFpJgfVW8h2E8mEoDtLlMdeA==",
+ "version": "1.17.9",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz",
+ "integrity": "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==",
"license": "MIT",
"dependencies": {
- "@algolia/autocomplete-shared": "1.17.6"
+ "@algolia/autocomplete-shared": "1.17.9"
},
"peerDependencies": {
"@algolia/client-search": ">= 4.9.1 < 6",
"algoliasearch": ">= 4.9.1 < 6"
}
},
- "node_modules/@algolia/autocomplete-preset-algolia/node_modules/@algolia/autocomplete-shared": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.6.tgz",
- "integrity": "sha512-aq/3V9E00Tw2GC/PqgyPGXtqJUlVc17v4cn1EUhSc+O/4zd04Uwb3UmPm8KDaYQQOrkt1lwvCj2vG2wRE5IKhw==",
- "license": "MIT",
- "peerDependencies": {
- "@algolia/client-search": ">= 4.9.1 < 6",
- "algoliasearch": ">= 4.9.1 < 6"
- }
- },
"node_modules/@algolia/autocomplete-shared": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz",
- "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==",
+ "version": "1.17.9",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz",
+ "integrity": "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==",
"license": "MIT",
"peerDependencies": {
"@algolia/client-search": ">= 4.9.1 < 6",
"algoliasearch": ">= 4.9.1 < 6"
}
},
- "node_modules/@algolia/cache-browser-local-storage": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz",
- "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==",
- "license": "MIT",
- "dependencies": {
- "@algolia/cache-common": "4.24.0"
- }
- },
- "node_modules/@algolia/cache-common": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz",
- "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==",
- "license": "MIT"
- },
- "node_modules/@algolia/cache-in-memory": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz",
- "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==",
- "license": "MIT",
- "dependencies": {
- "@algolia/cache-common": "4.24.0"
- }
- },
"node_modules/@algolia/client-abtesting": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.12.0.tgz",
- "integrity": "sha512-hx4eVydkm3yrFCFxmcBtSzI/ykt0cZ6sDWch+v3JTgKpD2WtosMJU3Upv1AjQ4B6COSHCOWEX3vfFxW6OoH6aA==",
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.20.4.tgz",
+ "integrity": "sha512-OZ3Xvvf+k7NMcwmmioIVX+76E/KKtN607NCMNsBEKe+uHqktZ+I5bmi/EVr2m5VF59Gnh9MTlJCdXtBiGjruxw==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.12.0",
- "@algolia/requester-browser-xhr": "5.12.0",
- "@algolia/requester-fetch": "5.12.0",
- "@algolia/requester-node-http": "5.12.0"
+ "@algolia/client-common": "5.20.4",
+ "@algolia/requester-browser-xhr": "5.20.4",
+ "@algolia/requester-fetch": "5.20.4",
+ "@algolia/requester-node-http": "5.20.4"
},
"engines": {
"node": ">= 14.0.0"
}
},
- "node_modules/@algolia/client-account": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz",
- "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==",
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "4.24.0",
- "@algolia/client-search": "4.24.0",
- "@algolia/transporter": "4.24.0"
- }
- },
- "node_modules/@algolia/client-account/node_modules/@algolia/client-common": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
- "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
- "license": "MIT",
- "dependencies": {
- "@algolia/requester-common": "4.24.0",
- "@algolia/transporter": "4.24.0"
- }
- },
- "node_modules/@algolia/client-account/node_modules/@algolia/client-search": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
- "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "4.24.0",
- "@algolia/requester-common": "4.24.0",
- "@algolia/transporter": "4.24.0"
- }
- },
"node_modules/@algolia/client-analytics": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz",
- "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==",
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "4.24.0",
- "@algolia/client-search": "4.24.0",
- "@algolia/requester-common": "4.24.0",
- "@algolia/transporter": "4.24.0"
- }
- },
- "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
- "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.20.4.tgz",
+ "integrity": "sha512-8pM5zQpHonCIBxKmMyBLgQoaSKUNBE5u741VEIjn2ArujolhoKRXempRAlLwEg5hrORKl9XIlit00ff4g6LWvA==",
"license": "MIT",
"dependencies": {
- "@algolia/requester-common": "4.24.0",
- "@algolia/transporter": "4.24.0"
- }
- },
- "node_modules/@algolia/client-analytics/node_modules/@algolia/client-search": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
- "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "4.24.0",
- "@algolia/requester-common": "4.24.0",
- "@algolia/transporter": "4.24.0"
+ "@algolia/client-common": "5.20.4",
+ "@algolia/requester-browser-xhr": "5.20.4",
+ "@algolia/requester-fetch": "5.20.4",
+ "@algolia/requester-node-http": "5.20.4"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-common": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.12.0.tgz",
- "integrity": "sha512-od3WmO8qxyfNhKc+K3D17tvun3IMs/xMNmxCG9MiElAkYVbPPTRUYMkRneCpmJyQI0hNx2/EA4kZgzVfQjO86Q==",
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz",
+ "integrity": "sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA==",
"license": "MIT",
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-insights": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.12.0.tgz",
- "integrity": "sha512-8alajmsYUd+7vfX5lpRNdxqv3Xx9clIHLUItyQK0Z6gwGMbVEFe6YYhgDtwslMAP0y6b0WeJEIZJMLgT7VYpRw==",
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.20.4.tgz",
+ "integrity": "sha512-MroyJStJFLf/cYeCbguCRdrA2U6miDVqbi3t9ZGovBWWTef7BZwVQG0mLyInzp4MIjBfwqu3xTrhxsiiOavX3A==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.12.0",
- "@algolia/requester-browser-xhr": "5.12.0",
- "@algolia/requester-fetch": "5.12.0",
- "@algolia/requester-node-http": "5.12.0"
+ "@algolia/client-common": "5.20.4",
+ "@algolia/requester-browser-xhr": "5.20.4",
+ "@algolia/requester-fetch": "5.20.4",
+ "@algolia/requester-node-http": "5.20.4"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-personalization": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz",
- "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==",
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "4.24.0",
- "@algolia/requester-common": "4.24.0",
- "@algolia/transporter": "4.24.0"
- }
- },
- "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
- "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.20.4.tgz",
+ "integrity": "sha512-bVR5sxFfgCQ+G0ZegGVhBqtaDd7jCfr33m5mGuT43U+bH//xeqAHQyIS4abcmRulwqeIAHNm5Yl2J7grT3z//A==",
"license": "MIT",
"dependencies": {
- "@algolia/requester-common": "4.24.0",
- "@algolia/transporter": "4.24.0"
+ "@algolia/client-common": "5.20.4",
+ "@algolia/requester-browser-xhr": "5.20.4",
+ "@algolia/requester-fetch": "5.20.4",
+ "@algolia/requester-node-http": "5.20.4"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-query-suggestions": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.12.0.tgz",
- "integrity": "sha512-Q5CszzGWfxbIDs9DJ/QJsL7bP6h+lJMg27KxieEnI9KGCu0Jt5iFA3GkREkgRZxRdzlHbZKkrIzhtHVbSHw/rg==",
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.20.4.tgz",
+ "integrity": "sha512-ZHsV0vceNDR87wIVaz7VjxilwCUCkzbuy4QnqIdnQs3NnC43is7KKbEtKueuNw+YGMdx+wmD5kRI2XKip1R93A==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.12.0",
- "@algolia/requester-browser-xhr": "5.12.0",
- "@algolia/requester-fetch": "5.12.0",
- "@algolia/requester-node-http": "5.12.0"
+ "@algolia/client-common": "5.20.4",
+ "@algolia/requester-browser-xhr": "5.20.4",
+ "@algolia/requester-fetch": "5.20.4",
+ "@algolia/requester-node-http": "5.20.4"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-search": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.12.0.tgz",
- "integrity": "sha512-R3qzEytgVLHOGNri+bpta6NtTt7YtkvUe/QBcAmMDjW4Jk1P0eBYIPfvnzIPbINRsLxIq9fZs9uAYBgsrts4Zg==",
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.4.tgz",
+ "integrity": "sha512-hXM2LpwTzG5kGQSyq3feIijzzl6vkjYPP+LF3ru1relNUIh7fWJ4uYQay2NMNbWX5LWQzF8Vr9qlIA139doQXg==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.12.0",
- "@algolia/requester-browser-xhr": "5.12.0",
- "@algolia/requester-fetch": "5.12.0",
- "@algolia/requester-node-http": "5.12.0"
+ "@algolia/client-common": "5.20.4",
+ "@algolia/requester-browser-xhr": "5.20.4",
+ "@algolia/requester-fetch": "5.20.4",
+ "@algolia/requester-node-http": "5.20.4"
},
"engines": {
"node": ">= 14.0.0"
@@ -268,161 +178,86 @@
"license": "MIT"
},
"node_modules/@algolia/ingestion": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.12.0.tgz",
- "integrity": "sha512-zpHo6qhR22tL8FsdSI4DvEraPDi/019HmMrCFB/TUX98yzh5ooAU7sNW0qPL1I7+S++VbBmNzJOEU9VI8tEC8A==",
+ "version": "1.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.20.4.tgz",
+ "integrity": "sha512-idAe53XsTlLSSQ7pJcjscUEmc67vEM+VohYkr78Ebfb43vtfKH0ik8ux9OGQpLRNGntaHqpe/lfU5PDRi5/92w==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.12.0",
- "@algolia/requester-browser-xhr": "5.12.0",
- "@algolia/requester-fetch": "5.12.0",
- "@algolia/requester-node-http": "5.12.0"
+ "@algolia/client-common": "5.20.4",
+ "@algolia/requester-browser-xhr": "5.20.4",
+ "@algolia/requester-fetch": "5.20.4",
+ "@algolia/requester-node-http": "5.20.4"
},
"engines": {
"node": ">= 14.0.0"
}
},
- "node_modules/@algolia/logger-common": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz",
- "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==",
- "license": "MIT"
- },
- "node_modules/@algolia/logger-console": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz",
- "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==",
- "license": "MIT",
- "dependencies": {
- "@algolia/logger-common": "4.24.0"
- }
- },
"node_modules/@algolia/monitoring": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.12.0.tgz",
- "integrity": "sha512-i2AJZED/zf4uhxezAJUhMKoL5QoepCBp2ynOYol0N76+TSoohaMADdPnWCqOULF4RzOwrG8wWynAwBlXsAI1RQ==",
+ "version": "1.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.20.4.tgz",
+ "integrity": "sha512-O6HjdSWtyu5LhHR7gdU83oWbl1vVVRwoTxkENHF61Ar7l9C1Ok91VtnK7RtXB9pJL1kpIMDExwZOT5sEN2Ppfw==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.12.0",
- "@algolia/requester-browser-xhr": "5.12.0",
- "@algolia/requester-fetch": "5.12.0",
- "@algolia/requester-node-http": "5.12.0"
+ "@algolia/client-common": "5.20.4",
+ "@algolia/requester-browser-xhr": "5.20.4",
+ "@algolia/requester-fetch": "5.20.4",
+ "@algolia/requester-node-http": "5.20.4"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/recommend": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz",
- "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==",
- "license": "MIT",
- "dependencies": {
- "@algolia/cache-browser-local-storage": "4.24.0",
- "@algolia/cache-common": "4.24.0",
- "@algolia/cache-in-memory": "4.24.0",
- "@algolia/client-common": "4.24.0",
- "@algolia/client-search": "4.24.0",
- "@algolia/logger-common": "4.24.0",
- "@algolia/logger-console": "4.24.0",
- "@algolia/requester-browser-xhr": "4.24.0",
- "@algolia/requester-common": "4.24.0",
- "@algolia/requester-node-http": "4.24.0",
- "@algolia/transporter": "4.24.0"
- }
- },
- "node_modules/@algolia/recommend/node_modules/@algolia/client-common": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
- "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
- "license": "MIT",
- "dependencies": {
- "@algolia/requester-common": "4.24.0",
- "@algolia/transporter": "4.24.0"
- }
- },
- "node_modules/@algolia/recommend/node_modules/@algolia/client-search": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
- "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "4.24.0",
- "@algolia/requester-common": "4.24.0",
- "@algolia/transporter": "4.24.0"
- }
- },
- "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz",
- "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==",
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.20.4.tgz",
+ "integrity": "sha512-p8M78pQjPrN6PudO2TnkWiOJbyp/IPhgCFBW8aZrLshhZpPkV9N4u0YsU/w6OoeYDKSxmXntWQrKYiU1dVRWfg==",
"license": "MIT",
"dependencies": {
- "@algolia/requester-common": "4.24.0"
- }
- },
- "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz",
- "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==",
- "license": "MIT",
- "dependencies": {
- "@algolia/requester-common": "4.24.0"
+ "@algolia/client-common": "5.20.4",
+ "@algolia/requester-browser-xhr": "5.20.4",
+ "@algolia/requester-fetch": "5.20.4",
+ "@algolia/requester-node-http": "5.20.4"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
"node_modules/@algolia/requester-browser-xhr": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.12.0.tgz",
- "integrity": "sha512-KxwleraFuVoEGCoeW6Y1RAEbgBMS7SavqeyzWdtkJc6mXeCOJXn1iZitb8Tyn2FcpMNUKlSm0adrUTt7G47+Ow==",
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz",
+ "integrity": "sha512-Y8GThjDVdhFUurZKKDdzAML/LNKOA/BOydEcaFeb/g4Iv4Iq0qQJs6aIbtdsngUU6cu74qH/2P84kr2h16uVvQ==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.12.0"
+ "@algolia/client-common": "5.20.4"
},
"engines": {
"node": ">= 14.0.0"
}
},
- "node_modules/@algolia/requester-common": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz",
- "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==",
- "license": "MIT"
- },
"node_modules/@algolia/requester-fetch": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.12.0.tgz",
- "integrity": "sha512-FuDZXUGU1pAg2HCnrt8+q1VGHKChV/LhvjvZlLOT7e56GJie6p+EuLu4/hMKPOVuQQ8XXtrTHKIU3Lw+7O5/bQ==",
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz",
+ "integrity": "sha512-OrAUSrvbFi46U7AxOXkyl9QQiaW21XWpixWmcx3D2S65P/DCIGOVE6K2741ZE+WiKIqp+RSYkyDFj3BiFHzLTg==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.12.0"
+ "@algolia/client-common": "5.20.4"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/requester-node-http": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.12.0.tgz",
- "integrity": "sha512-ncDDY7CxZhMs6LIoPl+vHFQceIBhYPY5EfuGF1V7beO0U38xfsCYEyutEFB2kRzf4D9Gqppn3iWX71sNtrKcuw==",
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz",
+ "integrity": "sha512-Jc/bofGBw4P9nBii4oCzCqqusv8DAFFORfUD2Ce1cZk3fvUPk+q/Qnu7i9JpTSHjMc0MWzqApLdq7Nwh1gelLg==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.12.0"
+ "@algolia/client-common": "5.20.4"
},
"engines": {
"node": ">= 14.0.0"
}
},
- "node_modules/@algolia/transporter": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz",
- "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==",
- "license": "MIT",
- "dependencies": {
- "@algolia/cache-common": "4.24.0",
- "@algolia/logger-common": "4.24.0",
- "@algolia/requester-common": "4.24.0"
- }
- },
"node_modules/@ampproject/remapping": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
@@ -451,30 +286,30 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz",
- "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
+ "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
- "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz",
+ "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==",
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.26.0",
- "@babel/generator": "^7.26.0",
- "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.9",
+ "@babel/helper-compilation-targets": "^7.26.5",
"@babel/helper-module-transforms": "^7.26.0",
- "@babel/helpers": "^7.26.0",
- "@babel/parser": "^7.26.0",
- "@babel/template": "^7.25.9",
- "@babel/traverse": "^7.25.9",
- "@babel/types": "^7.26.0",
+ "@babel/helpers": "^7.26.9",
+ "@babel/parser": "^7.26.9",
+ "@babel/template": "^7.26.9",
+ "@babel/traverse": "^7.26.9",
+ "@babel/types": "^7.26.9",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -499,13 +334,13 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz",
- "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz",
+ "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.26.2",
- "@babel/types": "^7.26.0",
+ "@babel/parser": "^7.26.9",
+ "@babel/types": "^7.26.9",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^3.0.2"
@@ -526,26 +361,13 @@
"node": ">=6.9.0"
}
},
- "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz",
- "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==",
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.25.9",
- "@babel/types": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
- "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz",
+ "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==",
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.25.9",
+ "@babel/compat-data": "^7.26.5",
"@babel/helper-validator-option": "^7.25.9",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
@@ -565,17 +387,17 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
- "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz",
+ "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==",
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.25.9",
"@babel/helper-member-expression-to-functions": "^7.25.9",
"@babel/helper-optimise-call-expression": "^7.25.9",
- "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.26.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
- "@babel/traverse": "^7.25.9",
+ "@babel/traverse": "^7.26.9",
"semver": "^6.3.1"
},
"engines": {
@@ -595,13 +417,13 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz",
- "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz",
+ "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==",
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.25.9",
- "regexpu-core": "^6.1.1",
+ "regexpu-core": "^6.2.0",
"semver": "^6.3.1"
},
"engines": {
@@ -621,9 +443,9 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
- "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz",
+ "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==",
"license": "MIT",
"dependencies": {
"@babel/helper-compilation-targets": "^7.22.6",
@@ -692,9 +514,9 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
- "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
+ "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -718,14 +540,14 @@
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz",
- "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz",
+ "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==",
"license": "MIT",
"dependencies": {
"@babel/helper-member-expression-to-functions": "^7.25.9",
"@babel/helper-optimise-call-expression": "^7.25.9",
- "@babel/traverse": "^7.25.9"
+ "@babel/traverse": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -734,19 +556,6 @@
"@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-simple-access": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz",
- "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==",
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.25.9",
- "@babel/types": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
@@ -802,25 +611,25 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
- "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz",
+ "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==",
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.25.9",
- "@babel/types": "^7.26.0"
+ "@babel/template": "^7.26.9",
+ "@babel/types": "^7.26.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
- "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz",
+ "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.26.0"
+ "@babel/types": "^7.26.9"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -1024,14 +833,14 @@
}
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz",
- "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz",
+ "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.26.5",
"@babel/helper-remap-async-to-generator": "^7.25.9",
- "@babel/traverse": "^7.25.9"
+ "@babel/traverse": "^7.26.8"
},
"engines": {
"node": ">=6.9.0"
@@ -1058,12 +867,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz",
- "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz",
+ "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1233,12 +1042,11 @@
}
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz",
- "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz",
+ "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9",
"@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
@@ -1264,12 +1072,12 @@
}
},
"node_modules/@babel/plugin-transform-for-of": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz",
- "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz",
+ "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.26.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
},
"engines": {
@@ -1373,14 +1181,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz",
- "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
+ "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-simple-access": "^7.25.9"
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1455,12 +1262,12 @@
}
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz",
- "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==",
+ "version": "7.26.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz",
+ "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1739,13 +1546,13 @@
}
},
"node_modules/@babel/plugin-transform-runtime": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz",
- "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.9.tgz",
+ "integrity": "sha512-Jf+8y9wXQbbxvVYTM8gO5oEF2POdNji0NMltEkG7FtmzD9PVz7/lxpqSdTvwsjTMU5HIHuDVNf2SOxLkWi+wPQ==",
"license": "MIT",
"dependencies": {
"@babel/helper-module-imports": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.26.5",
"babel-plugin-polyfill-corejs2": "^0.4.10",
"babel-plugin-polyfill-corejs3": "^0.10.6",
"babel-plugin-polyfill-regenerator": "^0.6.1",
@@ -1814,12 +1621,12 @@
}
},
"node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz",
- "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz",
+ "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1829,12 +1636,12 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz",
- "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==",
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz",
+ "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1844,14 +1651,14 @@
}
},
"node_modules/@babel/plugin-transform-typescript": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz",
- "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz",
+ "integrity": "sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==",
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.25.9",
"@babel/helper-create-class-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.26.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
"@babel/plugin-syntax-typescript": "^7.25.9"
},
@@ -1926,14 +1733,14 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz",
- "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz",
+ "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==",
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.26.0",
- "@babel/helper-compilation-targets": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/compat-data": "^7.26.8",
+ "@babel/helper-compilation-targets": "^7.26.5",
+ "@babel/helper-plugin-utils": "^7.26.5",
"@babel/helper-validator-option": "^7.25.9",
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
"@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
@@ -1945,9 +1752,9 @@
"@babel/plugin-syntax-import-attributes": "^7.26.0",
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
"@babel/plugin-transform-arrow-functions": "^7.25.9",
- "@babel/plugin-transform-async-generator-functions": "^7.25.9",
+ "@babel/plugin-transform-async-generator-functions": "^7.26.8",
"@babel/plugin-transform-async-to-generator": "^7.25.9",
- "@babel/plugin-transform-block-scoped-functions": "^7.25.9",
+ "@babel/plugin-transform-block-scoped-functions": "^7.26.5",
"@babel/plugin-transform-block-scoping": "^7.25.9",
"@babel/plugin-transform-class-properties": "^7.25.9",
"@babel/plugin-transform-class-static-block": "^7.26.0",
@@ -1958,21 +1765,21 @@
"@babel/plugin-transform-duplicate-keys": "^7.25.9",
"@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9",
"@babel/plugin-transform-dynamic-import": "^7.25.9",
- "@babel/plugin-transform-exponentiation-operator": "^7.25.9",
+ "@babel/plugin-transform-exponentiation-operator": "^7.26.3",
"@babel/plugin-transform-export-namespace-from": "^7.25.9",
- "@babel/plugin-transform-for-of": "^7.25.9",
+ "@babel/plugin-transform-for-of": "^7.26.9",
"@babel/plugin-transform-function-name": "^7.25.9",
"@babel/plugin-transform-json-strings": "^7.25.9",
"@babel/plugin-transform-literals": "^7.25.9",
"@babel/plugin-transform-logical-assignment-operators": "^7.25.9",
"@babel/plugin-transform-member-expression-literals": "^7.25.9",
"@babel/plugin-transform-modules-amd": "^7.25.9",
- "@babel/plugin-transform-modules-commonjs": "^7.25.9",
+ "@babel/plugin-transform-modules-commonjs": "^7.26.3",
"@babel/plugin-transform-modules-systemjs": "^7.25.9",
"@babel/plugin-transform-modules-umd": "^7.25.9",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9",
"@babel/plugin-transform-new-target": "^7.25.9",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6",
"@babel/plugin-transform-numeric-separator": "^7.25.9",
"@babel/plugin-transform-object-rest-spread": "^7.25.9",
"@babel/plugin-transform-object-super": "^7.25.9",
@@ -1988,17 +1795,17 @@
"@babel/plugin-transform-shorthand-properties": "^7.25.9",
"@babel/plugin-transform-spread": "^7.25.9",
"@babel/plugin-transform-sticky-regex": "^7.25.9",
- "@babel/plugin-transform-template-literals": "^7.25.9",
- "@babel/plugin-transform-typeof-symbol": "^7.25.9",
+ "@babel/plugin-transform-template-literals": "^7.26.8",
+ "@babel/plugin-transform-typeof-symbol": "^7.26.7",
"@babel/plugin-transform-unicode-escapes": "^7.25.9",
"@babel/plugin-transform-unicode-property-regex": "^7.25.9",
"@babel/plugin-transform-unicode-regex": "^7.25.9",
"@babel/plugin-transform-unicode-sets-regex": "^7.25.9",
"@babel/preset-modules": "0.1.6-no-external-plugins",
"babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-corejs3": "^0.10.6",
+ "babel-plugin-polyfill-corejs3": "^0.11.0",
"babel-plugin-polyfill-regenerator": "^0.6.1",
- "core-js-compat": "^3.38.1",
+ "core-js-compat": "^3.40.0",
"semver": "^6.3.1"
},
"engines": {
@@ -2008,6 +1815,19 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz",
+ "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.3",
+ "core-js-compat": "^3.40.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
"node_modules/@babel/preset-env/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
@@ -2032,9 +1852,9 @@
}
},
"node_modules/@babel/preset-react": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.9.tgz",
- "integrity": "sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz",
+ "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==",
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.9",
@@ -2083,9 +1903,9 @@
}
},
"node_modules/@babel/runtime-corejs3": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz",
- "integrity": "sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.9.tgz",
+ "integrity": "sha512-5EVjbTegqN7RSJle6hMWYxO4voo4rI+9krITk+DWR+diJgGrjZjrIBnJhjrHYYQsFgI7j1w1QnrvV7YSKBfYGg==",
"license": "MIT",
"dependencies": {
"core-js-pure": "^3.30.2",
@@ -2096,30 +1916,30 @@
}
},
"node_modules/@babel/template": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
- "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
+ "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.25.9",
- "@babel/parser": "^7.25.9",
- "@babel/types": "^7.25.9"
+ "@babel/code-frame": "^7.26.2",
+ "@babel/parser": "^7.26.9",
+ "@babel/types": "^7.26.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
- "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz",
+ "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.25.9",
- "@babel/generator": "^7.25.9",
- "@babel/parser": "^7.25.9",
- "@babel/template": "^7.25.9",
- "@babel/types": "^7.25.9",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.9",
+ "@babel/parser": "^7.26.9",
+ "@babel/template": "^7.26.9",
+ "@babel/types": "^7.26.9",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -2128,9 +1948,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
- "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz",
+ "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.25.9",
@@ -2150,196 +1970,1293 @@
"node": ">=0.1.90"
}
},
- "node_modules/@discoveryjs/json-ext": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
- "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+ "node_modules/@csstools/cascade-layer-name-parser": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.4.tgz",
+ "integrity": "sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
"engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/@docsearch/css": {
- "version": "3.6.3",
- "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.3.tgz",
- "integrity": "sha512-3uvbg8E7rhqE1C4oBAK3tGlS2qfhi9zpfZgH/yjDPF73vd9B41urVIKujF4rczcF4E3qs34SedhehiDJ4UdNBA==",
- "license": "MIT"
- },
- "node_modules/@docsearch/react": {
- "version": "3.6.3",
- "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.3.tgz",
- "integrity": "sha512-2munr4uBuZq1PG+Ge+F+ldIdxb3Wi8OmEIv2tQQb4RvEvvph+xtQkxwHzVIEnt5s+HecwucuXwB+3JhcZboFLg==",
- "license": "MIT",
- "dependencies": {
- "@algolia/autocomplete-core": "1.9.3",
- "@algolia/autocomplete-preset-algolia": "1.17.6",
- "@docsearch/css": "3.6.3",
- "algoliasearch": "^5.11.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@types/react": ">= 16.8.0 < 19.0.0",
- "react": ">= 16.8.0 < 19.0.0",
- "react-dom": ">= 16.8.0 < 19.0.0",
- "search-insights": ">= 1 < 3"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "react": {
- "optional": true
- },
- "react-dom": {
- "optional": true
- },
- "search-insights": {
- "optional": true
- }
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
}
},
- "node_modules/@docsearch/react/node_modules/@algolia/client-analytics": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.12.0.tgz",
- "integrity": "sha512-EpTsSv6IW8maCfXCDIptgT7+mQJj7pImEkcNUnxR8yUKAHzTogTXv9yGm2WXOZFVuwstd2i0sImhQ1Vz8RH/hA==",
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.12.0",
- "@algolia/requester-browser-xhr": "5.12.0",
- "@algolia/requester-fetch": "5.12.0",
- "@algolia/requester-node-http": "5.12.0"
- },
+ "node_modules/@csstools/color-helpers": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz",
+ "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"engines": {
- "node": ">= 14.0.0"
+ "node": ">=18"
}
},
- "node_modules/@docsearch/react/node_modules/@algolia/client-personalization": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.12.0.tgz",
- "integrity": "sha512-bUV9HtfkTBgpoVhxFrMkmVPG03ZN1Rtn51kiaEtukucdk3ggjR9Qu1YUfRSU2lFgxr9qJc8lTxwfvhjCeJRcqw==",
+ "node_modules/@csstools/css-calc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz",
+ "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.12.0",
- "@algolia/requester-browser-xhr": "5.12.0",
- "@algolia/requester-fetch": "5.12.0",
- "@algolia/requester-node-http": "5.12.0"
- },
"engines": {
- "node": ">= 14.0.0"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
}
},
- "node_modules/@docsearch/react/node_modules/@algolia/recommend": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.12.0.tgz",
- "integrity": "sha512-0jmZyKvYnB/Bj5c7WKsKedOUjnr0UtXm0LVFUdQrxXfqOqvWv9n6Vpr65UjdYG4Q49kRQxhlwtal9WJYrYymXg==",
+ "node_modules/@csstools/css-color-parser": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz",
+ "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.12.0",
- "@algolia/requester-browser-xhr": "5.12.0",
- "@algolia/requester-fetch": "5.12.0",
- "@algolia/requester-node-http": "5.12.0"
+ "@csstools/color-helpers": "^5.0.2",
+ "@csstools/css-calc": "^2.1.2"
},
"engines": {
- "node": ">= 14.0.0"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
}
},
- "node_modules/@docsearch/react/node_modules/algoliasearch": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.12.0.tgz",
- "integrity": "sha512-psGBRYdGgik8I6m28iAB8xpubvjEt7UQU+w5MAJUA2324WHiGoHap5BPkkjB14rMaXeRts6pmOsrVIglGyOVwg==",
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz",
+ "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
- "dependencies": {
- "@algolia/client-abtesting": "5.12.0",
- "@algolia/client-analytics": "5.12.0",
- "@algolia/client-common": "5.12.0",
- "@algolia/client-insights": "5.12.0",
- "@algolia/client-personalization": "5.12.0",
- "@algolia/client-query-suggestions": "5.12.0",
- "@algolia/client-search": "5.12.0",
- "@algolia/ingestion": "1.12.0",
- "@algolia/monitoring": "1.12.0",
- "@algolia/recommend": "5.12.0",
- "@algolia/requester-browser-xhr": "5.12.0",
- "@algolia/requester-fetch": "5.12.0",
- "@algolia/requester-node-http": "5.12.0"
- },
"engines": {
- "node": ">= 14.0.0"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^3.0.3"
}
},
- "node_modules/@docusaurus/core": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.5.2.tgz",
- "integrity": "sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w==",
- "license": "MIT",
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz",
+ "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@csstools/media-query-list-parser": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz",
+ "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ }
+ },
+ "node_modules/@csstools/postcss-cascade-layers": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.1.tgz",
+ "integrity": "sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+ "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ }
+ },
+ "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@csstools/postcss-color-function": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.8.tgz",
+ "integrity": "sha512-9dUvP2qpZI6PlGQ/sob+95B3u5u7nkYt9yhZFCC7G9HBRHBxj+QxS/wUlwaMGYW0waf+NIierI8aoDTssEdRYw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.8",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-color-mix-function": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.8.tgz",
+ "integrity": "sha512-yuZpgWUzqZWQhEqfvtJufhl28DgO9sBwSbXbf/59gejNuvZcoUTRGQZhzhwF4ccqb53YAGB+u92z9+eSKoB4YA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.8",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-content-alt-text": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.4.tgz",
+ "integrity": "sha512-YItlZUOuZJCBlRaCf8Aucc1lgN41qYGALMly0qQllrxYJhiyzlI6RxOTMUvtWk+KhS8GphMDsDhKQ7KTPfEMSw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-exponential-functions": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.7.tgz",
+ "integrity": "sha512-XTb6Mw0v2qXtQYRW9d9duAjDnoTbBpsngD7sRNLmYDjvwU2ebpIHplyxgOeo6jp/Kr52gkLi5VaK5RDCqzMzZQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.2",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-font-format-keywords": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz",
+ "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-gamut-mapping": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.8.tgz",
+ "integrity": "sha512-/K8u9ZyGMGPjmwCSIjgaOLKfic2RIGdFHHes84XW5LnmrvdhOTVxo255NppHi3ROEvoHPW7MplMJgjZK5Q+TxA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.8",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-gradients-interpolation-method": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.8.tgz",
+ "integrity": "sha512-CoHQ/0UXrvxLovu0ZeW6c3/20hjJ/QRg6lyXm3dZLY/JgvRU6bdbQZF/Du30A4TvowfcgvIHQmP1bNXUxgDrAw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.8",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-hwb-function": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.8.tgz",
+ "integrity": "sha512-LpFKjX6hblpeqyych1cKmk+3FJZ19QmaJtqincySoMkbkG/w2tfbnO5oE6mlnCTXcGUJ0rCEuRHvTqKK0nHYUQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.8",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-ic-unit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.0.tgz",
+ "integrity": "sha512-9QT5TDGgx7wD3EEMN3BSUG6ckb6Eh5gSPT5kZoVtUuAonfPmLDJyPhqR4ntPpMYhUKAMVKAg3I/AgzqHMSeLhA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-initial": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz",
+ "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-is-pseudo-class": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.1.tgz",
+ "integrity": "sha512-JLp3POui4S1auhDR0n8wHd/zTOWmMsmK3nQd3hhL6FhWPaox5W7j1se6zXOG/aP07wV2ww0lxbKYGwbBszOtfQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+ "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ }
+ },
+ "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@csstools/postcss-light-dark-function": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.7.tgz",
+ "integrity": "sha512-ZZ0rwlanYKOHekyIPaU+sVm3BEHCe+Ha0/px+bmHe62n0Uc1lL34vbwrLYn6ote8PHlsqzKeTQdIejQCJ05tfw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-logical-float-and-clear": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz",
+ "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-logical-overflow": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz",
+ "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-logical-overscroll-behavior": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz",
+ "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-logical-resize": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz",
+ "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-logical-viewport-units": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.3.tgz",
+ "integrity": "sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-media-minmax": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.7.tgz",
+ "integrity": "sha512-LB6tIP7iBZb5CYv8iRenfBZmbaG3DWNEziOnPjGoQX5P94FBPvvTBy68b/d9NnS5PELKwFmmOYsAEIgEhDPCHA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.2",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/media-query-list-parser": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.4.tgz",
+ "integrity": "sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/media-query-list-parser": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-nested-calc": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz",
+ "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-normalize-display-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz",
+ "integrity": "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-oklab-function": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.8.tgz",
+ "integrity": "sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.8",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-progressive-custom-properties": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.0.0.tgz",
+ "integrity": "sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-random-function": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-1.0.3.tgz",
+ "integrity": "sha512-dbNeEEPHxAwfQJ3duRL5IPpuD77QAHtRl4bAHRs0vOVhVbHrsL7mHnwe0irYjbs9kYwhAHZBQTLBgmvufPuRkA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.2",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-relative-color-syntax": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.8.tgz",
+ "integrity": "sha512-eGE31oLnJDoUysDdjS9MLxNZdtqqSxjDXMdISpLh80QMaYrKs7VINpid34tWQ+iU23Wg5x76qAzf1Q/SLLbZVg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.8",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-scope-pseudo-class": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz",
+ "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@csstools/postcss-sign-functions": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.2.tgz",
+ "integrity": "sha512-4EcAvXTUPh7n6UoZZkCzgtCf/wPzMlTNuddcKg7HG8ozfQkUcHsJ2faQKeLmjyKdYPyOUn4YA7yDPf8K/jfIxw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.2",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-stepped-value-functions": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.7.tgz",
+ "integrity": "sha512-rdrRCKRnWtj5FyRin0u/gLla7CIvZRw/zMGI1fVJP0Sg/m1WGicjPVHRANL++3HQtsiXKAbPrcPr+VkyGck0IA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.2",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-text-decoration-shorthand": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.2.tgz",
+ "integrity": "sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/color-helpers": "^5.0.2",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-trigonometric-functions": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.7.tgz",
+ "integrity": "sha512-qTrZgLju3AV7Djhzuh2Bq/wjFqbcypnk0FhHjxW8DWJQcZLS1HecIus4X2/RLch1ukX7b+YYCdqbEnpIQO5ccg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.2",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-unset-value": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz",
+ "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/utilities": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz",
+ "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/@docsearch/css": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.9.0.tgz",
+ "integrity": "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==",
+ "license": "MIT"
+ },
+ "node_modules/@docsearch/react": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.9.0.tgz",
+ "integrity": "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/autocomplete-core": "1.17.9",
+ "@algolia/autocomplete-preset-algolia": "1.17.9",
+ "@docsearch/css": "3.9.0",
+ "algoliasearch": "^5.14.2"
+ },
+ "peerDependencies": {
+ "@types/react": ">= 16.8.0 < 20.0.0",
+ "react": ">= 16.8.0 < 20.0.0",
+ "react-dom": ">= 16.8.0 < 20.0.0",
+ "search-insights": ">= 1 < 3"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "search-insights": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@docusaurus/babel": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.7.0.tgz",
+ "integrity": "sha512-0H5uoJLm14S/oKV3Keihxvh8RV+vrid+6Gv+2qhuzbqHanawga8tYnsdpjEyt36ucJjqlby2/Md2ObWjA02UXQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/core": "^7.23.3",
- "@babel/generator": "^7.23.3",
+ "@babel/core": "^7.25.9",
+ "@babel/generator": "^7.25.9",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-transform-runtime": "^7.22.9",
- "@babel/preset-env": "^7.22.9",
- "@babel/preset-react": "^7.22.5",
- "@babel/preset-typescript": "^7.22.5",
- "@babel/runtime": "^7.22.6",
- "@babel/runtime-corejs3": "^7.22.6",
- "@babel/traverse": "^7.22.8",
- "@docusaurus/cssnano-preset": "3.5.2",
- "@docusaurus/logger": "3.5.2",
- "@docusaurus/mdx-loader": "3.5.2",
- "@docusaurus/utils": "3.5.2",
- "@docusaurus/utils-common": "3.5.2",
- "@docusaurus/utils-validation": "3.5.2",
- "autoprefixer": "^10.4.14",
- "babel-loader": "^9.1.3",
+ "@babel/plugin-transform-runtime": "^7.25.9",
+ "@babel/preset-env": "^7.25.9",
+ "@babel/preset-react": "^7.25.9",
+ "@babel/preset-typescript": "^7.25.9",
+ "@babel/runtime": "^7.25.9",
+ "@babel/runtime-corejs3": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@docusaurus/logger": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
"babel-plugin-dynamic-import-node": "^2.3.3",
+ "fs-extra": "^11.1.1",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ }
+ },
+ "node_modules/@docusaurus/bundler": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.7.0.tgz",
+ "integrity": "sha512-CUUT9VlSGukrCU5ctZucykvgCISivct+cby28wJwCC/fkQFgAHRp/GKv2tx38ZmXb7nacrKzFTcp++f9txUYGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.25.9",
+ "@docusaurus/babel": "3.7.0",
+ "@docusaurus/cssnano-preset": "3.7.0",
+ "@docusaurus/logger": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "babel-loader": "^9.2.1",
+ "clean-css": "^5.3.2",
+ "copy-webpack-plugin": "^11.0.0",
+ "css-loader": "^6.8.1",
+ "css-minimizer-webpack-plugin": "^5.0.1",
+ "cssnano": "^6.1.2",
+ "file-loader": "^6.2.0",
+ "html-minifier-terser": "^7.2.0",
+ "mini-css-extract-plugin": "^2.9.1",
+ "null-loader": "^4.0.1",
+ "postcss": "^8.4.26",
+ "postcss-loader": "^7.3.3",
+ "postcss-preset-env": "^10.1.0",
+ "react-dev-utils": "^12.0.1",
+ "terser-webpack-plugin": "^5.3.9",
+ "tslib": "^2.6.0",
+ "url-loader": "^4.1.1",
+ "webpack": "^5.95.0",
+ "webpackbar": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "@docusaurus/faster": "*"
+ },
+ "peerDependenciesMeta": {
+ "@docusaurus/faster": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@docusaurus/bundler/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/core": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.7.0.tgz",
+ "integrity": "sha512-b0fUmaL+JbzDIQaamzpAFpTviiaU4cX3Qz8cuo14+HGBCwa0evEK0UYCBFY3n4cLzL8Op1BueeroUD2LYAIHbQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/babel": "3.7.0",
+ "@docusaurus/bundler": "3.7.0",
+ "@docusaurus/logger": "3.7.0",
+ "@docusaurus/mdx-loader": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "@docusaurus/utils-common": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
"boxen": "^6.2.1",
"chalk": "^4.1.2",
"chokidar": "^3.5.3",
- "clean-css": "^5.3.2",
"cli-table3": "^0.6.3",
"combine-promises": "^1.1.0",
"commander": "^5.1.0",
- "copy-webpack-plugin": "^11.0.0",
"core-js": "^3.31.1",
- "css-loader": "^6.8.1",
- "css-minimizer-webpack-plugin": "^5.0.1",
- "cssnano": "^6.1.2",
"del": "^6.1.1",
"detect-port": "^1.5.1",
"escape-html": "^1.0.3",
"eta": "^2.2.0",
"eval": "^0.1.8",
- "file-loader": "^6.2.0",
"fs-extra": "^11.1.1",
- "html-minifier-terser": "^7.2.0",
"html-tags": "^3.3.1",
- "html-webpack-plugin": "^5.5.3",
+ "html-webpack-plugin": "^5.6.0",
"leven": "^3.1.0",
"lodash": "^4.17.21",
- "mini-css-extract-plugin": "^2.7.6",
"p-map": "^4.0.0",
- "postcss": "^8.4.26",
- "postcss-loader": "^7.3.3",
"prompts": "^2.4.2",
"react-dev-utils": "^12.0.1",
- "react-helmet-async": "^1.3.0",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
"react-loadable": "npm:@docusaurus/react-loadable@6.0.0",
"react-loadable-ssr-addon-v5-slorber": "^1.0.1",
"react-router": "^5.3.4",
"react-router-config": "^5.1.1",
"react-router-dom": "^5.3.4",
- "rtl-detect": "^1.0.4",
"semver": "^7.5.4",
- "serve-handler": "^6.1.5",
+ "serve-handler": "^6.1.6",
"shelljs": "^0.8.5",
- "terser-webpack-plugin": "^5.3.9",
"tslib": "^2.6.0",
"update-notifier": "^6.0.2",
- "url-loader": "^4.1.1",
- "webpack": "^5.88.1",
- "webpack-bundle-analyzer": "^4.9.0",
- "webpack-dev-server": "^4.15.1",
- "webpack-merge": "^5.9.0",
- "webpackbar": "^5.0.2"
+ "webpack": "^5.95.0",
+ "webpack-bundle-analyzer": "^4.10.2",
+ "webpack-dev-server": "^4.15.2",
+ "webpack-merge": "^6.0.1"
},
"bin": {
"docusaurus": "bin/docusaurus.mjs"
@@ -2349,14 +3266,28 @@
},
"peerDependencies": {
"@mdx-js/react": "^3.0.0",
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/core/node_modules/webpack-merge": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz",
+ "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==",
+ "license": "MIT",
+ "dependencies": {
+ "clone-deep": "^4.0.1",
+ "flat": "^5.0.2",
+ "wildcard": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@docusaurus/cssnano-preset": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.5.2.tgz",
- "integrity": "sha512-D3KiQXOMA8+O0tqORBrTOEQyQxNIfPm9jEaJoALjjSjc2M/ZAWcUfPQEnwr2JB2TadHw2gqWgpZckQmrVWkytA==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.7.0.tgz",
+ "integrity": "sha512-X9GYgruZBSOozg4w4dzv9uOz8oK/EpPVQXkp0MM6Tsgp/nRIU9hJzJ0Pxg1aRa3xCeEQTOimZHcocQFlLwYajQ==",
"license": "MIT",
"dependencies": {
"cssnano-preset-advanced": "^6.1.2",
@@ -2369,9 +3300,9 @@
}
},
"node_modules/@docusaurus/logger": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.5.2.tgz",
- "integrity": "sha512-LHC540SGkeLfyT3RHK3gAMK6aS5TRqOD4R72BEU/DE2M/TY8WwEUAMY576UUc/oNJXv8pGhBmQB6N9p3pt8LQw==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.7.0.tgz",
+ "integrity": "sha512-z7g62X7bYxCYmeNNuO9jmzxLQG95q9QxINCwpboVcNff3SJiHJbGrarxxOVMVmAh1MsrSfxWkVGv4P41ktnFsA==",
"license": "MIT",
"dependencies": {
"chalk": "^4.1.2",
@@ -2382,14 +3313,14 @@
}
},
"node_modules/@docusaurus/mdx-loader": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.5.2.tgz",
- "integrity": "sha512-ku3xO9vZdwpiMIVd8BzWV0DCqGEbCP5zs1iHfKX50vw6jX8vQo0ylYo1YJMZyz6e+JFJ17HYHT5FzVidz2IflA==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.7.0.tgz",
+ "integrity": "sha512-OFBG6oMjZzc78/U3WNPSHs2W9ZJ723ewAcvVJaqS0VgyeUfmzUV8f1sv+iUHA0DtwiR5T5FjOxj6nzEE8LY6VA==",
"license": "MIT",
"dependencies": {
- "@docusaurus/logger": "3.5.2",
- "@docusaurus/utils": "3.5.2",
- "@docusaurus/utils-validation": "3.5.2",
+ "@docusaurus/logger": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
"@mdx-js/mdx": "^3.0.0",
"@slorber/remark-comment": "^1.0.0",
"escape-html": "^1.0.3",
@@ -2416,22 +3347,22 @@
"node": ">=18.0"
},
"peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
"node_modules/@docusaurus/module-type-aliases": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.5.2.tgz",
- "integrity": "sha512-Z+Xu3+2rvKef/YKTMxZHsEXp1y92ac0ngjDiExRdqGTmEKtCUpkbNYH8v5eXo5Ls+dnW88n6WTa+Q54kLOkwPg==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.7.0.tgz",
+ "integrity": "sha512-g7WdPqDNaqA60CmBrr0cORTrsOit77hbsTj7xE2l71YhBn79sxdm7WMK7wfhcaafkbpIh7jv5ef5TOpf1Xv9Lg==",
"license": "MIT",
"dependencies": {
- "@docusaurus/types": "3.5.2",
+ "@docusaurus/types": "3.7.0",
"@types/history": "^4.7.11",
"@types/react": "*",
"@types/react-router-config": "*",
"@types/react-router-dom": "*",
- "react-helmet-async": "*",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@*",
"react-loadable": "npm:@docusaurus/react-loadable@6.0.0"
},
"peerDependencies": {
@@ -2439,20 +3370,41 @@
"react-dom": "*"
}
},
- "node_modules/@docusaurus/plugin-content-blog": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.5.2.tgz",
- "integrity": "sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg==",
+ "node_modules/@docusaurus/module-type-aliases/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/logger": "3.5.2",
- "@docusaurus/mdx-loader": "3.5.2",
- "@docusaurus/theme-common": "3.5.2",
- "@docusaurus/types": "3.5.2",
- "@docusaurus/utils": "3.5.2",
- "@docusaurus/utils-common": "3.5.2",
- "@docusaurus/utils-validation": "3.5.2",
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-content-blog": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.7.0.tgz",
+ "integrity": "sha512-EFLgEz6tGHYWdPU0rK8tSscZwx+AsyuBW/r+tNig2kbccHYGUJmZtYN38GjAa3Fda4NU+6wqUO5kTXQSRBQD3g==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/logger": "3.7.0",
+ "@docusaurus/mdx-loader": "3.7.0",
+ "@docusaurus/theme-common": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "@docusaurus/utils-common": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
"cheerio": "1.0.0-rc.12",
"feed": "^4.2.2",
"fs-extra": "^11.1.1",
@@ -2469,25 +3421,46 @@
},
"peerDependencies": {
"@docusaurus/plugin-content-docs": "*",
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
- "node_modules/@docusaurus/plugin-content-docs": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.5.2.tgz",
- "integrity": "sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ==",
+ "node_modules/@docusaurus/plugin-content-blog/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/logger": "3.5.2",
- "@docusaurus/mdx-loader": "3.5.2",
- "@docusaurus/module-type-aliases": "3.5.2",
- "@docusaurus/theme-common": "3.5.2",
- "@docusaurus/types": "3.5.2",
- "@docusaurus/utils": "3.5.2",
- "@docusaurus/utils-common": "3.5.2",
- "@docusaurus/utils-validation": "3.5.2",
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-content-docs": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.7.0.tgz",
+ "integrity": "sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/logger": "3.7.0",
+ "@docusaurus/mdx-loader": "3.7.0",
+ "@docusaurus/module-type-aliases": "3.7.0",
+ "@docusaurus/theme-common": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "@docusaurus/utils-common": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
"@types/react-router-config": "^5.0.7",
"combine-promises": "^1.1.0",
"fs-extra": "^11.1.1",
@@ -2501,21 +3474,42 @@
"node": ">=18.0"
},
"peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-content-docs/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
"node_modules/@docusaurus/plugin-content-pages": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.5.2.tgz",
- "integrity": "sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.7.0.tgz",
+ "integrity": "sha512-YJSU3tjIJf032/Aeao8SZjFOrXJbz/FACMveSMjLyMH4itQyZ2XgUIzt4y+1ISvvk5zrW4DABVT2awTCqBkx0Q==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/mdx-loader": "3.5.2",
- "@docusaurus/types": "3.5.2",
- "@docusaurus/utils": "3.5.2",
- "@docusaurus/utils-validation": "3.5.2",
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/mdx-loader": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
"fs-extra": "^11.1.1",
"tslib": "^2.6.0",
"webpack": "^5.88.1"
@@ -2524,163 +3518,356 @@
"node": ">=18.0"
},
"peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-content-pages/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
"node_modules/@docusaurus/plugin-debug": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.5.2.tgz",
- "integrity": "sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.7.0.tgz",
+ "integrity": "sha512-Qgg+IjG/z4svtbCNyTocjIwvNTNEwgRjSXXSJkKVG0oWoH0eX/HAPiu+TS1HBwRPQV+tTYPWLrUypYFepfujZA==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "fs-extra": "^11.1.1",
+ "react-json-view-lite": "^1.2.0",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-debug/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-google-analytics": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.7.0.tgz",
+ "integrity": "sha512-otIqiRV/jka6Snjf+AqB360XCeSv7lQC+DKYW+EUZf6XbuE8utz5PeUQ8VuOcD8Bk5zvT1MC4JKcd5zPfDuMWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-google-analytics/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-google-gtag": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.7.0.tgz",
+ "integrity": "sha512-M3vrMct1tY65ModbyeDaMoA+fNJTSPe5qmchhAbtqhDD/iALri0g9LrEpIOwNaoLmm6lO88sfBUADQrSRSGSWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
+ "@types/gtag.js": "^0.0.12",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-google-gtag/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/plugin-google-tag-manager": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.7.0.tgz",
+ "integrity": "sha512-X8U78nb8eiMiPNg3jb9zDIVuuo/rE1LjGDGu+5m5CX4UBZzjMy+klOY2fNya6x8ACyE/L3K2erO1ErheP55W/w==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/types": "3.5.2",
- "@docusaurus/utils": "3.5.2",
- "fs-extra": "^11.1.1",
- "react-json-view-lite": "^1.2.0",
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
"tslib": "^2.6.0"
},
"engines": {
"node": ">=18.0"
},
"peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
- "node_modules/@docusaurus/plugin-google-analytics": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.5.2.tgz",
- "integrity": "sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ==",
+ "node_modules/@docusaurus/plugin-google-tag-manager/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/types": "3.5.2",
- "@docusaurus/utils-validation": "3.5.2",
- "tslib": "^2.6.0"
- },
- "engines": {
- "node": ">=18.0"
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
},
"peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
- "node_modules/@docusaurus/plugin-google-gtag": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.5.2.tgz",
- "integrity": "sha512-lm8XL3xLkTPHFKKjLjEEAHUrW0SZBSHBE1I+i/tmYMBsjCcUB5UJ52geS5PSiOCFVR74tbPGcPHEV/gaaxFeSA==",
+ "node_modules/@docusaurus/plugin-sitemap": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.7.0.tgz",
+ "integrity": "sha512-bTRT9YLZ/8I/wYWKMQke18+PF9MV8Qub34Sku6aw/vlZ/U+kuEuRpQ8bTcNOjaTSfYsWkK4tTwDMHK2p5S86cA==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/types": "3.5.2",
- "@docusaurus/utils-validation": "3.5.2",
- "@types/gtag.js": "^0.0.12",
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/logger": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "@docusaurus/utils-common": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
+ "fs-extra": "^11.1.1",
+ "sitemap": "^7.1.1",
"tslib": "^2.6.0"
},
"engines": {
"node": ">=18.0"
},
"peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
- "node_modules/@docusaurus/plugin-google-tag-manager": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.5.2.tgz",
- "integrity": "sha512-QkpX68PMOMu10Mvgvr5CfZAzZQFx8WLlOiUQ/Qmmcl6mjGK6H21WLT5x7xDmcpCoKA/3CegsqIqBR+nA137lQg==",
+ "node_modules/@docusaurus/plugin-sitemap/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/types": "3.5.2",
- "@docusaurus/utils-validation": "3.5.2",
- "tslib": "^2.6.0"
- },
- "engines": {
- "node": ">=18.0"
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
},
"peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
- "node_modules/@docusaurus/plugin-sitemap": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.5.2.tgz",
- "integrity": "sha512-DnlqYyRAdQ4NHY28TfHuVk414ft2uruP4QWCH//jzpHjqvKyXjj2fmDtI8RPUBh9K8iZKFMHRnLtzJKySPWvFA==",
+ "node_modules/@docusaurus/plugin-svgr": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.7.0.tgz",
+ "integrity": "sha512-HByXIZTbc4GV5VAUkZ2DXtXv1Qdlnpk3IpuImwSnEzCDBkUMYcec5282hPjn6skZqB25M1TYCmWS91UbhBGxQg==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/logger": "3.5.2",
- "@docusaurus/types": "3.5.2",
- "@docusaurus/utils": "3.5.2",
- "@docusaurus/utils-common": "3.5.2",
- "@docusaurus/utils-validation": "3.5.2",
- "fs-extra": "^11.1.1",
- "sitemap": "^7.1.1",
- "tslib": "^2.6.0"
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
+ "@svgr/core": "8.1.0",
+ "@svgr/webpack": "^8.1.0",
+ "tslib": "^2.6.0",
+ "webpack": "^5.88.1"
},
"engines": {
"node": ">=18.0"
},
"peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
- "node_modules/@docusaurus/preset-classic": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.5.2.tgz",
- "integrity": "sha512-3ihfXQ95aOHiLB5uCu+9PRy2gZCeSZoDcqpnDvf3B+sTrMvMTr8qRUzBvWkoIqc82yG5prCboRjk1SVILKx6sg==",
+ "node_modules/@docusaurus/plugin-svgr/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/plugin-content-blog": "3.5.2",
- "@docusaurus/plugin-content-docs": "3.5.2",
- "@docusaurus/plugin-content-pages": "3.5.2",
- "@docusaurus/plugin-debug": "3.5.2",
- "@docusaurus/plugin-google-analytics": "3.5.2",
- "@docusaurus/plugin-google-gtag": "3.5.2",
- "@docusaurus/plugin-google-tag-manager": "3.5.2",
- "@docusaurus/plugin-sitemap": "3.5.2",
- "@docusaurus/theme-classic": "3.5.2",
- "@docusaurus/theme-common": "3.5.2",
- "@docusaurus/theme-search-algolia": "3.5.2",
- "@docusaurus/types": "3.5.2"
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/preset-classic": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.7.0.tgz",
+ "integrity": "sha512-nPHj8AxDLAaQXs+O6+BwILFuhiWbjfQWrdw2tifOClQoNfuXDjfjogee6zfx6NGHWqshR23LrcN115DmkHC91Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/plugin-content-blog": "3.7.0",
+ "@docusaurus/plugin-content-docs": "3.7.0",
+ "@docusaurus/plugin-content-pages": "3.7.0",
+ "@docusaurus/plugin-debug": "3.7.0",
+ "@docusaurus/plugin-google-analytics": "3.7.0",
+ "@docusaurus/plugin-google-gtag": "3.7.0",
+ "@docusaurus/plugin-google-tag-manager": "3.7.0",
+ "@docusaurus/plugin-sitemap": "3.7.0",
+ "@docusaurus/plugin-svgr": "3.7.0",
+ "@docusaurus/theme-classic": "3.7.0",
+ "@docusaurus/theme-common": "3.7.0",
+ "@docusaurus/theme-search-algolia": "3.7.0",
+ "@docusaurus/types": "3.7.0"
},
"engines": {
"node": ">=18.0"
},
"peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
"node_modules/@docusaurus/theme-classic": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.5.2.tgz",
- "integrity": "sha512-XRpinSix3NBv95Rk7xeMF9k4safMkwnpSgThn0UNQNumKvmcIYjfkwfh2BhwYh/BxMXQHJ/PdmNh22TQFpIaYg==",
- "license": "MIT",
- "dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/mdx-loader": "3.5.2",
- "@docusaurus/module-type-aliases": "3.5.2",
- "@docusaurus/plugin-content-blog": "3.5.2",
- "@docusaurus/plugin-content-docs": "3.5.2",
- "@docusaurus/plugin-content-pages": "3.5.2",
- "@docusaurus/theme-common": "3.5.2",
- "@docusaurus/theme-translations": "3.5.2",
- "@docusaurus/types": "3.5.2",
- "@docusaurus/utils": "3.5.2",
- "@docusaurus/utils-common": "3.5.2",
- "@docusaurus/utils-validation": "3.5.2",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.7.0.tgz",
+ "integrity": "sha512-MnLxG39WcvLCl4eUzHr0gNcpHQfWoGqzADCly54aqCofQX6UozOS9Th4RK3ARbM9m7zIRv3qbhggI53dQtx/hQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/logger": "3.7.0",
+ "@docusaurus/mdx-loader": "3.7.0",
+ "@docusaurus/module-type-aliases": "3.7.0",
+ "@docusaurus/plugin-content-blog": "3.7.0",
+ "@docusaurus/plugin-content-docs": "3.7.0",
+ "@docusaurus/plugin-content-pages": "3.7.0",
+ "@docusaurus/theme-common": "3.7.0",
+ "@docusaurus/theme-translations": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "@docusaurus/utils-common": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
"@mdx-js/react": "^3.0.0",
"clsx": "^2.0.0",
"copy-text-to-clipboard": "^3.2.0",
- "infima": "0.2.0-alpha.44",
+ "infima": "0.2.0-alpha.45",
"lodash": "^4.17.21",
"nprogress": "^0.2.0",
"postcss": "^8.4.26",
@@ -2695,20 +3882,41 @@
"node": ">=18.0"
},
"peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@docusaurus/theme-classic/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
"node_modules/@docusaurus/theme-common": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.5.2.tgz",
- "integrity": "sha512-QXqlm9S6x9Ibwjs7I2yEDgsCocp708DrCrgHgKwg2n2AY0YQ6IjU0gAK35lHRLOvAoJUfCKpQAwUykB0R7+Eew==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.7.0.tgz",
+ "integrity": "sha512-8eJ5X0y+gWDsURZnBfH0WabdNm8XMCXHv8ENy/3Z/oQKwaB/EHt5lP9VsTDTf36lKEp0V6DjzjFyFIB+CetL0A==",
"license": "MIT",
"dependencies": {
- "@docusaurus/mdx-loader": "3.5.2",
- "@docusaurus/module-type-aliases": "3.5.2",
- "@docusaurus/utils": "3.5.2",
- "@docusaurus/utils-common": "3.5.2",
+ "@docusaurus/mdx-loader": "3.7.0",
+ "@docusaurus/module-type-aliases": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "@docusaurus/utils-common": "3.7.0",
"@types/history": "^4.7.11",
"@types/react": "*",
"@types/react-router-config": "*",
@@ -2723,26 +3931,26 @@
},
"peerDependencies": {
"@docusaurus/plugin-content-docs": "*",
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
"node_modules/@docusaurus/theme-search-algolia": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.5.2.tgz",
- "integrity": "sha512-qW53kp3VzMnEqZGjakaV90sst3iN1o32PH+nawv1uepROO8aEGxptcq2R5rsv7aBShSRbZwIobdvSYKsZ5pqvA==",
- "license": "MIT",
- "dependencies": {
- "@docsearch/react": "^3.5.2",
- "@docusaurus/core": "3.5.2",
- "@docusaurus/logger": "3.5.2",
- "@docusaurus/plugin-content-docs": "3.5.2",
- "@docusaurus/theme-common": "3.5.2",
- "@docusaurus/theme-translations": "3.5.2",
- "@docusaurus/utils": "3.5.2",
- "@docusaurus/utils-validation": "3.5.2",
- "algoliasearch": "^4.18.0",
- "algoliasearch-helper": "^3.13.3",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.7.0.tgz",
+ "integrity": "sha512-Al/j5OdzwRU1m3falm+sYy9AaB93S1XF1Lgk9Yc6amp80dNxJVplQdQTR4cYdzkGtuQqbzUA8+kaoYYO0RbK6g==",
+ "license": "MIT",
+ "dependencies": {
+ "@docsearch/react": "^3.8.1",
+ "@docusaurus/core": "3.7.0",
+ "@docusaurus/logger": "3.7.0",
+ "@docusaurus/plugin-content-docs": "3.7.0",
+ "@docusaurus/theme-common": "3.7.0",
+ "@docusaurus/theme-translations": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "@docusaurus/utils-validation": "3.7.0",
+ "algoliasearch": "^5.17.1",
+ "algoliasearch-helper": "^3.22.6",
"clsx": "^2.0.0",
"eta": "^2.2.0",
"fs-extra": "^11.1.1",
@@ -2754,14 +3962,14 @@
"node": ">=18.0"
},
"peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
"node_modules/@docusaurus/theme-translations": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.5.2.tgz",
- "integrity": "sha512-GPZLcu4aT1EmqSTmbdpVrDENGR2yObFEX8ssEFYTCiAIVc0EihNSdOIBTazUvgNqwvnoU1A8vIs1xyzc3LITTw==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.7.0.tgz",
+ "integrity": "sha512-Ewq3bEraWDmienM6eaNK7fx+/lHMtGDHQyd1O+4+3EsDxxUmrzPkV7Ct3nBWTuE0MsoZr3yNwQVKjllzCMuU3g==",
"license": "MIT",
"dependencies": {
"fs-extra": "^11.1.1",
@@ -2782,6 +3990,7 @@
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.2.tgz",
"integrity": "sha512-N6GntLXoLVUwkZw7zCxwy9QiuEXIcTVzA9AkmNw16oc0AP3SXLrMmDMMBIfgqwuKWa6Ox6epHol9kMtJqekACw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@mdx-js/mdx": "^3.0.0",
@@ -2800,14 +4009,14 @@
}
},
"node_modules/@docusaurus/utils": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.5.2.tgz",
- "integrity": "sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.7.0.tgz",
+ "integrity": "sha512-e7zcB6TPnVzyUaHMJyLSArKa2AG3h9+4CfvKXKKWNx6hRs+p0a+u7HHTJBgo6KW2m+vqDnuIHK4X+bhmoghAFA==",
"license": "MIT",
"dependencies": {
- "@docusaurus/logger": "3.5.2",
- "@docusaurus/utils-common": "3.5.2",
- "@svgr/webpack": "^8.1.0",
+ "@docusaurus/logger": "3.7.0",
+ "@docusaurus/types": "3.7.0",
+ "@docusaurus/utils-common": "3.7.0",
"escape-string-regexp": "^4.0.0",
"file-loader": "^6.2.0",
"fs-extra": "^11.1.1",
@@ -2828,45 +4037,51 @@
},
"engines": {
"node": ">=18.0"
- },
- "peerDependencies": {
- "@docusaurus/types": "*"
- },
- "peerDependenciesMeta": {
- "@docusaurus/types": {
- "optional": true
- }
}
},
"node_modules/@docusaurus/utils-common": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.5.2.tgz",
- "integrity": "sha512-i0AZjHiRgJU6d7faQngIhuHKNrszpL/SHQPgF1zH4H+Ij6E9NBYGy6pkcGWToIv7IVPbs+pQLh1P3whn0gWXVg==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.7.0.tgz",
+ "integrity": "sha512-IZeyIfCfXy0Mevj6bWNg7DG7B8G+S6o6JVpddikZtWyxJguiQ7JYr0SIZ0qWd8pGNuMyVwriWmbWqMnK7Y5PwA==",
"license": "MIT",
"dependencies": {
+ "@docusaurus/types": "3.7.0",
"tslib": "^2.6.0"
},
"engines": {
"node": ">=18.0"
+ }
+ },
+ "node_modules/@docusaurus/utils-common/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
},
"peerDependencies": {
- "@docusaurus/types": "*"
- },
- "peerDependenciesMeta": {
- "@docusaurus/types": {
- "optional": true
- }
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
"node_modules/@docusaurus/utils-validation": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.5.2.tgz",
- "integrity": "sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.7.0.tgz",
+ "integrity": "sha512-w8eiKk8mRdN+bNfeZqC4nyFoxNyI1/VExMKAzD9tqpJfLLbsa46Wfn5wcKH761g9WkKh36RtFV49iL9lh1DYBA==",
"license": "MIT",
"dependencies": {
- "@docusaurus/logger": "3.5.2",
- "@docusaurus/utils": "3.5.2",
- "@docusaurus/utils-common": "3.5.2",
+ "@docusaurus/logger": "3.7.0",
+ "@docusaurus/utils": "3.7.0",
+ "@docusaurus/utils-common": "3.7.0",
"fs-extra": "^11.2.0",
"joi": "^17.9.2",
"js-yaml": "^4.1.0",
@@ -2877,6 +4092,27 @@
"node": ">=18.0"
}
},
+ "node_modules/@docusaurus/utils/node_modules/@docusaurus/types": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
+ "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@mdx-js/mdx": "^3.0.0",
+ "@types/history": "^4.7.11",
+ "@types/react": "*",
+ "commander": "^5.1.0",
+ "joi": "^17.9.2",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
+ "utility-types": "^3.10.0",
+ "webpack": "^5.95.0",
+ "webpack-merge": "^5.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/@hapi/hoek": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
@@ -4162,32 +5398,33 @@
}
},
"node_modules/algoliasearch": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz",
- "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==",
- "license": "MIT",
- "dependencies": {
- "@algolia/cache-browser-local-storage": "4.24.0",
- "@algolia/cache-common": "4.24.0",
- "@algolia/cache-in-memory": "4.24.0",
- "@algolia/client-account": "4.24.0",
- "@algolia/client-analytics": "4.24.0",
- "@algolia/client-common": "4.24.0",
- "@algolia/client-personalization": "4.24.0",
- "@algolia/client-search": "4.24.0",
- "@algolia/logger-common": "4.24.0",
- "@algolia/logger-console": "4.24.0",
- "@algolia/recommend": "4.24.0",
- "@algolia/requester-browser-xhr": "4.24.0",
- "@algolia/requester-common": "4.24.0",
- "@algolia/requester-node-http": "4.24.0",
- "@algolia/transporter": "4.24.0"
+ "version": "5.20.4",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.4.tgz",
+ "integrity": "sha512-wjfzqruxovJyDqga8M6Xk5XtfuVg3igrWjhjgkRya87+WwfEa1kg+IluujBLzgAiMSd6rO6jqRb7czjgeeSYgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-abtesting": "5.20.4",
+ "@algolia/client-analytics": "5.20.4",
+ "@algolia/client-common": "5.20.4",
+ "@algolia/client-insights": "5.20.4",
+ "@algolia/client-personalization": "5.20.4",
+ "@algolia/client-query-suggestions": "5.20.4",
+ "@algolia/client-search": "5.20.4",
+ "@algolia/ingestion": "1.20.4",
+ "@algolia/monitoring": "1.20.4",
+ "@algolia/recommend": "5.20.4",
+ "@algolia/requester-browser-xhr": "5.20.4",
+ "@algolia/requester-fetch": "5.20.4",
+ "@algolia/requester-node-http": "5.20.4"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
"node_modules/algoliasearch-helper": {
- "version": "3.22.5",
- "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.5.tgz",
- "integrity": "sha512-lWvhdnc+aKOKx8jyA3bsdEgHzm/sglC4cYdMG4xSQyRiPLJVJtH/IVYZG3Hp6PkTEhQqhyVYkeP9z2IlcHJsWw==",
+ "version": "3.24.2",
+ "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.24.2.tgz",
+ "integrity": "sha512-vBw/INZDfyh/THbVeDy8On8lZqd2qiUAHde5N4N1ygL4SoeLqLGJ4GHneHrDAYsjikRwTTtodEP0fiXl5MxHFQ==",
"license": "MIT",
"dependencies": {
"@algolia/events": "^4.0.1"
@@ -4196,45 +5433,6 @@
"algoliasearch": ">= 3.1 < 6"
}
},
- "node_modules/algoliasearch/node_modules/@algolia/client-common": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
- "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
- "license": "MIT",
- "dependencies": {
- "@algolia/requester-common": "4.24.0",
- "@algolia/transporter": "4.24.0"
- }
- },
- "node_modules/algoliasearch/node_modules/@algolia/client-search": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
- "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "4.24.0",
- "@algolia/requester-common": "4.24.0",
- "@algolia/transporter": "4.24.0"
- }
- },
- "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz",
- "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==",
- "license": "MIT",
- "dependencies": {
- "@algolia/requester-common": "4.24.0"
- }
- },
- "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": {
- "version": "4.24.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz",
- "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==",
- "license": "MIT",
- "dependencies": {
- "@algolia/requester-common": "4.24.0"
- }
- },
"node_modules/ansi-align": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
@@ -4264,6 +5462,33 @@
"node": ">=8"
}
},
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-escapes/node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/ansi-html-community": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
@@ -4359,9 +5584,9 @@
}
},
"node_modules/autoprefixer": {
- "version": "10.4.20",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
- "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
+ "version": "10.4.21",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
+ "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
"funding": [
{
"type": "opencollective",
@@ -4378,11 +5603,11 @@
],
"license": "MIT",
"dependencies": {
- "browserslist": "^4.23.3",
- "caniuse-lite": "^1.0.30001646",
+ "browserslist": "^4.24.4",
+ "caniuse-lite": "^1.0.30001702",
"fraction.js": "^4.3.7",
"normalize-range": "^0.1.2",
- "picocolors": "^1.0.1",
+ "picocolors": "^1.1.1",
"postcss-value-parser": "^4.2.0"
},
"bin": {
@@ -4422,13 +5647,13 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.11",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
- "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
+ "version": "0.4.12",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz",
+ "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==",
"license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "@babel/helper-define-polyfill-provider": "^0.6.3",
"semver": "^6.3.1"
},
"peerDependencies": {
@@ -4458,12 +5683,12 @@
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
- "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz",
+ "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==",
"license": "MIT",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.2"
+ "@babel/helper-define-polyfill-provider": "^0.6.3"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
@@ -4621,9 +5846,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.24.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
- "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
+ "version": "4.24.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
+ "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
"funding": [
{
"type": "opencollective",
@@ -4640,9 +5865,9 @@
],
"license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001669",
- "electron-to-chromium": "^1.5.41",
- "node-releases": "^2.0.18",
+ "caniuse-lite": "^1.0.30001688",
+ "electron-to-chromium": "^1.5.73",
+ "node-releases": "^2.0.19",
"update-browserslist-db": "^1.1.1"
},
"bin": {
@@ -4695,16 +5920,44 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
- "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
"license": "MIT",
"dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
"es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
"get-intrinsic": "^1.2.4",
- "set-function-length": "^1.2.1"
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
@@ -4757,9 +6010,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001677",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz",
- "integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==",
+ "version": "1.0.30001703",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001703.tgz",
+ "integrity": "sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==",
"funding": [
{
"type": "opencollective",
@@ -5219,10 +6472,13 @@
}
},
"node_modules/consola": {
- "version": "2.15.3",
- "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
- "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
- "license": "MIT"
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz",
+ "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
},
"node_modules/content-disposition": {
"version": "0.5.2",
@@ -5354,12 +6610,12 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.39.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz",
- "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==",
+ "version": "3.41.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz",
+ "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==",
"license": "MIT",
"dependencies": {
- "browserslist": "^4.24.2"
+ "browserslist": "^4.24.4"
},
"funding": {
"type": "opencollective",
@@ -5367,9 +6623,9 @@
}
},
"node_modules/core-js-pure": {
- "version": "3.39.0",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.39.0.tgz",
- "integrity": "sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==",
+ "version": "3.41.0",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.41.0.tgz",
+ "integrity": "sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==",
"hasInstallScript": true,
"license": "MIT",
"funding": {
@@ -5444,10 +6700,48 @@
"integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"license": "(MIT OR CC0-1.0)",
"engines": {
- "node": ">=10"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/css-blank-pseudo": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz",
+ "integrity": "sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/css-declaration-sorter": {
@@ -5462,6 +6756,68 @@
"postcss": "^8.0.9"
}
},
+ "node_modules/css-has-pseudo": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.2.tgz",
+ "integrity": "sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+ "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ }
+ },
+ "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/css-loader": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz",
@@ -5541,6 +6897,28 @@
}
}
},
+ "node_modules/css-prefers-color-scheme": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz",
+ "integrity": "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
"node_modules/css-select": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
@@ -5582,6 +6960,22 @@
"url": "https://github.com/sponsors/fb55"
}
},
+ "node_modules/cssdb": {
+ "version": "8.2.4",
+ "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.2.4.tgz",
+ "integrity": "sha512-3KSCVkjZJe/QxicVXnbyYSY26WsFc1YoMY7jep1ZKWMEVc7jEm6V2Xq2r+MX8WKQIuB7ofGbnr5iVI+aZpoSzg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ }
+ ],
+ "license": "MIT-0"
+ },
"node_modules/cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@@ -6068,9 +7462,9 @@
}
},
"node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
"license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^2.0.0",
@@ -6115,6 +7509,20 @@
"node": ">=8"
}
},
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/duplexer": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
@@ -6134,9 +7542,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.50",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.50.tgz",
- "integrity": "sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==",
+ "version": "1.5.114",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.114.tgz",
+ "integrity": "sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==",
"license": "ISC"
},
"node_modules/emoji-regex": {
@@ -6214,13 +7622,10 @@
}
},
"node_modules/es-define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
- "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.2.4"
- },
"engines": {
"node": ">= 0.4"
}
@@ -6240,6 +7645,18 @@
"integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
"license": "MIT"
},
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/esast-util-from-estree": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz",
@@ -6436,9 +7853,9 @@
}
},
"node_modules/estree-util-value-to-estree": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.2.1.tgz",
- "integrity": "sha512-Vt2UOjyPbNQQgT5eJh+K5aATti0OjCIAGc9SgMdOFYbohuifsWclR74l0iZTJwePMgWYdX1hlVS+dedH9XV8kw==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.3.2.tgz",
+ "integrity": "sha512-hYH1aSvQI63Cvq3T3loaem6LW4u72F187zW4FHpTrReJSm6W66vYTFNO1vH/chmcOulp1HlAj1pxn8Ag0oXI5Q==",
"license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0"
@@ -6736,6 +8153,30 @@
"node": ">=0.4.0"
}
},
+ "node_modules/figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/figures/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/file-loader": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
@@ -7155,16 +8596,21 @@
}
},
"node_modules/get-intrinsic": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
- "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"license": "MIT",
"dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -7179,6 +8625,19 @@
"integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
"license": "ISC"
},
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
@@ -7328,12 +8787,12 @@
}
},
"node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.1.3"
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7461,22 +8920,10 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-proto": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
- "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -7510,16 +8957,16 @@
}
},
"node_modules/hast-util-from-parse5": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz",
- "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==",
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz",
+ "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
"@types/unist": "^3.0.0",
"devlop": "^1.0.0",
- "hastscript": "^8.0.0",
- "property-information": "^6.0.0",
+ "hastscript": "^9.0.0",
+ "property-information": "^7.0.0",
"vfile": "^6.0.0",
"vfile-location": "^5.0.0",
"web-namespaces": "^2.0.0"
@@ -7529,6 +8976,16 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/hast-util-from-parse5/node_modules/property-information": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz",
+ "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/hast-util-parse-selector": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
@@ -7543,9 +9000,9 @@
}
},
"node_modules/hast-util-raw": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz",
- "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz",
+ "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -7670,15 +9127,15 @@
}
},
"node_modules/hastscript": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz",
- "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz",
+ "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
"comma-separated-tokens": "^2.0.0",
"hast-util-parse-selector": "^4.0.0",
- "property-information": "^6.0.0",
+ "property-information": "^7.0.0",
"space-separated-tokens": "^2.0.0"
},
"funding": {
@@ -7686,6 +9143,16 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/hastscript/node_modules/property-information": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz",
+ "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -8061,9 +9528,9 @@
}
},
"node_modules/image-size": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz",
- "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.0.tgz",
+ "integrity": "sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w==",
"license": "MIT",
"dependencies": {
"queue": "6.0.2"
@@ -8129,9 +9596,9 @@
}
},
"node_modules/infima": {
- "version": "0.2.0-alpha.44",
- "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.44.tgz",
- "integrity": "sha512-tuRkUSO/lB3rEhLJk25atwAjgLuzq070+pOW8XcvpHky/YbENnRRdPd85IBkyeTgttmOy5ah+yHYsK1HhUd4lQ==",
+ "version": "0.2.0-alpha.45",
+ "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.45.tgz",
+ "integrity": "sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -8550,9 +10017,9 @@
}
},
"node_modules/jiti": {
- "version": "1.21.6",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
- "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
+ "version": "1.21.7",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
+ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
"license": "MIT",
"bin": {
"jiti": "bin/jiti.js"
@@ -8590,9 +10057,9 @@
}
},
"node_modules/jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
"license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
@@ -8705,9 +10172,9 @@
}
},
"node_modules/lilconfig": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
- "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
"license": "MIT",
"engines": {
"node": ">=14"
@@ -8858,14 +10325,24 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/mdast-util-directive": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz",
- "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz",
+ "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
"devlop": "^1.0.0",
"mdast-util-from-markdown": "^2.0.0",
"mdast-util-to-markdown": "^2.0.0",
@@ -8879,9 +10356,9 @@
}
},
"node_modules/mdast-util-find-and-replace": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz",
- "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
+ "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -8977,9 +10454,9 @@
}
},
"node_modules/mdast-util-gfm": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz",
- "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz",
+ "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==",
"license": "MIT",
"dependencies": {
"mdast-util-from-markdown": "^2.0.0",
@@ -9013,9 +10490,9 @@
}
},
"node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9033,9 +10510,9 @@
}
},
"node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9049,9 +10526,9 @@
"license": "MIT"
},
"node_modules/mdast-util-gfm-footnote": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz",
- "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz",
+ "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -9464,9 +10941,9 @@
}
},
"node_modules/micromark-extension-directive/node_modules/micromark-factory-space": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
- "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9484,9 +10961,9 @@
}
},
"node_modules/micromark-extension-directive/node_modules/micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9504,9 +10981,9 @@
}
},
"node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9536,9 +11013,9 @@
}
},
"node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9556,9 +11033,9 @@
}
},
"node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9608,9 +11085,9 @@
}
},
"node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9628,9 +11105,9 @@
}
},
"node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9664,9 +11141,9 @@
}
},
"node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
- "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9684,9 +11161,9 @@
}
},
"node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9704,9 +11181,9 @@
}
},
"node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9738,9 +11215,9 @@
}
},
"node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9754,9 +11231,9 @@
"license": "MIT"
},
"node_modules/micromark-extension-gfm-table": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz",
- "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
+ "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
"license": "MIT",
"dependencies": {
"devlop": "^1.0.0",
@@ -9771,9 +11248,9 @@
}
},
"node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
- "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9791,9 +11268,9 @@
}
},
"node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9811,9 +11288,9 @@
}
},
"node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9857,9 +11334,9 @@
}
},
"node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
- "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9877,9 +11354,9 @@
}
},
"node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -9897,9 +11374,9 @@
}
},
"node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -11248,9 +12725,9 @@
}
},
"node_modules/nanoid": {
- "version": "3.3.8",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
- "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+ "version": "3.3.9",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz",
+ "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==",
"funding": [
{
"type": "github",
@@ -11291,9 +12768,9 @@
}
},
"node_modules/node-emoji": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz",
- "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz",
+ "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==",
"license": "MIT",
"dependencies": {
"@sindresorhus/is": "^4.6.0",
@@ -11315,9 +12792,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
- "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
"license": "MIT"
},
"node_modules/normalize-path": {
@@ -11380,6 +12857,75 @@
"url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
+ "node_modules/null-loader": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz",
+ "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==",
+ "license": "MIT",
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/null-loader/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/null-loader/node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/null-loader/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "license": "MIT"
+ },
+ "node_modules/null-loader/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -11411,14 +12957,16 @@
}
},
"node_modules/object.assign": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
- "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.5",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"define-properties": "^1.2.1",
- "has-symbols": "^1.0.3",
+ "es-object-atoms": "^1.0.0",
+ "has-symbols": "^1.1.0",
"object-keys": "^1.1.1"
},
"engines": {
@@ -11879,9 +13427,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.47",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
- "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
+ "version": "8.5.3",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+ "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
"funding": [
{
"type": "opencollective",
@@ -11898,14 +13446,52 @@
],
"license": "MIT",
"dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.1.0",
+ "nanoid": "^3.3.8",
+ "picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/postcss-attribute-case-insensitive": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz",
+ "integrity": "sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/postcss-calc": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz",
@@ -11922,38 +13508,270 @@
"postcss": "^8.2.2"
}
},
+ "node_modules/postcss-clamp": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz",
+ "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=7.6.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.6"
+ }
+ },
+ "node_modules/postcss-color-functional-notation": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.8.tgz",
+ "integrity": "sha512-S/TpMKVKofNvsxfau/+bw+IA6cSfB6/kmzFj5szUofHOVnFFMB2WwK+Zu07BeMD8T0n+ZnTO5uXiMvAKe2dPkA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.8",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-color-hex-alpha": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz",
+ "integrity": "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-color-rebeccapurple": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz",
+ "integrity": "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
"node_modules/postcss-colormin": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz",
"integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==",
"license": "MIT",
"dependencies": {
- "browserslist": "^4.23.0",
- "caniuse-api": "^3.0.0",
- "colord": "^2.9.3",
- "postcss-value-parser": "^4.2.0"
+ "browserslist": "^4.23.0",
+ "caniuse-api": "^3.0.0",
+ "colord": "^2.9.3",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/postcss-convert-values": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz",
+ "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==",
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.23.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/postcss-custom-media": {
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.5.tgz",
+ "integrity": "sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/cascade-layer-name-parser": "^2.0.4",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/media-query-list-parser": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-custom-properties": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.4.tgz",
+ "integrity": "sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/cascade-layer-name-parser": "^2.0.4",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-custom-selectors": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.4.tgz",
+ "integrity": "sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/cascade-layer-name-parser": "^2.0.4",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-dir-pseudo-class": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz",
+ "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": ">=18"
},
"peerDependencies": {
- "postcss": "^8.4.31"
+ "postcss": "^8.4"
}
},
- "node_modules/postcss-convert-values": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz",
- "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==",
+ "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
"license": "MIT",
"dependencies": {
- "browserslist": "^4.23.0",
- "postcss-value-parser": "^4.2.0"
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.31"
+ "node": ">=4"
}
},
"node_modules/postcss-discard-comments": {
@@ -12019,6 +13837,195 @@
"postcss": "^8.4.31"
}
},
+ "node_modules/postcss-double-position-gradients": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.0.tgz",
+ "integrity": "sha512-JkIGah3RVbdSEIrcobqj4Gzq0h53GG4uqDPsho88SgY84WnpkTpI0k50MFK/sX7XqVisZ6OqUfFnoUO6m1WWdg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-focus-visible": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz",
+ "integrity": "sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-focus-within": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz",
+ "integrity": "sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-font-variant": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
+ "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-gap-properties": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz",
+ "integrity": "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-image-set-function": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz",
+ "integrity": "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-lab-function": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.8.tgz",
+ "integrity": "sha512-plV21I86Hg9q8omNz13G9fhPtLopIWH06bt/Cb5cs1XnaGU2kUtEitvVd4vtQb/VqCdNUHK5swKn3QFmMRbpDg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.8",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
"node_modules/postcss-loader": {
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz",
@@ -12041,6 +14048,31 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/postcss-logical": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz",
+ "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
"node_modules/postcss-merge-idents": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz",
@@ -12161,57 +14193,167 @@
"integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
"license": "ISC",
"engines": {
- "node": "^10 || ^12 || >= 14"
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz",
+ "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==",
+ "license": "MIT",
+ "dependencies": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-modules-scope": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz",
+ "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==",
+ "license": "ISC",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "license": "ISC",
+ "dependencies": {
+ "icss-utils": "^5.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-nesting": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.1.tgz",
+ "integrity": "sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/selector-resolve-nested": "^3.0.0",
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
},
"peerDependencies": {
- "postcss": "^8.1.0"
+ "postcss": "^8.4"
}
},
- "node_modules/postcss-modules-local-by-default": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
- "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
- "license": "MIT",
- "dependencies": {
- "icss-utils": "^5.0.0",
- "postcss-selector-parser": "^6.0.2",
- "postcss-value-parser": "^4.1.0"
- },
+ "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.0.0.tgz",
+ "integrity": "sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"engines": {
- "node": "^10 || ^12 || >= 14"
+ "node": ">=18"
},
"peerDependencies": {
- "postcss": "^8.1.0"
+ "postcss-selector-parser": "^7.0.0"
}
},
- "node_modules/postcss-modules-scope": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
- "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
- "license": "ISC",
- "dependencies": {
- "postcss-selector-parser": "^6.0.4"
- },
+ "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+ "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"engines": {
- "node": "^10 || ^12 || >= 14"
+ "node": ">=18"
},
"peerDependencies": {
- "postcss": "^8.1.0"
+ "postcss-selector-parser": "^7.0.0"
}
},
- "node_modules/postcss-modules-values": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
- "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
- "license": "ISC",
+ "node_modules/postcss-nesting/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
"dependencies": {
- "icss-utils": "^5.0.0"
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
},
"engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
+ "node": ">=4"
}
},
"node_modules/postcss-normalize-charset": {
@@ -12347,6 +14489,28 @@
"postcss": "^8.4.31"
}
},
+ "node_modules/postcss-opacity-percentage": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz",
+ "integrity": "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==",
+ "funding": [
+ {
+ "type": "kofi",
+ "url": "https://ko-fi.com/mrcgrtz"
+ },
+ {
+ "type": "liberapay",
+ "url": "https://liberapay.com/mrcgrtz"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
"node_modules/postcss-ordered-values": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz",
@@ -12363,6 +14527,190 @@
"postcss": "^8.4.31"
}
},
+ "node_modules/postcss-overflow-shorthand": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz",
+ "integrity": "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-page-break": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
+ "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8"
+ }
+ },
+ "node_modules/postcss-place": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-10.0.0.tgz",
+ "integrity": "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-preset-env": {
+ "version": "10.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.1.5.tgz",
+ "integrity": "sha512-LQybafF/K7H+6fAs4SIkgzkSCixJy0/h0gubDIAP3Ihz+IQBRwsjyvBnAZ3JUHD+A/ITaxVRPDxn//a3Qy4pDw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/postcss-cascade-layers": "^5.0.1",
+ "@csstools/postcss-color-function": "^4.0.8",
+ "@csstools/postcss-color-mix-function": "^3.0.8",
+ "@csstools/postcss-content-alt-text": "^2.0.4",
+ "@csstools/postcss-exponential-functions": "^2.0.7",
+ "@csstools/postcss-font-format-keywords": "^4.0.0",
+ "@csstools/postcss-gamut-mapping": "^2.0.8",
+ "@csstools/postcss-gradients-interpolation-method": "^5.0.8",
+ "@csstools/postcss-hwb-function": "^4.0.8",
+ "@csstools/postcss-ic-unit": "^4.0.0",
+ "@csstools/postcss-initial": "^2.0.1",
+ "@csstools/postcss-is-pseudo-class": "^5.0.1",
+ "@csstools/postcss-light-dark-function": "^2.0.7",
+ "@csstools/postcss-logical-float-and-clear": "^3.0.0",
+ "@csstools/postcss-logical-overflow": "^2.0.0",
+ "@csstools/postcss-logical-overscroll-behavior": "^2.0.0",
+ "@csstools/postcss-logical-resize": "^3.0.0",
+ "@csstools/postcss-logical-viewport-units": "^3.0.3",
+ "@csstools/postcss-media-minmax": "^2.0.7",
+ "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.4",
+ "@csstools/postcss-nested-calc": "^4.0.0",
+ "@csstools/postcss-normalize-display-values": "^4.0.0",
+ "@csstools/postcss-oklab-function": "^4.0.8",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/postcss-random-function": "^1.0.3",
+ "@csstools/postcss-relative-color-syntax": "^3.0.8",
+ "@csstools/postcss-scope-pseudo-class": "^4.0.1",
+ "@csstools/postcss-sign-functions": "^1.1.2",
+ "@csstools/postcss-stepped-value-functions": "^4.0.7",
+ "@csstools/postcss-text-decoration-shorthand": "^4.0.2",
+ "@csstools/postcss-trigonometric-functions": "^4.0.7",
+ "@csstools/postcss-unset-value": "^4.0.0",
+ "autoprefixer": "^10.4.19",
+ "browserslist": "^4.24.4",
+ "css-blank-pseudo": "^7.0.1",
+ "css-has-pseudo": "^7.0.2",
+ "css-prefers-color-scheme": "^10.0.0",
+ "cssdb": "^8.2.3",
+ "postcss-attribute-case-insensitive": "^7.0.1",
+ "postcss-clamp": "^4.1.0",
+ "postcss-color-functional-notation": "^7.0.8",
+ "postcss-color-hex-alpha": "^10.0.0",
+ "postcss-color-rebeccapurple": "^10.0.0",
+ "postcss-custom-media": "^11.0.5",
+ "postcss-custom-properties": "^14.0.4",
+ "postcss-custom-selectors": "^8.0.4",
+ "postcss-dir-pseudo-class": "^9.0.1",
+ "postcss-double-position-gradients": "^6.0.0",
+ "postcss-focus-visible": "^10.0.1",
+ "postcss-focus-within": "^9.0.1",
+ "postcss-font-variant": "^5.0.0",
+ "postcss-gap-properties": "^6.0.0",
+ "postcss-image-set-function": "^7.0.0",
+ "postcss-lab-function": "^7.0.8",
+ "postcss-logical": "^8.1.0",
+ "postcss-nesting": "^13.0.1",
+ "postcss-opacity-percentage": "^3.0.0",
+ "postcss-overflow-shorthand": "^6.0.0",
+ "postcss-page-break": "^3.0.4",
+ "postcss-place": "^10.0.0",
+ "postcss-pseudo-class-any-link": "^10.0.1",
+ "postcss-replace-overflow-wrap": "^4.0.0",
+ "postcss-selector-not": "^8.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-pseudo-class-any-link": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz",
+ "integrity": "sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/postcss-reduce-idents": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz",
@@ -12409,6 +14757,53 @@
"postcss": "^8.4.31"
}
},
+ "node_modules/postcss-replace-overflow-wrap": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
+ "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8.0.3"
+ }
+ },
+ "node_modules/postcss-selector-not": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz",
+ "integrity": "sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/postcss-selector-parser": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
@@ -13241,15 +15636,15 @@
}
},
"node_modules/regexpu-core": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz",
- "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz",
+ "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==",
"license": "MIT",
"dependencies": {
"regenerate": "^1.4.2",
"regenerate-unicode-properties": "^10.2.0",
"regjsgen": "^0.8.0",
- "regjsparser": "^0.11.0",
+ "regjsparser": "^0.12.0",
"unicode-match-property-ecmascript": "^2.0.0",
"unicode-match-property-value-ecmascript": "^2.1.0"
},
@@ -13291,9 +15686,9 @@
"license": "MIT"
},
"node_modules/regjsparser": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.2.tgz",
- "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==",
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz",
+ "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==",
"license": "BSD-2-Clause",
"dependencies": {
"jsesc": "~3.0.2"
@@ -13302,6 +15697,18 @@
"regjsparser": "bin/parser"
}
},
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/rehype-raw": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
@@ -13342,9 +15749,9 @@
}
},
"node_modules/remark-directive": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz",
- "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz",
+ "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -13390,9 +15797,9 @@
}
},
"node_modules/remark-gfm": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz",
- "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz",
+ "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -13569,6 +15976,15 @@
"entities": "^2.0.0"
}
},
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
@@ -13680,12 +16096,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/rtl-detect": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz",
- "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==",
- "license": "BSD-3-Clause"
- },
"node_modules/rtlcss": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz",
@@ -13788,9 +16198,9 @@
}
},
"node_modules/search-insights": {
- "version": "2.17.2",
- "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.2.tgz",
- "integrity": "sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==",
+ "version": "2.17.3",
+ "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz",
+ "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==",
"license": "MIT",
"peer": true
},
@@ -14346,9 +16756,9 @@
}
},
"node_modules/std-env": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
- "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==",
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz",
+ "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==",
"license": "MIT"
},
"node_modules/string_decoder": {
@@ -15690,23 +18100,77 @@
}
},
"node_modules/webpackbar": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz",
- "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-6.0.1.tgz",
+ "integrity": "sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==",
"license": "MIT",
"dependencies": {
- "chalk": "^4.1.0",
- "consola": "^2.15.3",
+ "ansi-escapes": "^4.3.2",
+ "chalk": "^4.1.2",
+ "consola": "^3.2.3",
+ "figures": "^3.2.0",
+ "markdown-table": "^2.0.0",
"pretty-time": "^1.1.0",
- "std-env": "^3.0.1"
+ "std-env": "^3.7.0",
+ "wrap-ansi": "^7.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=14.21.3"
},
"peerDependencies": {
"webpack": "3 || 4 || 5"
}
},
+ "node_modules/webpackbar/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/webpackbar/node_modules/markdown-table": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
+ "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
+ "license": "MIT",
+ "dependencies": {
+ "repeat-string": "^1.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/webpackbar/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/webpackbar/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/websocket-driver": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
@@ -15901,9 +18365,9 @@
}
},
"node_modules/yocto-queue": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
- "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.0.tgz",
+ "integrity": "sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw==",
"license": "MIT",
"engines": {
"node": ">=12.20"
diff --git a/docs/package.json b/docs/package.json
index 2c94375f..aabc17c5 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -15,8 +15,8 @@
"typecheck": "tsc"
},
"dependencies": {
- "@docusaurus/core": "3.5.2",
- "@docusaurus/preset-classic": "3.5.2",
+ "@docusaurus/core": "^3.7.0",
+ "@docusaurus/preset-classic": "^3.7.0",
"@mdx-js/react": "^3.0.0",
"clsx": "^2.0.0",
"prism-react-renderer": "^2.3.0",
@@ -25,7 +25,7 @@
"react-dom": "^18.0.0"
},
"devDependencies": {
- "@docusaurus/module-type-aliases": "3.5.2",
+ "@docusaurus/module-type-aliases": "^3.7.0",
"@docusaurus/tsconfig": "3.5.2",
"@docusaurus/types": "3.5.2",
"typescript": "~5.5.2"
diff --git a/infrahub_sdk/client.py b/infrahub_sdk/client.py
index 0d689afc..00664009 100644
--- a/infrahub_sdk/client.py
+++ b/infrahub_sdk/client.py
@@ -52,6 +52,7 @@
from .query_groups import InfrahubGroupContext, InfrahubGroupContextSync
from .schema import InfrahubSchema, InfrahubSchemaSync, NodeSchemaAPI
from .store import NodeStore, NodeStoreSync
+from .task.manager import InfrahubTaskManager, InfrahubTaskManagerSync
from .timestamp import Timestamp
from .types import AsyncRequester, HTTPMethod, Order, SyncRequester
from .utils import decode_json, get_user_permissions, is_valid_uuid
@@ -59,6 +60,8 @@
if TYPE_CHECKING:
from types import TracebackType
+ from .context import RequestContext
+
SchemaType = TypeVar("SchemaType", bound=CoreNode)
SchemaTypeSync = TypeVar("SchemaTypeSync", bound=CoreNodeSync)
@@ -140,6 +143,7 @@ def __init__(
self.identifier = self.config.identifier
self.group_context: InfrahubGroupContext | InfrahubGroupContextSync
self._initialize()
+ self._request_context: RequestContext | None = None
def _initialize(self) -> None:
"""Sets the properties for each version of the client"""
@@ -154,6 +158,14 @@ def _echo(self, url: str, query: str, variables: dict | None = None) -> None:
if variables:
print(f"VARIABLES:\n{ujson.dumps(variables, indent=4)}\n")
+ @property
+ def request_context(self) -> RequestContext | None:
+ return self._request_context
+
+ @request_context.setter
+ def request_context(self, request_context: RequestContext) -> None:
+ self._request_context = request_context
+
def start_tracking(
self,
identifier: str | None = None,
@@ -270,6 +282,7 @@ def _initialize(self) -> None:
self.branch = InfrahubBranchManager(self)
self.object_store = ObjectStore(self)
self.store = NodeStore()
+ self.task = InfrahubTaskManager(self)
self.concurrent_execution_limit = asyncio.Semaphore(self.max_concurrent_execution)
self._request_method: AsyncRequester = self.config.requester or self._default_request_method
self.group_context = InfrahubGroupContext(self)
@@ -1505,6 +1518,11 @@ async def __aexit__(
class InfrahubClientSync(BaseClient):
+ schema: InfrahubSchemaSync
+ branch: InfrahubBranchManagerSync
+ object_store: ObjectStoreSync
+ store: NodeStoreSync
+ task: InfrahubTaskManagerSync
group_context: InfrahubGroupContextSync
def _initialize(self) -> None:
@@ -1512,6 +1530,7 @@ def _initialize(self) -> None:
self.branch = InfrahubBranchManagerSync(self)
self.object_store = ObjectStoreSync(self)
self.store = NodeStoreSync()
+ self.task = InfrahubTaskManagerSync(self)
self._request_method: SyncRequester = self.config.sync_requester or self._default_request_method
self.group_context = InfrahubGroupContextSync(self)
diff --git a/infrahub_sdk/context.py b/infrahub_sdk/context.py
new file mode 100644
index 00000000..201a9ef9
--- /dev/null
+++ b/infrahub_sdk/context.py
@@ -0,0 +1,13 @@
+from __future__ import annotations
+
+from pydantic import BaseModel, Field
+
+
+class ContextAccount(BaseModel):
+ id: str = Field(..., description="The ID of the account")
+
+
+class RequestContext(BaseModel):
+ """The context can be used to override settings such as the account within mutations."""
+
+ account: ContextAccount | None = Field(default=None, description="Account tied to the context")
diff --git a/infrahub_sdk/ctl/branch.py b/infrahub_sdk/ctl/branch.py
index f77aa073..b44be462 100644
--- a/infrahub_sdk/ctl/branch.py
+++ b/infrahub_sdk/ctl/branch.py
@@ -5,9 +5,10 @@
from rich.table import Table
from ..async_typer import AsyncTyper
-from ..ctl.client import initialize_client
-from ..ctl.utils import calculate_time_diff, catch_exception
+from ..utils import calculate_time_diff
+from .client import initialize_client
from .parameters import CONFIG_PARAM
+from .utils import catch_exception
app = AsyncTyper()
console = Console()
diff --git a/infrahub_sdk/ctl/utils.py b/infrahub_sdk/ctl/utils.py
index 4c627119..898095c7 100644
--- a/infrahub_sdk/ctl/utils.py
+++ b/infrahub_sdk/ctl/utils.py
@@ -8,11 +8,9 @@
from pathlib import Path
from typing import TYPE_CHECKING, Any, Callable, NoReturn, Optional, TypeVar
-import pendulum
import typer
from click.exceptions import Exit
from httpx import HTTPError
-from pendulum.datetime import DateTime
from rich.console import Console
from rich.logging import RichHandler
from rich.markup import escape
@@ -152,20 +150,6 @@ def parse_cli_vars(variables: Optional[list[str]]) -> dict[str, str]:
return {var.split("=")[0]: var.split("=")[1] for var in variables if "=" in var}
-def calculate_time_diff(value: str) -> str | None:
- """Calculate the time in human format between a timedate in string format and now."""
- try:
- time_value = pendulum.parse(value)
- except pendulum.parsing.exceptions.ParserError:
- return None
-
- if not isinstance(time_value, DateTime):
- return None
-
- pendulum.set_locale("en")
- return time_value.diff_for_humans(other=pendulum.now(), absolute=True)
-
-
def find_graphql_query(name: str, directory: str | Path = ".") -> str:
if isinstance(directory, str):
directory = Path(directory)
diff --git a/infrahub_sdk/exceptions.py b/infrahub_sdk/exceptions.py
index 8b5b4b43..257ce6b4 100644
--- a/infrahub_sdk/exceptions.py
+++ b/infrahub_sdk/exceptions.py
@@ -143,3 +143,9 @@ class FileNotValidError(Error):
def __init__(self, name: str, message: str = ""):
self.message = message or f"Cannot parse '{name}' content."
super().__init__(self.message)
+
+
+class TimestampFormatError(Error):
+ def __init__(self, message: str | None = None):
+ self.message = message or "Invalid timestamp format"
+ super().__init__(self.message)
diff --git a/infrahub_sdk/generator.py b/infrahub_sdk/generator.py
index 3ba6c767..831d9c98 100644
--- a/infrahub_sdk/generator.py
+++ b/infrahub_sdk/generator.py
@@ -11,6 +11,7 @@
if TYPE_CHECKING:
from .client import InfrahubClient
+ from .context import RequestContext
from .node import InfrahubNode
from .store import NodeStore
@@ -29,6 +30,7 @@ def __init__(
params: dict | None = None,
convert_query_response: bool = False,
logger: logging.Logger | None = None,
+ request_context: RequestContext | None = None,
) -> None:
self.query = query
self.branch = branch
@@ -44,6 +46,7 @@ def __init__(
self.infrahub_node = infrahub_node
self.convert_query_response = convert_query_response
self.logger = logger if logger else logging.getLogger("infrahub.tasks")
+ self.request_context = request_context
@property
def store(self) -> NodeStore:
diff --git a/infrahub_sdk/graphql.py b/infrahub_sdk/graphql.py
index 9b7722da..abb12d8b 100644
--- a/infrahub_sdk/graphql.py
+++ b/infrahub_sdk/graphql.py
@@ -1,5 +1,6 @@
from __future__ import annotations
+from enum import Enum
from typing import Any
from pydantic import BaseModel
@@ -7,19 +8,30 @@
VARIABLE_TYPE_MAPPING = ((str, "String!"), (int, "Int!"), (float, "Float!"), (bool, "Boolean!"))
-def convert_to_graphql_as_string(value: str | bool | list) -> str:
+def convert_to_graphql_as_string(value: str | bool | list | BaseModel | Enum | Any, convert_enum: bool = False) -> str: # noqa: PLR0911
if isinstance(value, str) and value.startswith("$"):
return value
+ if isinstance(value, Enum):
+ if convert_enum:
+ return convert_to_graphql_as_string(value=value.value, convert_enum=True)
+ return value.name
if isinstance(value, str):
return f'"{value}"'
if isinstance(value, bool):
return repr(value).lower()
if isinstance(value, list):
- values_as_string = [convert_to_graphql_as_string(item) for item in value]
+ values_as_string = [convert_to_graphql_as_string(value=item, convert_enum=convert_enum) for item in value]
return "[" + ", ".join(values_as_string) + "]"
if isinstance(value, BaseModel):
data = value.model_dump()
- return "{ " + ", ".join(f"{key}: {convert_to_graphql_as_string(val)}" for key, val in data.items()) + " }"
+ return (
+ "{ "
+ + ", ".join(
+ f"{key}: {convert_to_graphql_as_string(value=val, convert_enum=convert_enum)}"
+ for key, val in data.items()
+ )
+ + " }"
+ )
return str(value)
@@ -38,7 +50,7 @@ def render_variables_to_string(data: dict[str, type[str | int | float | bool]])
return ", ".join([f"{key}: {value}" for key, value in vars_dict.items()])
-def render_query_block(data: dict, offset: int = 4, indentation: int = 4) -> list[str]:
+def render_query_block(data: dict, offset: int = 4, indentation: int = 4, convert_enum: bool = False) -> list[str]:
FILTERS_KEY = "@filters"
ALIAS_KEY = "@alias"
KEYWORDS_TO_SKIP = [FILTERS_KEY, ALIAS_KEY]
@@ -60,25 +72,36 @@ def render_query_block(data: dict, offset: int = 4, indentation: int = 4) -> lis
if value.get(FILTERS_KEY):
filters_str = ", ".join(
- [f"{key2}: {convert_to_graphql_as_string(value2)}" for key2, value2 in value[FILTERS_KEY].items()]
+ [
+ f"{key2}: {convert_to_graphql_as_string(value=value2, convert_enum=convert_enum)}"
+ for key2, value2 in value[FILTERS_KEY].items()
+ ]
)
lines.append(f"{offset_str}{key_str}({filters_str}) " + "{")
else:
lines.append(f"{offset_str}{key_str} " + "{")
- lines.extend(render_query_block(data=value, offset=offset + indentation, indentation=indentation))
+ lines.extend(
+ render_query_block(
+ data=value, offset=offset + indentation, indentation=indentation, convert_enum=convert_enum
+ )
+ )
lines.append(offset_str + "}")
return lines
-def render_input_block(data: dict, offset: int = 4, indentation: int = 4) -> list[str]:
+def render_input_block(data: dict, offset: int = 4, indentation: int = 4, convert_enum: bool = False) -> list[str]:
offset_str = " " * offset
lines = []
for key, value in data.items():
if isinstance(value, dict):
lines.append(f"{offset_str}{key}: " + "{")
- lines.extend(render_input_block(data=value, offset=offset + indentation, indentation=indentation))
+ lines.extend(
+ render_input_block(
+ data=value, offset=offset + indentation, indentation=indentation, convert_enum=convert_enum
+ )
+ )
lines.append(offset_str + "}")
elif isinstance(value, list):
lines.append(f"{offset_str}{key}: " + "[")
@@ -90,14 +113,17 @@ def render_input_block(data: dict, offset: int = 4, indentation: int = 4) -> lis
data=item,
offset=offset + indentation + indentation,
indentation=indentation,
+ convert_enum=convert_enum,
)
)
lines.append(f"{offset_str}{' ' * indentation}" + "},")
else:
- lines.append(f"{offset_str}{' ' * indentation}{convert_to_graphql_as_string(item)},")
+ lines.append(
+ f"{offset_str}{' ' * indentation}{convert_to_graphql_as_string(value=item, convert_enum=convert_enum)},"
+ )
lines.append(offset_str + "]")
else:
- lines.append(f"{offset_str}{key}: {convert_to_graphql_as_string(value)}")
+ lines.append(f"{offset_str}{key}: {convert_to_graphql_as_string(value=value, convert_enum=convert_enum)}")
return lines
@@ -127,9 +153,13 @@ def render_first_line(self) -> str:
class Query(BaseGraphQLQuery):
query_type = "query"
- def render(self) -> str:
+ def render(self, convert_enum: bool = False) -> str:
lines = [self.render_first_line()]
- lines.extend(render_query_block(data=self.query, indentation=self.indentation, offset=self.indentation))
+ lines.extend(
+ render_query_block(
+ data=self.query, indentation=self.indentation, offset=self.indentation, convert_enum=convert_enum
+ )
+ )
lines.append("}")
return "\n" + "\n".join(lines) + "\n"
@@ -143,7 +173,7 @@ def __init__(self, *args: Any, mutation: str, input_data: dict, **kwargs: Any):
self.mutation = mutation
super().__init__(*args, **kwargs)
- def render(self) -> str:
+ def render(self, convert_enum: bool = False) -> str:
lines = [self.render_first_line()]
lines.append(" " * self.indentation + f"{self.mutation}(")
lines.extend(
@@ -151,6 +181,7 @@ def render(self) -> str:
data=self.input_data,
indentation=self.indentation,
offset=self.indentation * 2,
+ convert_enum=convert_enum,
)
)
lines.append(" " * self.indentation + "){")
@@ -159,6 +190,7 @@ def render(self) -> str:
data=self.query,
indentation=self.indentation,
offset=self.indentation * 2,
+ convert_enum=convert_enum,
)
)
lines.append(" " * self.indentation + "}")
diff --git a/infrahub_sdk/node.py b/infrahub_sdk/node.py
index fde6eb93..864abf1c 100644
--- a/infrahub_sdk/node.py
+++ b/infrahub_sdk/node.py
@@ -22,6 +22,7 @@
from typing_extensions import Self
from .client import InfrahubClient, InfrahubClientSync
+ from .context import RequestContext
from .schema import AttributeSchemaAPI, MainSchemaTypesAPI, RelationshipSchemaAPI
from .types import Order
@@ -769,6 +770,16 @@ def _init_attributes(self, data: dict | None = None) -> None:
Attribute(name=attr_name, schema=attr_schema, data=attr_data),
)
+ def _get_request_context(self, request_context: RequestContext | None = None) -> dict[str, Any] | None:
+ if request_context:
+ return request_context.model_dump(exclude_none=True)
+
+ client: InfrahubClient | InfrahubClientSync | None = getattr(self, "_client", None)
+ if not client or not client.request_context:
+ return None
+
+ return client.request_context.model_dump(exclude_none=True)
+
def _init_relationships(self, data: dict | None = None) -> None:
pass
@@ -797,7 +808,12 @@ def is_resource_pool(self) -> bool:
def get_raw_graphql_data(self) -> dict | None:
return self._data
- def _generate_input_data(self, exclude_unmodified: bool = False, exclude_hfid: bool = False) -> dict[str, dict]: # noqa: C901
+ def _generate_input_data( # noqa: C901
+ self,
+ exclude_unmodified: bool = False,
+ exclude_hfid: bool = False,
+ request_context: RequestContext | None = None,
+ ) -> dict[str, dict]:
"""Generate a dictionary that represent the input data required by a mutation.
Returns:
@@ -875,7 +891,15 @@ def _generate_input_data(self, exclude_unmodified: bool = False, exclude_hfid: b
elif self.hfid is not None and not exclude_hfid:
data["hfid"] = self.hfid
- return {"data": {"data": data}, "variables": variables, "mutation_variables": mutation_variables}
+ mutation_payload = {"data": data}
+ if context_data := self._get_request_context(request_context=request_context):
+ mutation_payload["context"] = context_data
+
+ return {
+ "data": mutation_payload,
+ "variables": variables,
+ "mutation_variables": mutation_variables,
+ }
@staticmethod
def _strip_unmodified_dict(data: dict, original_data: dict, variables: dict, item: str) -> None:
@@ -1132,8 +1156,11 @@ async def artifact_fetch(self, name: str) -> str | dict[str, Any]:
content = await self._client.object_store.get(identifier=artifact.storage_id.value) # type: ignore[attr-defined]
return content
- async def delete(self, timeout: int | None = None) -> None:
+ async def delete(self, timeout: int | None = None, request_context: RequestContext | None = None) -> None:
input_data = {"data": {"id": self.id}}
+ if context_data := self._get_request_context(request_context=request_context):
+ input_data["context"] = context_data
+
mutation_query = {"ok": None}
query = Mutation(
mutation=f"{self._schema.kind}Delete",
@@ -1148,12 +1175,16 @@ async def delete(self, timeout: int | None = None) -> None:
)
async def save(
- self, allow_upsert: bool = False, update_group_context: bool | None = None, timeout: int | None = None
+ self,
+ allow_upsert: bool = False,
+ update_group_context: bool | None = None,
+ timeout: int | None = None,
+ request_context: RequestContext | None = None,
) -> None:
if self._existing is False or allow_upsert is True:
- await self.create(allow_upsert=allow_upsert, timeout=timeout)
+ await self.create(allow_upsert=allow_upsert, timeout=timeout, request_context=request_context)
else:
- await self.update(timeout=timeout)
+ await self.update(timeout=timeout, request_context=request_context)
if update_group_context is None and self._client.mode == InfrahubClientMode.TRACKING:
update_group_context = True
@@ -1382,15 +1413,17 @@ async def _process_mutation_result(
await related_node.fetch(timeout=timeout)
setattr(self, rel_name, related_node)
- async def create(self, allow_upsert: bool = False, timeout: int | None = None) -> None:
+ async def create(
+ self, allow_upsert: bool = False, timeout: int | None = None, request_context: RequestContext | None = None
+ ) -> None:
mutation_query = self._generate_mutation_query()
if allow_upsert:
- input_data = self._generate_input_data(exclude_hfid=False)
+ input_data = self._generate_input_data(exclude_hfid=False, request_context=request_context)
mutation_name = f"{self._schema.kind}Upsert"
tracker = f"mutation-{str(self._schema.kind).lower()}-upsert"
else:
- input_data = self._generate_input_data(exclude_hfid=True)
+ input_data = self._generate_input_data(exclude_hfid=True, request_context=request_context)
mutation_name = f"{self._schema.kind}Create"
tracker = f"mutation-{str(self._schema.kind).lower()}-create"
query = Mutation(
@@ -1408,8 +1441,10 @@ async def create(self, allow_upsert: bool = False, timeout: int | None = None) -
)
await self._process_mutation_result(mutation_name=mutation_name, response=response, timeout=timeout)
- async def update(self, do_full_update: bool = False, timeout: int | None = None) -> None:
- input_data = self._generate_input_data(exclude_unmodified=not do_full_update)
+ async def update(
+ self, do_full_update: bool = False, timeout: int | None = None, request_context: RequestContext | None = None
+ ) -> None:
+ input_data = self._generate_input_data(exclude_unmodified=not do_full_update, request_context=request_context)
mutation_query = self._generate_mutation_query()
mutation_name = f"{self._schema.kind}Update"
@@ -1648,8 +1683,11 @@ def artifact_fetch(self, name: str) -> str | dict[str, Any]:
content = self._client.object_store.get(identifier=artifact.storage_id.value) # type: ignore[attr-defined]
return content
- def delete(self, timeout: int | None = None) -> None:
+ def delete(self, timeout: int | None = None, request_context: RequestContext | None = None) -> None:
input_data = {"data": {"id": self.id}}
+ if context_data := self._get_request_context(request_context=request_context):
+ input_data["context"] = context_data
+
mutation_query = {"ok": None}
query = Mutation(
mutation=f"{self._schema.kind}Delete",
@@ -1664,12 +1702,16 @@ def delete(self, timeout: int | None = None) -> None:
)
def save(
- self, allow_upsert: bool = False, update_group_context: bool | None = None, timeout: int | None = None
+ self,
+ allow_upsert: bool = False,
+ update_group_context: bool | None = None,
+ timeout: int | None = None,
+ request_context: RequestContext | None = None,
) -> None:
if self._existing is False or allow_upsert is True:
- self.create(allow_upsert=allow_upsert, timeout=timeout)
+ self.create(allow_upsert=allow_upsert, timeout=timeout, request_context=request_context)
else:
- self.update(timeout=timeout)
+ self.update(timeout=timeout, request_context=request_context)
if update_group_context is None and self._client.mode == InfrahubClientMode.TRACKING:
update_group_context = True
@@ -1893,15 +1935,17 @@ def _process_mutation_result(
related_node.fetch(timeout=timeout)
setattr(self, rel_name, related_node)
- def create(self, allow_upsert: bool = False, timeout: int | None = None) -> None:
+ def create(
+ self, allow_upsert: bool = False, timeout: int | None = None, request_context: RequestContext | None = None
+ ) -> None:
mutation_query = self._generate_mutation_query()
if allow_upsert:
- input_data = self._generate_input_data(exclude_hfid=False)
+ input_data = self._generate_input_data(exclude_hfid=False, request_context=request_context)
mutation_name = f"{self._schema.kind}Upsert"
tracker = f"mutation-{str(self._schema.kind).lower()}-upsert"
else:
- input_data = self._generate_input_data(exclude_hfid=True)
+ input_data = self._generate_input_data(exclude_hfid=True, request_context=request_context)
mutation_name = f"{self._schema.kind}Create"
tracker = f"mutation-{str(self._schema.kind).lower()}-create"
query = Mutation(
@@ -1920,8 +1964,10 @@ def create(self, allow_upsert: bool = False, timeout: int | None = None) -> None
)
self._process_mutation_result(mutation_name=mutation_name, response=response, timeout=timeout)
- def update(self, do_full_update: bool = False, timeout: int | None = None) -> None:
- input_data = self._generate_input_data(exclude_unmodified=not do_full_update)
+ def update(
+ self, do_full_update: bool = False, timeout: int | None = None, request_context: RequestContext | None = None
+ ) -> None:
+ input_data = self._generate_input_data(exclude_unmodified=not do_full_update, request_context=request_context)
mutation_query = self._generate_mutation_query()
mutation_name = f"{self._schema.kind}Update"
diff --git a/infrahub_sdk/protocols.py b/infrahub_sdk/protocols.py
index 14b04c7b..2ec1d0f3 100644
--- a/infrahub_sdk/protocols.py
+++ b/infrahub_sdk/protocols.py
@@ -29,6 +29,7 @@
StringOptional,
)
+# pylint: disable=too-many-ancestors
# ---------------------------------------------
# ASYNC
@@ -72,7 +73,7 @@ class CoreArtifactTarget(CoreNode):
class CoreBasePermission(CoreNode):
- decision: Enum
+ description: StringOptional
identifier: StringOptional
roles: RelationshipManager
@@ -107,7 +108,6 @@ class CoreGenericAccount(CoreNode):
label: StringOptional
description: StringOptional
account_type: Enum
- role: Enum
status: Dropdown
tokens: RelationshipManager
@@ -154,6 +154,10 @@ class CoreMenu(CoreNode):
children: RelationshipManager
+class CoreObjectTemplate(CoreNode):
+ template_name: String
+
+
class CoreProfile(CoreNode):
profile_name: String
profile_priority: IntegerOptional
@@ -199,6 +203,8 @@ class CoreValidator(CoreNode):
class CoreWebhook(CoreNode):
name: String
+ event_type: Enum
+ branch_scope: Dropdown
description: StringOptional
url: URL
validate_certificates: BooleanOptional
@@ -221,7 +227,7 @@ class CoreAccount(LineageOwner, LineageSource, CoreGenericAccount):
pass
-class CoreAccountGroup(CoreGroup):
+class CoreAccountGroup(LineageOwner, LineageSource, CoreGroup):
roles: RelationshipManager
@@ -349,8 +355,8 @@ class CoreGeneratorValidator(CoreValidator):
class CoreGlobalPermission(CoreBasePermission):
- name: String
action: Dropdown
+ decision: Enum
class CoreGraphQLQuery(CoreNode):
@@ -401,6 +407,7 @@ class CoreObjectPermission(CoreBasePermission):
namespace: String
name: String
action: Enum
+ decision: Enum
class CoreObjectThread(CoreThread):
@@ -537,7 +544,7 @@ class CoreArtifactTargetSync(CoreNodeSync):
class CoreBasePermissionSync(CoreNodeSync):
- decision: Enum
+ description: StringOptional
identifier: StringOptional
roles: RelationshipManagerSync
@@ -572,7 +579,6 @@ class CoreGenericAccountSync(CoreNodeSync):
label: StringOptional
description: StringOptional
account_type: Enum
- role: Enum
status: Dropdown
tokens: RelationshipManagerSync
@@ -619,6 +625,10 @@ class CoreMenuSync(CoreNodeSync):
children: RelationshipManagerSync
+class CoreObjectTemplateSync(CoreNodeSync):
+ template_name: String
+
+
class CoreProfileSync(CoreNodeSync):
profile_name: String
profile_priority: IntegerOptional
@@ -664,6 +674,8 @@ class CoreValidatorSync(CoreNodeSync):
class CoreWebhookSync(CoreNodeSync):
name: String
+ event_type: Enum
+ branch_scope: Dropdown
description: StringOptional
url: URL
validate_certificates: BooleanOptional
@@ -686,7 +698,7 @@ class CoreAccountSync(LineageOwnerSync, LineageSourceSync, CoreGenericAccountSyn
pass
-class CoreAccountGroupSync(CoreGroupSync):
+class CoreAccountGroupSync(LineageOwnerSync, LineageSourceSync, CoreGroupSync):
roles: RelationshipManagerSync
@@ -814,8 +826,8 @@ class CoreGeneratorValidatorSync(CoreValidatorSync):
class CoreGlobalPermissionSync(CoreBasePermissionSync):
- name: String
action: Dropdown
+ decision: Enum
class CoreGraphQLQuerySync(CoreNodeSync):
@@ -866,6 +878,7 @@ class CoreObjectPermissionSync(CoreBasePermissionSync):
namespace: String
name: String
action: Enum
+ decision: Enum
class CoreObjectThreadSync(CoreThreadSync):
diff --git a/infrahub_sdk/protocols_base.py b/infrahub_sdk/protocols_base.py
index 4c227117..c634d37f 100644
--- a/infrahub_sdk/protocols_base.py
+++ b/infrahub_sdk/protocols_base.py
@@ -5,6 +5,7 @@
if TYPE_CHECKING:
import ipaddress
+ from .context import RequestContext
from .schema import MainSchemaTypes
@@ -169,13 +170,23 @@ def extract(self, params: dict[str, str]) -> dict[str, Any]: ...
@runtime_checkable
class CoreNode(CoreNodeBase, Protocol):
- async def save(self, allow_upsert: bool = False, update_group_context: bool | None = None) -> None: ...
+ async def save(
+ self,
+ allow_upsert: bool = False,
+ update_group_context: bool | None = None,
+ timeout: int | None = None,
+ request_context: RequestContext | None = None,
+ ) -> None: ...
- async def delete(self) -> None: ...
+ async def delete(self, timeout: int | None = None, request_context: RequestContext | None = None) -> None: ...
- async def update(self, do_full_update: bool) -> None: ...
+ async def update(
+ self, do_full_update: bool, timeout: int | None = None, request_context: RequestContext | None = None
+ ) -> None: ...
- async def create(self, allow_upsert: bool = False) -> None: ...
+ async def create(
+ self, allow_upsert: bool = False, timeout: int | None = None, request_context: RequestContext | None = None
+ ) -> None: ...
async def add_relationships(self, relation_to_update: str, related_nodes: list[str]) -> None: ...
@@ -184,13 +195,23 @@ async def remove_relationships(self, relation_to_update: str, related_nodes: lis
@runtime_checkable
class CoreNodeSync(CoreNodeBase, Protocol):
- def save(self, allow_upsert: bool = False, update_group_context: bool | None = None) -> None: ...
-
- def delete(self) -> None: ...
-
- def update(self, do_full_update: bool) -> None: ...
-
- def create(self, allow_upsert: bool = False) -> None: ...
+ def save(
+ self,
+ allow_upsert: bool = False,
+ update_group_context: bool | None = None,
+ timeout: int | None = None,
+ request_context: RequestContext | None = None,
+ ) -> None: ...
+
+ def delete(self, timeout: int | None = None, request_context: RequestContext | None = None) -> None: ...
+
+ def update(
+ self, do_full_update: bool, timeout: int | None = None, request_context: RequestContext | None = None
+ ) -> None: ...
+
+ def create(
+ self, allow_upsert: bool = False, timeout: int | None = None, request_context: RequestContext | None = None
+ ) -> None: ...
def add_relationships(self, relation_to_update: str, related_nodes: list[str]) -> None: ...
diff --git a/infrahub_sdk/schema/__init__.py b/infrahub_sdk/schema/__init__.py
index 790b5873..9b23fe49 100644
--- a/infrahub_sdk/schema/__init__.py
+++ b/infrahub_sdk/schema/__init__.py
@@ -34,6 +34,7 @@
RelationshipSchemaAPI,
SchemaRoot,
SchemaRootAPI,
+ TemplateSchemaAPI,
)
if TYPE_CHECKING:
@@ -58,6 +59,7 @@
"RelationshipSchemaAPI",
"SchemaRoot",
"SchemaRootAPI",
+ "TemplateSchemaAPI",
]
@@ -78,8 +80,10 @@ class EnumMutation(str, Enum):
MainSchemaTypes: TypeAlias = Union[NodeSchema, GenericSchema]
-MainSchemaTypesAPI: TypeAlias = Union[NodeSchemaAPI, GenericSchemaAPI, ProfileSchemaAPI]
-MainSchemaTypesAll: TypeAlias = Union[NodeSchema, GenericSchema, NodeSchemaAPI, GenericSchemaAPI, ProfileSchemaAPI]
+MainSchemaTypesAPI: TypeAlias = Union[NodeSchemaAPI, GenericSchemaAPI, ProfileSchemaAPI, TemplateSchemaAPI]
+MainSchemaTypesAll: TypeAlias = Union[
+ NodeSchema, GenericSchema, NodeSchemaAPI, GenericSchemaAPI, ProfileSchemaAPI, TemplateSchemaAPI
+]
class InfrahubSchemaBase:
@@ -417,6 +421,10 @@ async def fetch(
profile = ProfileSchemaAPI(**profile_schema)
nodes[profile.kind] = profile
+ for template_schema in data.get("templates", []):
+ template = TemplateSchemaAPI(**template_schema)
+ nodes[template.kind] = template
+
return nodes
@@ -621,6 +629,10 @@ def fetch(
profile = ProfileSchemaAPI(**profile_schema)
nodes[profile.kind] = profile
+ for template_schema in data.get("templates", []):
+ template = TemplateSchemaAPI(**template_schema)
+ nodes[template.kind] = template
+
return nodes
def load(
diff --git a/infrahub_sdk/schema/main.py b/infrahub_sdk/schema/main.py
index 760d7430..57aaa890 100644
--- a/infrahub_sdk/schema/main.py
+++ b/infrahub_sdk/schema/main.py
@@ -31,6 +31,7 @@ class RelationshipKind(str, Enum):
GROUP = "Group"
HIERARCHY = "Hierarchy"
PROFILE = "Profile"
+ TEMPLATE = "Template"
class RelationshipDirection(str, Enum):
@@ -290,6 +291,7 @@ class BaseNodeSchema(BaseSchema):
branch: BranchSupportType | None = None
default_filter: str | None = None
generate_profile: bool | None = None
+ generate_template: bool | None = None
parent: str | None = None
children: str | None = None
@@ -308,6 +310,10 @@ class ProfileSchemaAPI(BaseSchema, BaseSchemaAttrRelAPI):
inherit_from: list[str] = Field(default_factory=list)
+class TemplateSchemaAPI(BaseSchema, BaseSchemaAttrRelAPI):
+ inherit_from: list[str] = Field(default_factory=list)
+
+
class NodeExtensionSchema(BaseModel):
model_config = ConfigDict(use_enum_values=True)
@@ -341,3 +347,4 @@ class SchemaRootAPI(BaseModel):
generics: list[GenericSchemaAPI] = Field(default_factory=list)
nodes: list[NodeSchemaAPI] = Field(default_factory=list)
profiles: list[ProfileSchemaAPI] = Field(default_factory=list)
+ templates: list[TemplateSchemaAPI] = Field(default_factory=list)
diff --git a/infrahub_sdk/task/__init__.py b/infrahub_sdk/task/__init__.py
new file mode 100644
index 00000000..60180315
--- /dev/null
+++ b/infrahub_sdk/task/__init__.py
@@ -0,0 +1,11 @@
+from __future__ import annotations
+
+from .models import Task, TaskFilter, TaskLog, TaskRelatedNode, TaskState
+
+__all__ = [
+ "Task",
+ "TaskFilter",
+ "TaskLog",
+ "TaskRelatedNode",
+ "TaskState",
+]
diff --git a/infrahub_sdk/task/constants.py b/infrahub_sdk/task/constants.py
new file mode 100644
index 00000000..13917ff5
--- /dev/null
+++ b/infrahub_sdk/task/constants.py
@@ -0,0 +1,3 @@
+from .models import TaskState
+
+FINAL_STATES = [TaskState.COMPLETED, TaskState.FAILED, TaskState.CANCELLED, TaskState.CRASHED]
diff --git a/infrahub_sdk/task/exceptions.py b/infrahub_sdk/task/exceptions.py
new file mode 100644
index 00000000..add4e72e
--- /dev/null
+++ b/infrahub_sdk/task/exceptions.py
@@ -0,0 +1,25 @@
+from __future__ import annotations
+
+
+class TaskError(Exception):
+ def __init__(self, message: str | None = None):
+ self.message = message
+ super().__init__(self.message)
+
+
+class TaskNotFoundError(TaskError):
+ def __init__(self, id: str):
+ self.message = f"Task with id {id} not found"
+ super().__init__(self.message)
+
+
+class TooManyTasksError(TaskError):
+ def __init__(self, expected_id: str, received_ids: list[str]):
+ self.message = f"Expected 1 task with id {expected_id}, but got {len(received_ids)}"
+ super().__init__(self.message)
+
+
+class TaskNotCompletedError(TaskError):
+ def __init__(self, id: str, message: str | None = None):
+ self.message = message or f"Task with id {id} is not completed"
+ super().__init__(self.message)
diff --git a/infrahub_sdk/task/manager.py b/infrahub_sdk/task/manager.py
new file mode 100644
index 00000000..910030dd
--- /dev/null
+++ b/infrahub_sdk/task/manager.py
@@ -0,0 +1,551 @@
+from __future__ import annotations
+
+import asyncio
+import time
+from typing import TYPE_CHECKING, Any
+
+from ..graphql import Query
+from .constants import FINAL_STATES
+from .exceptions import TaskNotCompletedError, TaskNotFoundError, TooManyTasksError
+from .models import Task, TaskFilter
+
+if TYPE_CHECKING:
+ from ..client import InfrahubClient, InfrahubClientSync
+
+
+class InfraHubTaskManagerBase:
+ @classmethod
+ def _generate_query(
+ cls,
+ filters: TaskFilter | None = None,
+ include_logs: bool = False,
+ include_related_nodes: bool = False,
+ offset: int | None = None,
+ limit: int | None = None,
+ count: bool = False,
+ ) -> Query:
+ query: dict[str, Any] = {
+ "InfrahubTask": {
+ "edges": {
+ "node": {
+ "id": None,
+ "title": None,
+ "state": None,
+ "progress": None,
+ "workflow": None,
+ "branch": None,
+ "created_at": None,
+ "updated_at": None,
+ }
+ }
+ }
+ }
+
+ if not filters and (offset or limit):
+ filters = TaskFilter(offset=offset, limit=limit)
+ elif filters and offset:
+ filters.offset = offset
+ elif filters and limit:
+ filters.limit = limit
+
+ if filters:
+ query["InfrahubTask"]["@filters"] = filters.to_dict()
+
+ if count:
+ query["InfrahubTask"]["count"] = None
+
+ if include_logs:
+ query["InfrahubTask"]["edges"]["node"]["logs"] = {
+ "edges": {
+ "node": {
+ "message": None,
+ "severity": None,
+ "timestamp": None,
+ }
+ }
+ }
+
+ if include_related_nodes:
+ query["InfrahubTask"]["edges"]["node"]["related_nodes"] = {"id": None, "kind": None}
+
+ return Query(query=query)
+
+ @classmethod
+ def _generate_count_query(cls, filters: TaskFilter | None = None) -> Query:
+ query: dict[str, Any] = {
+ "InfrahubTask": {
+ "count": None,
+ }
+ }
+ if filters:
+ query["InfrahubTask"]["@filters"] = filters.to_dict()
+
+ return Query(query=query)
+
+
+class InfrahubTaskManager(InfraHubTaskManagerBase):
+ client: InfrahubClient
+
+ def __init__(self, client: InfrahubClient):
+ self.client = client
+
+ async def count(self, filters: TaskFilter | None = None) -> int:
+ """Count the number of tasks.
+
+ Args:
+ filters: The filter to apply to the tasks. Defaults to None.
+
+ Returns:
+ The number of tasks.
+ """
+
+ query = self._generate_count_query(filters=filters)
+ response = await self.client.execute_graphql(
+ query=query.render(convert_enum=False), tracker="query-tasks-count"
+ )
+ return int(response["InfrahubTask"]["count"])
+
+ async def all(
+ self,
+ limit: int | None = None,
+ offset: int | None = None,
+ timeout: int | None = None,
+ parallel: bool = False,
+ include_logs: bool = False,
+ include_related_nodes: bool = False,
+ ) -> list[Task]:
+ """Get all tasks.
+
+ Args:
+ limit: The maximum number of tasks to return. Defaults to None.
+ offset: The offset to start the tasks from. Defaults to None.
+ timeout: The timeout to wait for the tasks to complete. Defaults to None.
+ parallel: Whether to query the tasks in parallel. Defaults to False.
+ include_logs: Whether to include the logs in the tasks. Defaults to False.
+ include_related_nodes: Whether to include the related nodes in the tasks. Defaults to False.
+
+ Returns:
+ A list of tasks.
+ """
+
+ return await self.filter(
+ limit=limit,
+ offset=offset,
+ timeout=timeout,
+ parallel=parallel,
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ )
+
+ async def filter(
+ self,
+ filter: TaskFilter | None = None,
+ limit: int | None = None,
+ offset: int | None = None,
+ timeout: int | None = None,
+ parallel: bool = False,
+ include_logs: bool = False,
+ include_related_nodes: bool = False,
+ ) -> list[Task]:
+ """Filter tasks.
+
+ Args:
+ filter: The filter to apply to the tasks. Defaults to None.
+ limit: The maximum number of tasks to return. Defaults to None.
+ offset: The offset to start the tasks from. Defaults to None.
+ timeout: The timeout to wait for the tasks to complete. Defaults to None.
+ parallel: Whether to query the tasks in parallel. Defaults to False.
+ include_logs: Whether to include the logs in the tasks. Defaults to False.
+ include_related_nodes: Whether to include the related nodes in the tasks. Defaults to False.
+
+ Returns:
+ A list of tasks.
+ """
+ if filter is None:
+ filter = TaskFilter()
+
+ if limit:
+ tasks, _ = await self.process_page(
+ self.client, self._generate_query(filters=filter, offset=offset, limit=limit, count=False), 1, timeout
+ )
+ return tasks
+
+ if parallel:
+ return await self.process_batch(
+ filters=filter,
+ timeout=timeout,
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ )
+
+ return await self.process_non_batch(
+ filters=filter,
+ offset=offset,
+ limit=limit,
+ timeout=timeout,
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ )
+
+ async def get(self, id: str, include_logs: bool = False, include_related_nodes: bool = False) -> Task:
+ tasks = await self.filter(
+ filter=TaskFilter(ids=[id]),
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ parallel=False,
+ )
+ if not tasks:
+ raise TaskNotFoundError(id=id)
+
+ if len(tasks) != 1:
+ raise TooManyTasksError(expected_id=id, received_ids=[task.id for task in tasks])
+
+ return tasks[0]
+
+ async def wait_for_completion(self, id: str, interval: int = 1, timeout: int = 60) -> Task:
+ """Wait for a task to complete.
+
+ Args:
+ id: The id of the task to wait for.
+ interval: The interval to check the task state. Defaults to 1.
+ timeout: The timeout to wait for the task to complete. Defaults to 60.
+
+ Raises:
+ TaskNotCompletedError: The task did not complete in the given timeout.
+
+ Returns:
+ The task object.
+ """
+ for _ in range(timeout // interval):
+ task = await self.get(id=id)
+ if task.state in FINAL_STATES:
+ return task
+ await asyncio.sleep(interval)
+ raise TaskNotCompletedError(id=id, message=f"Task {id} did not complete in {timeout} seconds")
+
+ @staticmethod
+ async def process_page(
+ client: InfrahubClient, query: Query, page_number: int, timeout: int | None = None
+ ) -> tuple[list[Task], int | None]:
+ """Process a single page of results.
+
+ Args:
+ client: The client to use to execute the query.
+ query: The query to execute.
+ page_number: The page number to process.
+ timeout: The timeout to wait for the query to complete. Defaults to None.
+
+ Returns:
+ A tuple containing a list of tasks and the count of tasks.
+ """
+
+ response = await client.execute_graphql(
+ query=query.render(convert_enum=False),
+ tracker=f"query-tasks-page{page_number}",
+ timeout=timeout,
+ )
+ count = response["InfrahubTask"].get("count", None)
+ return [Task.from_graphql(task["node"]) for task in response["InfrahubTask"]["edges"]], count
+
+ async def process_batch(
+ self,
+ filters: TaskFilter | None = None,
+ timeout: int | None = None,
+ include_logs: bool = False,
+ include_related_nodes: bool = False,
+ ) -> list[Task]:
+ """Process queries in parallel mode."""
+ pagination_size = self.client.pagination_size
+ tasks = []
+ batch_process = await self.client.create_batch()
+ count = await self.count(filters=filters)
+ total_pages = (count + pagination_size - 1) // pagination_size
+
+ for page_number in range(1, total_pages + 1):
+ page_offset = (page_number - 1) * pagination_size
+ query = self._generate_query(
+ filters=filters,
+ offset=page_offset,
+ limit=pagination_size,
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ count=False,
+ )
+ batch_process.add(
+ task=self.process_page, client=self.client, query=query, page_number=page_number, timeout=timeout
+ )
+
+ async for _, (new_tasks, _) in batch_process.execute():
+ tasks.extend(new_tasks)
+
+ return tasks
+
+ async def process_non_batch(
+ self,
+ filters: TaskFilter | None = None,
+ offset: int | None = None,
+ limit: int | None = None,
+ timeout: int | None = None,
+ include_logs: bool = False,
+ include_related_nodes: bool = False,
+ ) -> list[Task]:
+ """Process queries without parallel mode."""
+ tasks = []
+ has_remaining_items = True
+ page_number = 1
+
+ while has_remaining_items:
+ page_offset = (page_number - 1) * self.client.pagination_size
+ query = self._generate_query(
+ filters=filters,
+ offset=page_offset,
+ limit=self.client.pagination_size,
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ count=True,
+ )
+ new_tasks, count = await self.process_page(
+ client=self.client, query=query, page_number=page_number, timeout=timeout
+ )
+ if count is None:
+ raise ValueError("Count is None, a value must be retrieve from the query")
+
+ tasks.extend(new_tasks)
+ remaining_items = count - (page_offset + self.client.pagination_size)
+ if remaining_items < 0 or offset is not None or limit is not None:
+ has_remaining_items = False
+ page_number += 1
+ return tasks
+
+
+class InfrahubTaskManagerSync(InfraHubTaskManagerBase):
+ client: InfrahubClientSync
+
+ def __init__(self, client: InfrahubClientSync):
+ self.client = client
+
+ def count(self, filters: TaskFilter | None = None) -> int:
+ """Count the number of tasks.
+
+ Args:
+ filters: The filter to apply to the tasks. Defaults to None.
+
+ Returns:
+ The number of tasks.
+ """
+
+ query = self._generate_count_query(filters=filters)
+ response = self.client.execute_graphql(query=query.render(convert_enum=False), tracker="query-tasks-count")
+ return int(response["InfrahubTask"]["count"])
+
+ def all(
+ self,
+ limit: int | None = None,
+ offset: int | None = None,
+ timeout: int | None = None,
+ parallel: bool = False,
+ include_logs: bool = False,
+ include_related_nodes: bool = False,
+ ) -> list[Task]:
+ """Get all tasks.
+
+ Args:
+ limit: The maximum number of tasks to return. Defaults to None.
+ offset: The offset to start the tasks from. Defaults to None.
+ timeout: The timeout to wait for the tasks to complete. Defaults to None.
+ parallel: Whether to query the tasks in parallel. Defaults to False.
+ include_logs: Whether to include the logs in the tasks. Defaults to False.
+ include_related_nodes: Whether to include the related nodes in the tasks. Defaults to False.
+
+ Returns:
+ A list of tasks.
+ """
+
+ return self.filter(
+ limit=limit,
+ offset=offset,
+ timeout=timeout,
+ parallel=parallel,
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ )
+
+ def filter(
+ self,
+ filter: TaskFilter | None = None,
+ limit: int | None = None,
+ offset: int | None = None,
+ timeout: int | None = None,
+ parallel: bool = False,
+ include_logs: bool = False,
+ include_related_nodes: bool = False,
+ ) -> list[Task]:
+ """Filter tasks.
+
+ Args:
+ filter: The filter to apply to the tasks. Defaults to None.
+ limit: The maximum number of tasks to return. Defaults to None.
+ offset: The offset to start the tasks from. Defaults to None.
+ timeout: The timeout to wait for the tasks to complete. Defaults to None.
+ parallel: Whether to query the tasks in parallel. Defaults to False.
+ include_logs: Whether to include the logs in the tasks. Defaults to False.
+ include_related_nodes: Whether to include the related nodes in the tasks. Defaults to False.
+
+ Returns:
+ A list of tasks.
+ """
+ if filter is None:
+ filter = TaskFilter()
+
+ if limit:
+ tasks, _ = self.process_page(
+ self.client, self._generate_query(filters=filter, offset=offset, limit=limit, count=False), 1, timeout
+ )
+ return tasks
+
+ if parallel:
+ return self.process_batch(
+ filters=filter,
+ timeout=timeout,
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ )
+
+ return self.process_non_batch(
+ filters=filter,
+ offset=offset,
+ limit=limit,
+ timeout=timeout,
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ )
+
+ def get(self, id: str, include_logs: bool = False, include_related_nodes: bool = False) -> Task:
+ tasks = self.filter(
+ filter=TaskFilter(ids=[id]),
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ parallel=False,
+ )
+ if not tasks:
+ raise TaskNotFoundError(id=id)
+
+ if len(tasks) != 1:
+ raise TooManyTasksError(expected_id=id, received_ids=[task.id for task in tasks])
+
+ return tasks[0]
+
+ def wait_for_completion(self, id: str, interval: int = 1, timeout: int = 60) -> Task:
+ """Wait for a task to complete.
+
+ Args:
+ id: The id of the task to wait for.
+ interval: The interval to check the task state. Defaults to 1.
+ timeout: The timeout to wait for the task to complete. Defaults to 60.
+
+ Raises:
+ TaskNotCompletedError: The task did not complete in the given timeout.
+
+ Returns:
+ The task object.
+ """
+ for _ in range(timeout // interval):
+ task = self.get(id=id)
+ if task.state in FINAL_STATES:
+ return task
+ time.sleep(interval)
+ raise TaskNotCompletedError(id=id, message=f"Task {id} did not complete in {timeout} seconds")
+
+ @staticmethod
+ def process_page(
+ client: InfrahubClientSync, query: Query, page_number: int, timeout: int | None = None
+ ) -> tuple[list[Task], int | None]:
+ """Process a single page of results.
+
+ Args:
+ client: The client to use to execute the query.
+ query: The query to execute.
+ page_number: The page number to process.
+ timeout: The timeout to wait for the query to complete. Defaults to None.
+
+ Returns:
+ A tuple containing a list of tasks and the count of tasks.
+ """
+
+ response = client.execute_graphql(
+ query=query.render(convert_enum=False),
+ tracker=f"query-tasks-page{page_number}",
+ timeout=timeout,
+ )
+ count = response["InfrahubTask"].get("count", None)
+ return [Task.from_graphql(task["node"]) for task in response["InfrahubTask"]["edges"]], count
+
+ def process_batch(
+ self,
+ filters: TaskFilter | None = None,
+ timeout: int | None = None,
+ include_logs: bool = False,
+ include_related_nodes: bool = False,
+ ) -> list[Task]:
+ """Process queries in parallel mode."""
+ pagination_size = self.client.pagination_size
+ tasks = []
+ batch_process = self.client.create_batch()
+ count = self.count(filters=filters)
+ total_pages = (count + pagination_size - 1) // pagination_size
+
+ for page_number in range(1, total_pages + 1):
+ page_offset = (page_number - 1) * pagination_size
+ query = self._generate_query(
+ filters=filters,
+ offset=page_offset,
+ limit=pagination_size,
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ count=False,
+ )
+ batch_process.add(
+ task=self.process_page, client=self.client, query=query, page_number=page_number, timeout=timeout
+ )
+
+ for _, (new_tasks, _) in batch_process.execute():
+ tasks.extend(new_tasks)
+
+ return tasks
+
+ def process_non_batch(
+ self,
+ filters: TaskFilter | None = None,
+ offset: int | None = None,
+ limit: int | None = None,
+ timeout: int | None = None,
+ include_logs: bool = False,
+ include_related_nodes: bool = False,
+ ) -> list[Task]:
+ """Process queries without parallel mode."""
+ tasks = []
+ has_remaining_items = True
+ page_number = 1
+
+ while has_remaining_items:
+ page_offset = (page_number - 1) * self.client.pagination_size
+ query = self._generate_query(
+ filters=filters,
+ offset=page_offset,
+ limit=self.client.pagination_size,
+ include_logs=include_logs,
+ include_related_nodes=include_related_nodes,
+ count=True,
+ )
+ new_tasks, count = self.process_page(
+ client=self.client, query=query, page_number=page_number, timeout=timeout
+ )
+ if count is None:
+ raise ValueError("Count is None, a value must be retrieve from the query")
+
+ tasks.extend(new_tasks)
+ remaining_items = count - (page_offset + self.client.pagination_size)
+ if remaining_items < 0 or offset is not None or limit is not None:
+ has_remaining_items = False
+ page_number += 1
+ return tasks
diff --git a/infrahub_sdk/task/models.py b/infrahub_sdk/task/models.py
new file mode 100644
index 00000000..266f6a4a
--- /dev/null
+++ b/infrahub_sdk/task/models.py
@@ -0,0 +1,74 @@
+from __future__ import annotations
+
+from datetime import datetime
+from enum import Enum
+
+from pydantic import BaseModel, Field
+
+
+class TaskState(str, Enum):
+ SCHEDULED = "SCHEDULED"
+ PENDING = "PENDING"
+ RUNNING = "RUNNING"
+ COMPLETED = "COMPLETED"
+ FAILED = "FAILED"
+ CANCELLED = "CANCELLED"
+ CRASHED = "CRASHED"
+ PAUSED = "PAUSED"
+ CANCELLING = "CANCELLING"
+
+
+class TaskLog(BaseModel):
+ message: str
+ severity: str
+ timestamp: datetime
+
+
+class TaskRelatedNode(BaseModel):
+ id: str
+ kind: str
+
+
+class Task(BaseModel):
+ id: str
+ title: str
+ state: TaskState
+ progress: float | None = None
+ workflow: str | None = None
+ branch: str | None = None
+ # start_time: datetime # Is it still required
+ created_at: datetime
+ updated_at: datetime
+ parameters: dict | None = None
+ tags: list[str] | None = None
+ related_nodes: list[TaskRelatedNode] = Field(default_factory=list)
+ logs: list[TaskLog] = Field(default_factory=list)
+
+ @classmethod
+ def from_graphql(cls, data: dict) -> Task:
+ related_nodes: list[TaskRelatedNode] = []
+ logs: list[TaskLog] = []
+
+ if data.get("related_nodes"):
+ related_nodes = [TaskRelatedNode(**item) for item in data["related_nodes"]]
+ del data["related_nodes"]
+
+ if data.get("logs"):
+ logs = [TaskLog(**item["node"]) for item in data["logs"]["edges"]]
+ del data["logs"]
+
+ return cls(**data, related_nodes=related_nodes, logs=logs)
+
+
+class TaskFilter(BaseModel):
+ ids: list[str] | None = None
+ q: str | None = None
+ branch: str | None = None
+ state: list[TaskState] | None = None
+ workflow: list[str] | None = None
+ limit: int | None = None
+ offset: int | None = None
+ related_node__ids: list[str] | None = None
+
+ def to_dict(self) -> dict:
+ return self.model_dump(exclude_none=True)
diff --git a/infrahub_sdk/timestamp.py b/infrahub_sdk/timestamp.py
index 5a2f58d5..ffeaf214 100644
--- a/infrahub_sdk/timestamp.py
+++ b/infrahub_sdk/timestamp.py
@@ -1,9 +1,15 @@
from __future__ import annotations
import re
+import warnings
+from datetime import datetime, timezone
+from typing import Literal
-import pendulum
-from pendulum.datetime import DateTime
+from whenever import Date, Instant, LocalDateTime, OffsetDateTime, Time, ZonedDateTime
+
+from .exceptions import TimestampFormatError
+
+UTC = timezone.utc # Required for older versions of Python
REGEX_MAPPING = {
"seconds": r"(\d+)(s|sec|second|seconds)",
@@ -12,80 +18,183 @@
}
-class TimestampFormatError(ValueError): ...
-
-
class Timestamp:
- def __init__(self, value: str | DateTime | Timestamp | None = None):
- if value and isinstance(value, DateTime):
- self.obj = value
+ _obj: ZonedDateTime
+
+ def __init__(self, value: str | ZonedDateTime | Timestamp | None = None):
+ if value and isinstance(value, ZonedDateTime):
+ self._obj = value
elif value and isinstance(value, self.__class__):
- self.obj = value.obj
+ self._obj = value._obj
elif isinstance(value, str):
- self.obj = self._parse_string(value)
+ self._obj = self._parse_string(value)
else:
- self.obj = DateTime.now(tz="UTC")
+ self._obj = ZonedDateTime.now("UTC").round(unit="microsecond")
+
+ @property
+ def obj(self) -> ZonedDateTime:
+ warnings.warn(
+ "Direct access to obj property is deprecated. Use to_string(), to_timestamp(), or to_datetime() instead.",
+ UserWarning,
+ stacklevel=2,
+ )
+ return self._obj
@classmethod
- def _parse_string(cls, value: str) -> DateTime:
+ def _parse_string(cls, value: str) -> ZonedDateTime:
+ try:
+ zoned_date = ZonedDateTime.parse_common_iso(value)
+ return zoned_date
+ except ValueError:
+ pass
+
+ try:
+ instant_date = Instant.parse_common_iso(value)
+ return instant_date.to_tz("UTC")
+ except ValueError:
+ pass
+
+ try:
+ local_date_time = LocalDateTime.parse_common_iso(value)
+ return local_date_time.assume_utc().to_tz("UTC")
+ except ValueError:
+ pass
+
try:
- parsed_date = pendulum.parse(value)
- if isinstance(parsed_date, DateTime):
- return parsed_date
- except (pendulum.parsing.exceptions.ParserError, ValueError):
+ offset_date_time = OffsetDateTime.parse_common_iso(value)
+ return offset_date_time.to_tz("UTC")
+ except ValueError:
pass
- params = {}
+ try:
+ date = Date.parse_common_iso(value)
+ local_date = date.at(Time(12, 00))
+ return local_date.assume_tz("UTC", disambiguate="compatible")
+ except ValueError:
+ pass
+
+ params: dict[str, float] = {}
for key, regex in REGEX_MAPPING.items():
match = re.search(regex, value)
if match:
- params[key] = int(match.group(1))
+ params[key] = float(match.group(1))
- if not params:
- raise TimestampFormatError(f"Invalid time format for {value}")
+ if params:
+ return ZonedDateTime.now("UTC").subtract(**params) # type: ignore[call-overload]
- return DateTime.now(tz="UTC").subtract(**params)
+ raise TimestampFormatError(f"Invalid time format for {value}")
def __repr__(self) -> str:
return f"Timestamp: {self.to_string()}"
def to_string(self, with_z: bool = True) -> str:
- iso8601_string = self.obj.to_iso8601_string()
- if not with_z and iso8601_string[-1] == "Z":
- iso8601_string = iso8601_string[:-1] + "+00:00"
- return iso8601_string
+ time_str = self.to_datetime().isoformat(timespec="microseconds")
+ if with_z and time_str.endswith("+00:00"):
+ time_str = time_str[:-6]
+ time_str += "Z"
+ return time_str
def to_timestamp(self) -> int:
- return self.obj.int_timestamp
+ return self._obj.timestamp()
+
+ def to_datetime(self) -> datetime:
+ return self._obj.py_datetime()
+
+ def get_obj(self) -> ZonedDateTime:
+ return self._obj
def __eq__(self, other: object) -> bool:
if not isinstance(other, Timestamp):
return NotImplemented
- return self.obj == other.obj
+ return self._obj == other._obj
def __lt__(self, other: object) -> bool:
if not isinstance(other, Timestamp):
return NotImplemented
- return self.obj < other.obj
+ return self._obj < other._obj
def __gt__(self, other: object) -> bool:
if not isinstance(other, Timestamp):
return NotImplemented
- return self.obj > other.obj
+ return self._obj > other._obj
def __le__(self, other: object) -> bool:
if not isinstance(other, Timestamp):
return NotImplemented
- return self.obj <= other.obj
+ return self._obj <= other._obj
def __ge__(self, other: object) -> bool:
if not isinstance(other, Timestamp):
return NotImplemented
- return self.obj >= other.obj
+ return self._obj >= other._obj
def __hash__(self) -> int:
return hash(self.to_string())
def add_delta(self, hours: int = 0, minutes: int = 0, seconds: int = 0, microseconds: int = 0) -> Timestamp:
- time = self.obj.add(hours=hours, minutes=minutes, seconds=seconds, microseconds=microseconds)
- return Timestamp(time)
+ warnings.warn(
+ "add_delta() is deprecated. Use add() instead.",
+ UserWarning,
+ stacklevel=2,
+ )
+ return self.add(hours=hours, minutes=minutes, seconds=seconds, microseconds=microseconds)
+
+ def add(
+ self,
+ years: int = 0,
+ months: int = 0,
+ weeks: int = 0,
+ days: int = 0,
+ hours: float = 0,
+ minutes: float = 0,
+ seconds: float = 0,
+ milliseconds: float = 0,
+ microseconds: float = 0,
+ nanoseconds: int = 0,
+ disambiguate: Literal["compatible"] = "compatible",
+ ) -> Timestamp:
+ return Timestamp(
+ self._obj.add(
+ years=years,
+ months=months,
+ weeks=weeks,
+ days=days,
+ hours=hours,
+ minutes=minutes,
+ seconds=seconds,
+ milliseconds=milliseconds,
+ microseconds=microseconds,
+ nanoseconds=nanoseconds,
+ disambiguate=disambiguate,
+ )
+ )
+
+ def subtract(
+ self,
+ years: int = 0,
+ months: int = 0,
+ weeks: int = 0,
+ days: int = 0,
+ hours: float = 0,
+ minutes: float = 0,
+ seconds: float = 0,
+ milliseconds: float = 0,
+ microseconds: float = 0,
+ nanoseconds: int = 0,
+ disambiguate: Literal["compatible"] = "compatible",
+ ) -> Timestamp:
+ return Timestamp(
+ self._obj.subtract(
+ years=years,
+ months=months,
+ weeks=weeks,
+ days=days,
+ hours=hours,
+ minutes=minutes,
+ seconds=seconds,
+ milliseconds=milliseconds,
+ microseconds=microseconds,
+ nanoseconds=nanoseconds,
+ disambiguate=disambiguate,
+ )
+ )
diff --git a/infrahub_sdk/utils.py b/infrahub_sdk/utils.py
index 2627a062..a45a65aa 100644
--- a/infrahub_sdk/utils.py
+++ b/infrahub_sdk/utils.py
@@ -17,10 +17,12 @@
from infrahub_sdk.repository import GitRepoManager
-from .exceptions import FileNotValidError, JsonDecodeError
+from .exceptions import FileNotValidError, JsonDecodeError, TimestampFormatError
+from .timestamp import Timestamp
if TYPE_CHECKING:
from graphql import GraphQLResolveInfo
+ from whenever import TimeDelta
def base36encode(number: int) -> str:
@@ -367,3 +369,29 @@ def get_user_permissions(data: list[dict]) -> dict:
groups[group_name] = permissions
return groups
+
+
+def calculate_time_diff(value: str) -> str | None:
+ """Calculate the time in human format between a timedate in string format and now."""
+ try:
+ time_value = Timestamp(value)
+ except TimestampFormatError:
+ return None
+
+ delta: TimeDelta = Timestamp().get_obj().difference(time_value.get_obj())
+ (hrs, mins, secs, nanos) = delta.in_hrs_mins_secs_nanos()
+
+ if nanos and nanos > 500_000_000:
+ secs += 1
+
+ if hrs and hrs < 24 and mins:
+ return f"{hrs}h {mins}m and {secs}s ago"
+ if hrs and hrs > 24:
+ remaining_hrs = hrs % 24
+ days = int((hrs - remaining_hrs) / 24)
+ return f"{days}d and {remaining_hrs}h ago"
+ if hrs == 0 and mins and secs:
+ return f"{mins}m and {secs}s ago"
+ if hrs == 0 and mins == 0 and secs:
+ return f"{secs}s ago"
+ return "now"
diff --git a/poetry.lock b/poetry.lock
index d433ec45..281e570f 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
[[package]]
name = "annotated-types"
@@ -1021,105 +1021,6 @@ files = [
{file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
]
-[[package]]
-name = "pendulum"
-version = "3.0.0"
-description = "Python datetimes made easy"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "pendulum-3.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2cf9e53ef11668e07f73190c805dbdf07a1939c3298b78d5a9203a86775d1bfd"},
- {file = "pendulum-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fb551b9b5e6059377889d2d878d940fd0bbb80ae4810543db18e6f77b02c5ef6"},
- {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c58227ac260d5b01fc1025176d7b31858c9f62595737f350d22124a9a3ad82d"},
- {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60fb6f415fea93a11c52578eaa10594568a6716602be8430b167eb0d730f3332"},
- {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b69f6b4dbcb86f2c2fe696ba991e67347bcf87fe601362a1aba6431454b46bde"},
- {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:138afa9c373ee450ede206db5a5e9004fd3011b3c6bbe1e57015395cd076a09f"},
- {file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:83d9031f39c6da9677164241fd0d37fbfc9dc8ade7043b5d6d62f56e81af8ad2"},
- {file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c2308af4033fa534f089595bcd40a95a39988ce4059ccd3dc6acb9ef14ca44a"},
- {file = "pendulum-3.0.0-cp310-none-win_amd64.whl", hash = "sha256:9a59637cdb8462bdf2dbcb9d389518c0263799189d773ad5c11db6b13064fa79"},
- {file = "pendulum-3.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3725245c0352c95d6ca297193192020d1b0c0f83d5ee6bb09964edc2b5a2d508"},
- {file = "pendulum-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c035f03a3e565ed132927e2c1b691de0dbf4eb53b02a5a3c5a97e1a64e17bec"},
- {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:597e66e63cbd68dd6d58ac46cb7a92363d2088d37ccde2dae4332ef23e95cd00"},
- {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99a0f8172e19f3f0c0e4ace0ad1595134d5243cf75985dc2233e8f9e8de263ca"},
- {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:77d8839e20f54706aed425bec82a83b4aec74db07f26acd039905d1237a5e1d4"},
- {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afde30e8146292b059020fbc8b6f8fd4a60ae7c5e6f0afef937bbb24880bdf01"},
- {file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:660434a6fcf6303c4efd36713ca9212c753140107ee169a3fc6c49c4711c2a05"},
- {file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dee9e5a48c6999dc1106eb7eea3e3a50e98a50651b72c08a87ee2154e544b33e"},
- {file = "pendulum-3.0.0-cp311-none-win_amd64.whl", hash = "sha256:d4cdecde90aec2d67cebe4042fd2a87a4441cc02152ed7ed8fb3ebb110b94ec4"},
- {file = "pendulum-3.0.0-cp311-none-win_arm64.whl", hash = "sha256:773c3bc4ddda2dda9f1b9d51fe06762f9200f3293d75c4660c19b2614b991d83"},
- {file = "pendulum-3.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:409e64e41418c49f973d43a28afe5df1df4f1dd87c41c7c90f1a63f61ae0f1f7"},
- {file = "pendulum-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a38ad2121c5ec7c4c190c7334e789c3b4624798859156b138fcc4d92295835dc"},
- {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fde4d0b2024b9785f66b7f30ed59281bd60d63d9213cda0eb0910ead777f6d37"},
- {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b2c5675769fb6d4c11238132962939b960fcb365436b6d623c5864287faa319"},
- {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8af95e03e066826f0f4c65811cbee1b3123d4a45a1c3a2b4fc23c4b0dff893b5"},
- {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2165a8f33cb15e06c67070b8afc87a62b85c5a273e3aaa6bc9d15c93a4920d6f"},
- {file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ad5e65b874b5e56bd942546ea7ba9dd1d6a25121db1c517700f1c9de91b28518"},
- {file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17fe4b2c844bbf5f0ece69cfd959fa02957c61317b2161763950d88fed8e13b9"},
- {file = "pendulum-3.0.0-cp312-none-win_amd64.whl", hash = "sha256:78f8f4e7efe5066aca24a7a57511b9c2119f5c2b5eb81c46ff9222ce11e0a7a5"},
- {file = "pendulum-3.0.0-cp312-none-win_arm64.whl", hash = "sha256:28f49d8d1e32aae9c284a90b6bb3873eee15ec6e1d9042edd611b22a94ac462f"},
- {file = "pendulum-3.0.0-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d4e2512f4e1a4670284a153b214db9719eb5d14ac55ada5b76cbdb8c5c00399d"},
- {file = "pendulum-3.0.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:3d897eb50883cc58d9b92f6405245f84b9286cd2de6e8694cb9ea5cb15195a32"},
- {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e169cc2ca419517f397811bbe4589cf3cd13fca6dc38bb352ba15ea90739ebb"},
- {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f17c3084a4524ebefd9255513692f7e7360e23c8853dc6f10c64cc184e1217ab"},
- {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:826d6e258052715f64d05ae0fc9040c0151e6a87aae7c109ba9a0ed930ce4000"},
- {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2aae97087872ef152a0c40e06100b3665d8cb86b59bc8471ca7c26132fccd0f"},
- {file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ac65eeec2250d03106b5e81284ad47f0d417ca299a45e89ccc69e36130ca8bc7"},
- {file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a5346d08f3f4a6e9e672187faa179c7bf9227897081d7121866358af369f44f9"},
- {file = "pendulum-3.0.0-cp37-none-win_amd64.whl", hash = "sha256:235d64e87946d8f95c796af34818c76e0f88c94d624c268693c85b723b698aa9"},
- {file = "pendulum-3.0.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:6a881d9c2a7f85bc9adafcfe671df5207f51f5715ae61f5d838b77a1356e8b7b"},
- {file = "pendulum-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d7762d2076b9b1cb718a6631ad6c16c23fc3fac76cbb8c454e81e80be98daa34"},
- {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e8e36a8130819d97a479a0e7bf379b66b3b1b520e5dc46bd7eb14634338df8c"},
- {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7dc843253ac373358ffc0711960e2dd5b94ab67530a3e204d85c6e8cb2c5fa10"},
- {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a78ad3635d609ceb1e97d6aedef6a6a6f93433ddb2312888e668365908c7120"},
- {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b30a137e9e0d1f751e60e67d11fc67781a572db76b2296f7b4d44554761049d6"},
- {file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c95984037987f4a457bb760455d9ca80467be792236b69d0084f228a8ada0162"},
- {file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d29c6e578fe0f893766c0d286adbf0b3c726a4e2341eba0917ec79c50274ec16"},
- {file = "pendulum-3.0.0-cp38-none-win_amd64.whl", hash = "sha256:deaba8e16dbfcb3d7a6b5fabdd5a38b7c982809567479987b9c89572df62e027"},
- {file = "pendulum-3.0.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b11aceea5b20b4b5382962b321dbc354af0defe35daa84e9ff3aae3c230df694"},
- {file = "pendulum-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90d4d504e82ad236afac9adca4d6a19e4865f717034fc69bafb112c320dcc8f"},
- {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:825799c6b66e3734227756fa746cc34b3549c48693325b8b9f823cb7d21b19ac"},
- {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad769e98dc07972e24afe0cff8d365cb6f0ebc7e65620aa1976fcfbcadc4c6f3"},
- {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6fc26907eb5fb8cc6188cc620bc2075a6c534d981a2f045daa5f79dfe50d512"},
- {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c717eab1b6d898c00a3e0fa7781d615b5c5136bbd40abe82be100bb06df7a56"},
- {file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3ddd1d66d1a714ce43acfe337190be055cdc221d911fc886d5a3aae28e14b76d"},
- {file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:822172853d7a9cf6da95d7b66a16c7160cb99ae6df55d44373888181d7a06edc"},
- {file = "pendulum-3.0.0-cp39-none-win_amd64.whl", hash = "sha256:840de1b49cf1ec54c225a2a6f4f0784d50bd47f68e41dc005b7f67c7d5b5f3ae"},
- {file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b1f74d1e6ffe5d01d6023870e2ce5c2191486928823196f8575dcc786e107b1"},
- {file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:729e9f93756a2cdfa77d0fc82068346e9731c7e884097160603872686e570f07"},
- {file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e586acc0b450cd21cbf0db6bae386237011b75260a3adceddc4be15334689a9a"},
- {file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22e7944ffc1f0099a79ff468ee9630c73f8c7835cd76fdb57ef7320e6a409df4"},
- {file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fa30af36bd8e50686846bdace37cf6707bdd044e5cb6e1109acbad3277232e04"},
- {file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:440215347b11914ae707981b9a57ab9c7b6983ab0babde07063c6ee75c0dc6e7"},
- {file = "pendulum-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:314c4038dc5e6a52991570f50edb2f08c339debdf8cea68ac355b32c4174e820"},
- {file = "pendulum-3.0.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5acb1d386337415f74f4d1955c4ce8d0201978c162927d07df8eb0692b2d8533"},
- {file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a789e12fbdefaffb7b8ac67f9d8f22ba17a3050ceaaa635cd1cc4645773a4b1e"},
- {file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:860aa9b8a888e5913bd70d819306749e5eb488e6b99cd6c47beb701b22bdecf5"},
- {file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5ebc65ea033ef0281368217fbf59f5cb05b338ac4dd23d60959c7afcd79a60a0"},
- {file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9fef18ab0386ef6a9ac7bad7e43ded42c83ff7ad412f950633854f90d59afa8"},
- {file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1c134ba2f0571d0b68b83f6972e2307a55a5a849e7dac8505c715c531d2a8795"},
- {file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:385680812e7e18af200bb9b4a49777418c32422d05ad5a8eb85144c4a285907b"},
- {file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9eec91cd87c59fb32ec49eb722f375bd58f4be790cae11c1b70fac3ee4f00da0"},
- {file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4386bffeca23c4b69ad50a36211f75b35a4deb6210bdca112ac3043deb7e494a"},
- {file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dfbcf1661d7146d7698da4b86e7f04814221081e9fe154183e34f4c5f5fa3bf8"},
- {file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:04a1094a5aa1daa34a6b57c865b25f691848c61583fb22722a4df5699f6bf74c"},
- {file = "pendulum-3.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5b0ec85b9045bd49dd3a3493a5e7ddfd31c36a2a60da387c419fa04abcaecb23"},
- {file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0a15b90129765b705eb2039062a6daf4d22c4e28d1a54fa260892e8c3ae6e157"},
- {file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:bb8f6d7acd67a67d6fedd361ad2958ff0539445ef51cbe8cd288db4306503cd0"},
- {file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd69b15374bef7e4b4440612915315cc42e8575fcda2a3d7586a0d88192d0c88"},
- {file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc00f8110db6898360c53c812872662e077eaf9c75515d53ecc65d886eec209a"},
- {file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:83a44e8b40655d0ba565a5c3d1365d27e3e6778ae2a05b69124db9e471255c4a"},
- {file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1a3604e9fbc06b788041b2a8b78f75c243021e0f512447806a6d37ee5214905d"},
- {file = "pendulum-3.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:92c307ae7accebd06cbae4729f0ba9fa724df5f7d91a0964b1b972a22baa482b"},
- {file = "pendulum-3.0.0.tar.gz", hash = "sha256:5d034998dea404ec31fae27af6b22cff1708f830a1ed7353be4d1019bb9f584e"},
-]
-
-[package.dependencies]
-python-dateutil = ">=2.6"
-tzdata = ">=2020.1"
-
-[package.extras]
-test = ["time-machine (>=2.6.0)"]
-
[[package]]
name = "pexpect"
version = "4.9.0"
@@ -1301,7 +1202,10 @@ files = [
[package.dependencies]
annotated-types = ">=0.6.0"
pydantic-core = "2.23.3"
-typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""}
+typing-extensions = [
+ {version = ">=4.6.1", markers = "python_version < \"3.13\""},
+ {version = ">=4.12.2", markers = "python_version >= \"3.13\""},
+]
[package.extras]
email = ["email-validator (>=2.0.0)"]
@@ -1553,20 +1457,6 @@ psutil = ["psutil (>=3.0)"]
setproctitle = ["setproctitle"]
testing = ["filelock"]
-[[package]]
-name = "python-dateutil"
-version = "2.9.0.post0"
-description = "Extensions to the standard Python datetime module"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
-files = [
- {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
- {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
-]
-
-[package.dependencies]
-six = ">=1.5"
-
[[package]]
name = "python-dotenv"
version = "1.0.1"
@@ -1711,29 +1601,29 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"]
[[package]]
name = "ruff"
-version = "0.8.6"
+version = "0.11.0"
description = "An extremely fast Python linter and code formatter, written in Rust."
optional = false
python-versions = ">=3.7"
files = [
- {file = "ruff-0.8.6-py3-none-linux_armv6l.whl", hash = "sha256:defed167955d42c68b407e8f2e6f56ba52520e790aba4ca707a9c88619e580e3"},
- {file = "ruff-0.8.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:54799ca3d67ae5e0b7a7ac234baa657a9c1784b48ec954a094da7c206e0365b1"},
- {file = "ruff-0.8.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e88b8f6d901477c41559ba540beeb5a671e14cd29ebd5683903572f4b40a9807"},
- {file = "ruff-0.8.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0509e8da430228236a18a677fcdb0c1f102dd26d5520f71f79b094963322ed25"},
- {file = "ruff-0.8.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:91a7ddb221779871cf226100e677b5ea38c2d54e9e2c8ed847450ebbdf99b32d"},
- {file = "ruff-0.8.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:248b1fb3f739d01d528cc50b35ee9c4812aa58cc5935998e776bf8ed5b251e75"},
- {file = "ruff-0.8.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:bc3c083c50390cf69e7e1b5a5a7303898966be973664ec0c4a4acea82c1d4315"},
- {file = "ruff-0.8.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52d587092ab8df308635762386f45f4638badb0866355b2b86760f6d3c076188"},
- {file = "ruff-0.8.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:61323159cf21bc3897674e5adb27cd9e7700bab6b84de40d7be28c3d46dc67cf"},
- {file = "ruff-0.8.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ae4478b1471fc0c44ed52a6fb787e641a2ac58b1c1f91763bafbc2faddc5117"},
- {file = "ruff-0.8.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0c000a471d519b3e6cfc9c6680025d923b4ca140ce3e4612d1a2ef58e11f11fe"},
- {file = "ruff-0.8.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:9257aa841e9e8d9b727423086f0fa9a86b6b420fbf4bf9e1465d1250ce8e4d8d"},
- {file = "ruff-0.8.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:45a56f61b24682f6f6709636949ae8cc82ae229d8d773b4c76c09ec83964a95a"},
- {file = "ruff-0.8.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:496dd38a53aa173481a7d8866bcd6451bd934d06976a2505028a50583e001b76"},
- {file = "ruff-0.8.6-py3-none-win32.whl", hash = "sha256:e169ea1b9eae61c99b257dc83b9ee6c76f89042752cb2d83486a7d6e48e8f764"},
- {file = "ruff-0.8.6-py3-none-win_amd64.whl", hash = "sha256:f1d70bef3d16fdc897ee290d7d20da3cbe4e26349f62e8a0274e7a3f4ce7a905"},
- {file = "ruff-0.8.6-py3-none-win_arm64.whl", hash = "sha256:7d7fc2377a04b6e04ffe588caad613d0c460eb2ecba4c0ccbbfe2bc973cbc162"},
- {file = "ruff-0.8.6.tar.gz", hash = "sha256:dcad24b81b62650b0eb8814f576fc65cfee8674772a6e24c9b747911801eeaa5"},
+ {file = "ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb"},
+ {file = "ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639"},
+ {file = "ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88"},
+ {file = "ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2"},
+ {file = "ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8"},
+ {file = "ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905"},
+ {file = "ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329"},
+ {file = "ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844"},
+ {file = "ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e"},
+ {file = "ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db"},
+ {file = "ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445"},
+ {file = "ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7"},
+ {file = "ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7"},
+ {file = "ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6"},
+ {file = "ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2"},
+ {file = "ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21"},
+ {file = "ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657"},
+ {file = "ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2"},
]
[[package]]
@@ -2116,6 +2006,89 @@ files = [
{file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
]
+[[package]]
+name = "whenever"
+version = "0.7.2"
+description = "Modern datetime library for Python"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "whenever-0.7.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a87864d3e7679dbedc55d3aa8c6cef5ffdc45520e16805f4c5a3cf71241fb986"},
+ {file = "whenever-0.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f37dc37d1bea611af16a3aaba5960038604ddfb4a592b1d72a3efccd5853b6da"},
+ {file = "whenever-0.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3da602b9fb80f8c6495e0495638c54a8b9a43362769199fcfe4e4fc6df33697"},
+ {file = "whenever-0.7.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:54c7afaeaada1d244016ce38252f0c0340bd7d199b4a240ba986efaab66b02f2"},
+ {file = "whenever-0.7.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f71fd077601c27830e202ed652bd89b46ae6f1ba0f96d29897038dae9c80eead"},
+ {file = "whenever-0.7.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40c74e8f0f3a9a540f580d44a22f2f9dc54b17b68d64abb1c0c961ab1343d43b"},
+ {file = "whenever-0.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de72b15de311b28e6fcdb45bd436fbb0bde0d4596e0c446f9301bb523b6f2369"},
+ {file = "whenever-0.7.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a84ff30d230e56250f89e99f5442d51a5215e10f6b7902d0d7ec51d8b06b6b2"},
+ {file = "whenever-0.7.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2af28fa6c8446f513ed3c71275349831e79df021dadb0051fb5b6cbd353d16d6"},
+ {file = "whenever-0.7.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:7f65c163f80b397f532d6dd9f56ead5b5d8b76bc24b1587dbb152bb466bd7de0"},
+ {file = "whenever-0.7.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:ef6c83a20b9ccfe10623596dda19d666cc95c0e83260a6568d767bc926da3781"},
+ {file = "whenever-0.7.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6322b78dd97b295164f0d59115be71e9242f74c100899736876b1e8f19b2ff0f"},
+ {file = "whenever-0.7.2-cp310-cp310-win32.whl", hash = "sha256:b9a2fc32a8914771d994d6349dcf25208c82d0eb6cf33f27b2309d9e8f58a51a"},
+ {file = "whenever-0.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:1440b8e1ef507c318a741bede7a43263f84909c43cf48f110de509233b89d77c"},
+ {file = "whenever-0.7.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0b5aaa62551213b3b099b460331fce75c7dbabc2f6696fe3be845cb4ecc8a856"},
+ {file = "whenever-0.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a4720cc7bf704e92b89bf60329f21084256b4b4a9dcc47a782461f7918d7e1fb"},
+ {file = "whenever-0.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91a18c81e517124463200b7fcde40ddcc18c959791b219dd681dc5fdec04f050"},
+ {file = "whenever-0.7.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:85ef3850f6a9ce3d5349a4f5a1d7fda14c68d3f18c0d18a890bcb11955709a8c"},
+ {file = "whenever-0.7.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9af47e5ff5d8528a7149f253276e1094bb944335074241d7e9f6c26ea12aa9ac"},
+ {file = "whenever-0.7.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:389afeb92b6272f35132a428884ba03f52ca5a9e80c1b28e0f9699f6098abf34"},
+ {file = "whenever-0.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:825a9567ba0b91f1e970cd59f0bbf7b6c2c12c41621fd3264e2d1a0f596c3efe"},
+ {file = "whenever-0.7.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d303cb0c691784219b7539e537167ea573cf58acc42696159585d27dacd10af"},
+ {file = "whenever-0.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6194cf9bf76cb0e3c8593d757b73b41cb33c1137ce1a79795812d43be8a29a95"},
+ {file = "whenever-0.7.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:59c0fb56aed72a0ec10a83b99f8eee2e96e4b32045e4ecfe85027129295cde6a"},
+ {file = "whenever-0.7.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f50068f98c85706e384a84e6a6e5d0d38760bbcb770fbd140596d2228f101c2e"},
+ {file = "whenever-0.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:993c98e9956597b61e21c3c65da8d5e9eb342fe6c6efc2135432be56aa64a116"},
+ {file = "whenever-0.7.2-cp311-cp311-win32.whl", hash = "sha256:e1d0ea62becd437ae9c911303cbcc5ba66107a79c9e60a4e0f965537878a3c77"},
+ {file = "whenever-0.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:c70a6ab84a4d7bb44e86fa9ebec2ea36a456457d211dcb48f16f54487774ec45"},
+ {file = "whenever-0.7.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:acaedfa0327e8859c078c40c2e17a3d169ce9f784c3735c09fd701d4035b7432"},
+ {file = "whenever-0.7.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:38de1c34ab4e42eda4006e8635cadc0c526094a546aa5ebf6a903c61d33053f3"},
+ {file = "whenever-0.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87e62291c4a0f212a13053f021b9255e0b820e57303c96e94b48304b84a1849d"},
+ {file = "whenever-0.7.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0cbf68b2833e6766fb4898ebe432406ce6ead7ac846f7b15427bfbd560d5939"},
+ {file = "whenever-0.7.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2220cf0d818d960d4a7ec1b05ffbed7b81e482807be0b4bb7a5466418a4c8f79"},
+ {file = "whenever-0.7.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7395c69109113eb1666bac29b6207caf28e38e25d332c57649a7e710f0d863db"},
+ {file = "whenever-0.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efcbffe9a510f310f019fe5bfe877e591ea8cdad90ac8fe6868a80659d411ac5"},
+ {file = "whenever-0.7.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e2d836ad37f4333e938779eae6e64f532f27ce19529ee9c09bfb62f796e41db1"},
+ {file = "whenever-0.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:59f1949d1efe4a85cfe81130159dc2c871ea5b56bae6e9782d5e344a747a758e"},
+ {file = "whenever-0.7.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:030836f2cb15eb33631c3d3c2f904d481edc797df063814f9c77d060db5db17d"},
+ {file = "whenever-0.7.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b25d8fd6ade64cf1492707c019cccb726aa07dfb20f79a4751eccb56555c2012"},
+ {file = "whenever-0.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:247e0255c6c8ded48a6d3734aabf448f2bf07bb2abb65b2828104df1eaab82cf"},
+ {file = "whenever-0.7.2-cp312-cp312-win32.whl", hash = "sha256:81fcef2c6917333d3aa8d24043e01323d8831c1354cabcb935e29b2a1f6a7a4f"},
+ {file = "whenever-0.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:2cdb4ddd2b2e908a076232a60577e4616096d4cf166da9373c4a03bf9d81721e"},
+ {file = "whenever-0.7.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:c35f47f613a7816d602fd39594400bfe7fff70a3bd7272cd9b8c736ffc13feed"},
+ {file = "whenever-0.7.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0cb7515e180aa2fea6c2d1855607011dd08d14acaba750b0673d7d6f536b0f5e"},
+ {file = "whenever-0.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fac40aed9be0bc1aeba2662e17f145987f84e8a0bafbfa5f938b40db82fc7aba"},
+ {file = "whenever-0.7.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ccd0840d04648dad3c5ae81a53a56e08a971a316d4167921665a7aa5fa8f0085"},
+ {file = "whenever-0.7.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf5199ffa1da783207b0c75d478ab6d808309cc0cbb2631640393bd943b6167e"},
+ {file = "whenever-0.7.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7be787eeb542f86cc2d0081c541e89e4417261976a50a7824f6e43248fadb294"},
+ {file = "whenever-0.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d78e13c648ce246dbaa54f78faf1d2f3d8107619f3c598d3d127ca45fd5d792a"},
+ {file = "whenever-0.7.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cc490b577f38bb55957e04d6a1b594c5365f01a6f3429c38b26243d3cf473d80"},
+ {file = "whenever-0.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bf322daa4184e7d89a4549498c8408e6c4a0bd2309eacd4b21151020bf51870c"},
+ {file = "whenever-0.7.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:00b60a9af13e4c6b618f52a55ae7c15c36eb3ff42bfc6cb050981e8a2402bc9f"},
+ {file = "whenever-0.7.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a2f82fd85a6521090d3f44412f4c76687a0e141df215541f6f0f6691276257e7"},
+ {file = "whenever-0.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a386df7b5e08f56a49f8a00991e54c3f5ebb218570d7a98c726d793859a2b0ea"},
+ {file = "whenever-0.7.2-cp313-cp313-win32.whl", hash = "sha256:46e51abd495c91fd586828401884750d7eb96ca3658d3d9f228f62beb140c758"},
+ {file = "whenever-0.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:af67395516ed16a8423735a4dd5a8795353f39e758b7428178dbe8de06977f21"},
+ {file = "whenever-0.7.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a8b25304ffc9563bf17914a9a9bf6642456923c727d330fcfa483d303f549805"},
+ {file = "whenever-0.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2978fb80700e583e2f957cd47c51d6b161f38a50b85a1744fcf3b13e53acf113"},
+ {file = "whenever-0.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:246ce04d18469169582cd492b6a4f74f6c166ed2caa869679522b02228c0bbf8"},
+ {file = "whenever-0.7.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6d464feea543f36dd712eee0f47ea690cf1a4d474c39ddaafe30254434ac9b2e"},
+ {file = "whenever-0.7.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:253460d1194a1dcb27a47a0c6cead61cbf0a29d5bb795e7f42caa0e7be32cae9"},
+ {file = "whenever-0.7.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a6b35953ca90ef5f0f2a7f3e951d110239fcccde5eccf08c4a0872821d41066"},
+ {file = "whenever-0.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6c9bb2528c345d552e0e25ab82276dd9765185718dfdf2654f0d84771eb3fa9"},
+ {file = "whenever-0.7.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bc0a7e6e5bfa15531910ca4a062fdc20c071747f016599999eac3d8fef7ea4db"},
+ {file = "whenever-0.7.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8c16c03a556819c8f1738dbcfa2793c8c0d2a9a496e0ec1524fea8a124d20037"},
+ {file = "whenever-0.7.2-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:43c2f1be68f638c7f3f27c60e5851b5b94aa3ba0186e84bc2010c880e71f7f84"},
+ {file = "whenever-0.7.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:715c4da7fbef766bfb5511017782873c98adac9f5f982806ead9b4a99f7bb086"},
+ {file = "whenever-0.7.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d3daadd03d392048a4041969132ae2a6b57941b172870c526b14c8343721967d"},
+ {file = "whenever-0.7.2-cp39-cp39-win32.whl", hash = "sha256:7b3c1d9ec5dc844686aad66bb0e14dda7d9667a113757c1f566a8e8036e4585f"},
+ {file = "whenever-0.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:166f4d31f0be9ee59d00670f52a724c4d1090688b46e3531d0ccb74ae3157032"},
+ {file = "whenever-0.7.2.tar.gz", hash = "sha256:a292dddd4d635a5b597686117e455d41e6134716a7be66b3903554514df8729c"},
+]
+
+[package.dependencies]
+tzdata = {version = ">=2020.1", markers = "sys_platform == \"win32\""}
+
[[package]]
name = "wrapt"
version = "1.17.0"
@@ -2234,5 +2207,5 @@ tests = ["Jinja2", "pytest", "pyyaml", "rich"]
[metadata]
lock-version = "2.0"
-python-versions = "^3.9, < 3.13"
-content-hash = "7cf3b9fd5e6ad627c30cb1660ef9c45d5b6a264150d064bc47cc7ae7a2be4030"
+python-versions = "^3.9, <3.14"
+content-hash = "b3e5f33a5e7089dfb49e9d4fd41b71feba6a5f2ec50c67f18202caa973baf1b3"
diff --git a/pyproject.toml b/pyproject.toml
index 0427195c..abfadc14 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "infrahub-sdk"
-version = "1.7.3a0"
+version = "1.8.0"
description = "Python Client to interact with Infrahub"
authors = ["OpsMill "]
readme = "README.md"
@@ -16,10 +16,11 @@ classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
]
[tool.poetry.dependencies]
-python = "^3.9, < 3.13"
+python = "^3.9, <3.14"
pydantic = ">=2.0.0,!=2.0.1,!=2.1.0,<3.0.0"
pydantic-settings = ">=2.0"
graphql-core = ">=3.1,<3.3"
@@ -27,10 +28,6 @@ httpx = [
{ version = ">=0.20", python = ">=3.9,<3.11" },
{ version = ">=0.23", python = ">=3.11" },
]
-pendulum = [
- { version = ">=2", python = ">=3.9,<3.12" },
- { version = ">=3", python = ">=3.12" },
-]
ujson = "^5"
Jinja2 = { version = "^3", optional = true }
numpy = [
@@ -45,6 +42,7 @@ pytest = { version = "*", optional = true }
pyyaml = { version = "^6", optional = true }
eval-type-backport = { version = "^0.2.2", python = "~3.9" }
dulwich = "^0.21.4"
+whenever = "0.7.2"
[tool.poetry.group.dev.dependencies]
pytest = "*"
@@ -60,7 +58,7 @@ pre-commit = "^2.20.0"
types-toml = "*"
types-ujson = "*"
types-pyyaml = "*"
-ruff = "0.8.6"
+ruff = "0.11.0"
pytest-xdist = "^3.3.1"
types-python-slugify = "^8.0.0.3"
invoke = "^2.2.0"
@@ -215,6 +213,7 @@ ignore = [
"SIM118", # Use `key in dict` instead of `key in dict.keys)
"TC003", # Move standard library import `collections.abc.Iterable` into a type-checking block
"UP031", # Use format specifiers instead of percent format
+ "UP045", # Use `X | None` for type annotations
]
diff --git a/tests/fixtures/tasks/mock_query_tasks_01_page1.json b/tests/fixtures/tasks/mock_query_tasks_01_page1.json
new file mode 100644
index 00000000..733078a9
--- /dev/null
+++ b/tests/fixtures/tasks/mock_query_tasks_01_page1.json
@@ -0,0 +1,45 @@
+{
+ "data": {
+ "InfrahubTask": {
+ "count": 5,
+ "edges": [
+ {
+ "node": {
+ "created_at": "2025-02-21T04:05:53.804642Z",
+ "id": "b6752ef3-d51c-48c2-a8d7-17a061e1484b",
+ "branch": null,
+ "title": "Configuration webhook automation and populate cache",
+ "updated_at": "2025-02-21T04:06:46.647125Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "webhook-setup-automations"
+ }
+ },
+ {
+ "node": {
+ "created_at": "2025-02-10T13:40:40.699598Z",
+ "id": "06c14140-8404-47cf-a8b8-585dd7302653",
+ "branch": "main",
+ "title": "Configuration webhook automation and populate cache",
+ "updated_at": "2025-02-10T13:41:21.228266Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "webhook-setup-automations"
+ }
+ },
+ {
+ "node": {
+ "created_at": "2025-02-10T13:37:04.191653Z",
+ "id": "2210f266-2705-4581-ae45-4d82852cb811",
+ "branch": null,
+ "title": "Configuration webhook automation and populate cache",
+ "updated_at": "2025-02-10T13:37:50.591615Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "webhook-setup-automations"
+ }
+ }
+ ]
+ }
+ }
+ }
\ No newline at end of file
diff --git a/tests/fixtures/tasks/mock_query_tasks_01_page2.json b/tests/fixtures/tasks/mock_query_tasks_01_page2.json
new file mode 100644
index 00000000..42a2fe63
--- /dev/null
+++ b/tests/fixtures/tasks/mock_query_tasks_01_page2.json
@@ -0,0 +1,33 @@
+{
+ "data": {
+ "InfrahubTask": {
+ "count": 5,
+ "edges": [
+ {
+ "node": {
+ "created_at": "2025-01-18T22:12:23.104373Z",
+ "id": "a60f4431-6a43-451e-8f42-9ec5db9a9370",
+ "branch": "main",
+ "title": "Setup computed attributes for Python transforms in task-manager",
+ "updated_at": "2025-01-18T22:12:25.436646Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "computed-attribute-setup-python"
+ }
+ },
+ {
+ "node": {
+ "created_at": "2025-01-18T22:12:19.440880Z",
+ "id": "6aad5002-cf46-4756-95de-c5f95191f70c",
+ "branch": "main",
+ "title": "Setup computed attributes for Python transforms in task-manager",
+ "updated_at": "2025-01-18T22:12:21.214943Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "computed-attribute-setup-python"
+ }
+ }
+ ]
+ }
+ }
+ }
\ No newline at end of file
diff --git a/tests/fixtures/tasks/mock_query_tasks_02_page1.json b/tests/fixtures/tasks/mock_query_tasks_02_page1.json
new file mode 100644
index 00000000..42916b6b
--- /dev/null
+++ b/tests/fixtures/tasks/mock_query_tasks_02_page1.json
@@ -0,0 +1,33 @@
+{
+ "data": {
+ "InfrahubTask": {
+ "count": 2,
+ "edges": [
+ {
+ "node": {
+ "created_at": "2025-01-18T22:12:23.104373Z",
+ "id": "a60f4431-6a43-451e-8f42-9ec5db9a9370",
+ "branch": "main",
+ "title": "Setup computed attributes for Python transforms in task-manager",
+ "updated_at": "2025-01-18T22:12:25.436646Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "computed-attribute-setup-python"
+ }
+ },
+ {
+ "node": {
+ "created_at": "2025-01-18T22:12:19.440880Z",
+ "id": "6aad5002-cf46-4756-95de-c5f95191f70c",
+ "branch": "main",
+ "title": "Setup computed attributes for Python transforms in task-manager",
+ "updated_at": "2025-01-18T22:12:21.214943Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "computed-attribute-setup-python"
+ }
+ }
+ ]
+ }
+ }
+ }
\ No newline at end of file
diff --git a/tests/fixtures/tasks/mock_query_tasks_03_page1.json b/tests/fixtures/tasks/mock_query_tasks_03_page1.json
new file mode 100644
index 00000000..216fedbc
--- /dev/null
+++ b/tests/fixtures/tasks/mock_query_tasks_03_page1.json
@@ -0,0 +1,21 @@
+{
+ "data": {
+ "InfrahubTask": {
+ "count": 2,
+ "edges": [
+ {
+ "node": {
+ "created_at": "2025-01-18T22:12:23.104373Z",
+ "id": "a60f4431-6a43-451e-8f42-9ec5db9a9370",
+ "branch": "main",
+ "title": "Setup computed attributes for Python transforms in task-manager",
+ "updated_at": "2025-01-18T22:12:25.436646Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "computed-attribute-setup-python"
+ }
+ }
+ ]
+ }
+ }
+ }
\ No newline at end of file
diff --git a/tests/fixtures/tasks/mock_query_tasks_04_page1.json b/tests/fixtures/tasks/mock_query_tasks_04_page1.json
new file mode 100644
index 00000000..ccc45a42
--- /dev/null
+++ b/tests/fixtures/tasks/mock_query_tasks_04_page1.json
@@ -0,0 +1,84 @@
+{
+ "data": {
+ "InfrahubTask": {
+ "count": 8,
+ "edges": [
+ {
+ "node": {
+ "created_at": "2025-02-21T04:05:53.804642Z",
+ "id": "b6752ef3-d51c-48c2-a8d7-17a061e1484b",
+ "branch": null,
+ "title": "Configuration webhook automation and populate cache",
+ "updated_at": "2025-02-21T04:06:46.647125Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "webhook-setup-automations",
+ "related_nodes": [],
+ "logs": {
+ "edges": [
+ {
+ "node": {
+ "severity": "info",
+ "message": "Worker 'InfrahubEntWorkerAsync ebde081b-2cb6-4a3a-afc1-30b9074cb570' submitting flow run 'b6752ef3-d51c-48c2-a8d7-17a061e1484b'",
+ "timestamp": "2025-02-21T04:06:31.055559Z"
+
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "node": {
+ "created_at": "2025-02-10T13:40:40.699598Z",
+ "id": "06c14140-8404-47cf-a8b8-585dd7302653",
+ "branch": null,
+ "title": "Configuration webhook automation and populate cache",
+ "updated_at": "2025-02-10T13:41:21.228266Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "webhook-setup-automations",
+ "related_nodes": [],
+ "logs": {
+ "edges": [
+ {
+ "node": {
+ "severity": "info",
+ "message": "Worker 'InfrahubEntWorkerAsync e6c576a1-5be3-4647-af78-e803b2fb4b5c' submitting flow run '06c14140-8404-47cf-a8b8-585dd7302653'",
+ "timestamp": "2025-02-10T13:41:15.444768Z"
+
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "node": {
+ "created_at": "2025-02-10T13:37:04.191653Z",
+ "id": "2210f266-2705-4581-ae45-4d82852cb811",
+ "branch": null,
+ "title": "Configuration webhook automation and populate cache",
+ "updated_at": "2025-02-10T13:37:50.591615Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "webhook-setup-automations",
+ "related_nodes": [],
+ "logs": {
+ "edges": [
+ {
+ "node": {
+ "severity": "info",
+ "message": "Worker 'InfrahubEntWorkerAsync 647a77bf-5328-4f21-9841-63b3705ab64c' submitting flow run '2210f266-2705-4581-ae45-4d82852cb811'",
+ "timestamp": "2025-02-10T13:37:39.662456Z"
+
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
\ No newline at end of file
diff --git a/tests/fixtures/tasks/mock_query_tasks_04_page2.json b/tests/fixtures/tasks/mock_query_tasks_04_page2.json
new file mode 100644
index 00000000..d84632ff
--- /dev/null
+++ b/tests/fixtures/tasks/mock_query_tasks_04_page2.json
@@ -0,0 +1,145 @@
+{
+ "data": {
+ "InfrahubTask": {
+ "count": 8,
+ "edges": [
+ {
+ "node": {
+ "created_at": "2025-01-18T22:12:23.104373Z",
+ "id": "a60f4431-6a43-451e-8f42-9ec5db9a9370",
+ "branch": "main",
+ "title": "Setup computed attributes for Python transforms in task-manager",
+ "updated_at": "2025-01-18T22:12:25.436646Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "computed-attribute-setup-python",
+ "related_nodes": [],
+ "logs": {
+ "edges": [
+ {
+ "node": {
+ "severity": "info",
+ "message": "Worker 'InfrahubEntWorkerAsync 0cd915bf-686c-4809-8fc4-294188e46fee' submitting flow run 'a60f4431-6a43-451e-8f42-9ec5db9a9370'",
+ "timestamp": "2025-01-18T22:12:25.192381Z"
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Schema converged after 0.2 seconds",
+ "timestamp": "2025-01-18T22:12:25.341294Z"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "node": {
+ "created_at": "2025-01-18T22:12:19.440880Z",
+ "id": "6aad5002-cf46-4756-95de-c5f95191f70c",
+ "branch": "main",
+ "title": "Setup computed attributes for Python transforms in task-manager",
+ "updated_at": "2025-01-18T22:12:21.214943Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "computed-attribute-setup-python",
+ "related_nodes": [],
+ "logs": {
+ "edges": [
+ {
+ "node": {
+ "severity": "info",
+ "message": "Worker 'InfrahubEntWorkerAsync 0cd915bf-686c-4809-8fc4-294188e46fee' submitting flow run '6aad5002-cf46-4756-95de-c5f95191f70c'",
+ "timestamp": "2025-01-18T22:12:20.695955Z"
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Schema converged after 0.2 seconds",
+ "timestamp": "2025-01-18T22:12:21.048654Z"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "node": {
+ "created_at": "2025-01-18T22:12:20.228112Z",
+ "id": "32116fcd-9071-43a7-9f14-777901020b5b",
+ "branch": "main",
+ "title": "Import Python file",
+ "updated_at": "2025-01-18T22:12:22.044921Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "import-python-files",
+ "related_nodes": [
+ {
+ "id": "1808d478-e51e-7504-d0ef-c513f1cd69a5",
+ "kind": "CoreReadOnlyRepository"
+ }
+ ],
+ "logs": {
+ "edges": [
+ {
+ "node": {
+ "severity": "info",
+ "message": "Found 1 check definitions in the repository",
+ "timestamp": "2025-01-18T22:12:20.371699Z"
+
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Found 3 Python transforms in the repository",
+ "timestamp": "2025-01-18T22:12:20.603709Z"
+
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Found 4 generator definitions in the repository",
+ "timestamp": "2025-01-18T22:12:21.259186Z"
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Processing generator update_upstream_interfaces_description (generators/upstream_interfaces.py)",
+ "timestamp": "2025-01-18T22:12:21.259692Z",
+
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Processing generator create_circuit_endpoints (generators/circuit_endpoints.py)",
+ "timestamp": "2025-01-18T22:12:21.261714Z"
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Processing generator drained_circuit_bgp_sessions (generators/drained_circuit_bgp_sessions.py)",
+ "timestamp": "2025-01-18T22:12:21.263222Z"
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Processing generator backbone_service (generators/backbone_service.py)",
+ "timestamp": "2025-01-18T22:12:21.264613Z"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
\ No newline at end of file
diff --git a/tests/fixtures/tasks/mock_query_tasks_04_page3.json b/tests/fixtures/tasks/mock_query_tasks_04_page3.json
new file mode 100644
index 00000000..1b250884
--- /dev/null
+++ b/tests/fixtures/tasks/mock_query_tasks_04_page3.json
@@ -0,0 +1,157 @@
+{
+ "data": {
+ "InfrahubTask": {
+ "count": 8,
+ "edges": [
+ {
+ "node": {
+ "created_at": "2025-01-18T22:12:19.512289Z",
+ "id": "40ff9289-18d1-4eba-9ff8-3c7eb744364e",
+ "branch": "main",
+ "title": "Import objects",
+ "updated_at": "2025-01-18T22:12:22.999826Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "import-object-from-file",
+ "related_nodes": [
+ {
+ "id": "1808d478-e51e-7504-d0ef-c513f1cd69a5",
+ "kind": "CoreReadOnlyRepository"
+ }
+ ],
+ "logs": {
+ "edges": [
+ {
+ "node": {
+ "severity": "info",
+ "message": "Successfully parsed .infrahub.yml",
+ "timestamp": "2025-01-18T22:12:19.899046Z",
+ "id": null
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Created subflow run 'impressive-termite' for flow 'import-python-files'",
+ "timestamp": "2025-01-18T22:12:20.256939Z",
+ "id": null
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Found 2 Jinja2 transforms in the repository",
+ "timestamp": "2025-01-18T22:12:22.203059Z",
+ "id": null
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "New version of the Jinja2 Transform 'clab_topology' found, updating",
+ "timestamp": "2025-01-18T22:12:22.391083Z",
+ "id": null
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "New version of the Jinja2 Transform 'device_startup' found, updating",
+ "timestamp": "2025-01-18T22:12:22.508961Z",
+ "id": null
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Found 2 artifact definitions in the repository",
+ "timestamp": "2025-01-18T22:12:22.829151Z",
+ "id": null
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "node": {
+ "created_at": "2025-01-18T22:12:16.755287Z",
+ "id": "4a7e52c0-c5b3-4e22-b401-62044ebb5e1f",
+ "branch": "main",
+ "title": "Import Python file",
+ "updated_at": "2025-01-18T22:12:18.437961Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "import-python-files",
+ "related_nodes": [
+ {
+ "id": "1808d478-e51e-7504-d0ef-c513f1cd69a5",
+ "kind": "CoreReadOnlyRepository"
+ }
+ ],
+ "logs": {
+ "edges": [
+ {
+ "node": {
+ "severity": "info",
+ "message": "Found 1 check definitions in the repository",
+ "timestamp": "2025-01-18T22:12:16.902608Z",
+ "id": null
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Found 3 Python transforms in the repository",
+ "timestamp": "2025-01-18T22:12:17.155336Z",
+ "id": null
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Found 4 generator definitions in the repository",
+ "timestamp": "2025-01-18T22:12:17.581382Z",
+ "id": null
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Processing generator update_upstream_interfaces_description (generators/upstream_interfaces.py)",
+ "timestamp": "2025-01-18T22:12:17.581995Z",
+ "id": null
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Processing generator create_circuit_endpoints (generators/circuit_endpoints.py)",
+ "timestamp": "2025-01-18T22:12:17.583801Z",
+ "id": null
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Processing generator drained_circuit_bgp_sessions (generators/drained_circuit_bgp_sessions.py)",
+ "timestamp": "2025-01-18T22:12:17.585317Z",
+ "id": null
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Processing generator backbone_service (generators/backbone_service.py)",
+ "timestamp": "2025-01-18T22:12:17.586920Z",
+ "id": null
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
\ No newline at end of file
diff --git a/tests/fixtures/tasks/mock_query_tasks_05_page1.json b/tests/fixtures/tasks/mock_query_tasks_05_page1.json
new file mode 100644
index 00000000..b418ecb0
--- /dev/null
+++ b/tests/fixtures/tasks/mock_query_tasks_05_page1.json
@@ -0,0 +1,63 @@
+{
+ "data": {
+ "InfrahubTask": {
+ "count": 1,
+ "edges": [
+ {
+ "node": {
+ "created_at": "2025-01-18T22:12:20.228112Z",
+ "id": "32116fcd-9071-43a7-9f14-777901020b5b",
+ "branch": "main",
+ "title": "Import Python file",
+ "updated_at": "2025-01-18T22:12:22.044921Z",
+ "state": "COMPLETED",
+ "progress": null,
+ "workflow": "import-python-files",
+ "related_nodes": [
+ {
+ "id": "1808d478-e51e-7504-d0ef-c513f1cd69a5",
+ "kind": "CoreReadOnlyRepository"
+ },
+ {
+ "id": "1808d478-e51e-7504-aaaa-c513f1cd69a5",
+ "kind": "TestMyKind"
+ }
+ ],
+ "logs": {
+ "edges": [
+ {
+ "node": {
+ "severity": "info",
+ "message": "Found 1 check definitions in the repository",
+ "timestamp": "2025-01-18T22:12:20.371699Z"
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Found 3 Python transforms in the repository",
+ "timestamp": "2025-01-18T22:12:20.603709Z"
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Found 4 generator definitions in the repository",
+ "timestamp": "2025-01-18T22:12:21.259186Z"
+ }
+ },
+ {
+ "node": {
+ "severity": "info",
+ "message": "Processing generator update_upstream_interfaces_description (generators/upstream_interfaces.py)",
+ "timestamp": "2025-01-18T22:12:21.259692Z"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
\ No newline at end of file
diff --git a/tests/fixtures/tasks/mock_query_tasks_empty.json b/tests/fixtures/tasks/mock_query_tasks_empty.json
new file mode 100644
index 00000000..66690b00
--- /dev/null
+++ b/tests/fixtures/tasks/mock_query_tasks_empty.json
@@ -0,0 +1,8 @@
+{
+ "data": {
+ "InfrahubTask": {
+ "count": 0,
+ "edges": []
+ }
+ }
+ }
\ No newline at end of file
diff --git a/tests/integration/test_infrahub_client.py b/tests/integration/test_infrahub_client.py
index 20af4a35..375d4cfd 100644
--- a/tests/integration/test_infrahub_client.py
+++ b/tests/integration/test_infrahub_client.py
@@ -8,6 +8,7 @@
from infrahub_sdk.exceptions import BranchNotFoundError, URLNotFoundError
from infrahub_sdk.node import InfrahubNode
from infrahub_sdk.schema import ProfileSchemaAPI
+from infrahub_sdk.task.models import Task, TaskFilter, TaskLog, TaskState
from infrahub_sdk.testing.docker import TestInfrahubDockerClient
from infrahub_sdk.testing.schemas.animal import TESTING_ANIMAL, TESTING_CAT, TESTING_DOG, TESTING_PERSON, SchemaAnimal
@@ -31,6 +32,13 @@ async def base_dataset(
):
await client.branch.create(branch_name="branch01")
+ @pytest.fixture
+ async def set_pagination_size3(self, client: InfrahubClient):
+ original_pagination_size = client.pagination_size
+ client.pagination_size = 3
+ yield
+ client.pagination_size = original_pagination_size
+
async def test_query_branches(self, client: InfrahubClient, base_dataset):
branches = await client.branch.all()
main = await client.branch.get(branch_name="main")
@@ -154,14 +162,52 @@ async def test_create_generic_rel_with_hfid(
self, client: InfrahubClient, base_dataset, cat_luna, person_sophia, schema_animal, schema_cat
):
# See https://github.com/opsmill/infrahub-sdk-python/issues/277
- assert (
- schema_animal.human_friendly_id != schema_cat.human_friendly_id
- ), "Inherited node schema should have a different hfid than generic one for this test to be relevant"
+ assert schema_animal.human_friendly_id != schema_cat.human_friendly_id, (
+ "Inherited node schema should have a different hfid than generic one for this test to be relevant"
+ )
person_sophia.favorite_animal = {"hfid": cat_luna.hfid, "kind": TESTING_CAT}
await person_sophia.save()
person_sophia = await client.get(kind=TESTING_PERSON, id=person_sophia.id, prefetch_relationships=True)
assert person_sophia.favorite_animal.id == cat_luna.id
+ async def test_task_query(self, client: InfrahubClient, base_dataset, set_pagination_size3):
+ nbr_tasks = await client.task.count()
+ assert nbr_tasks
+
+ tasks = await client.task.filter(filter=TaskFilter(state=[TaskState.COMPLETED]))
+ assert tasks
+ task_ids = [task.id for task in tasks]
+
+ # Query Tasks using Parallel mode
+ tasks_parallel = await client.task.filter(filter=TaskFilter(state=[TaskState.COMPLETED]), parallel=True)
+ assert tasks_parallel
+ assert len(tasks_parallel) == len(tasks)
+
+ # Query Tasks by ID
+ tasks_parallel_filtered = await client.task.filter(filter=TaskFilter(ids=task_ids[:2]), parallel=True)
+ assert tasks_parallel_filtered
+ assert len(tasks_parallel_filtered) == 2
+
+ # Query individual Task
+ task = await client.task.get(id=tasks[0].id)
+ assert task
+ assert isinstance(task, Task)
+ assert task.logs == []
+
+ # Wait for Task completion
+ task = await client.task.wait_for_completion(id=tasks[0].id)
+ assert task
+ assert isinstance(task, Task)
+
+ # Query Tasks with logs
+ tasks = await client.task.filter(filter=TaskFilter(state=[TaskState.COMPLETED]), include_logs=True)
+ all_logs = [log for task in tasks for log in task.logs]
+ assert all_logs
+ assert isinstance(all_logs[0], TaskLog)
+ assert all_logs[0].message
+ assert all_logs[0].timestamp
+ assert all_logs[0].severity
+
# async def test_get_generic_filter_source(self, client: InfrahubClient, base_dataset):
# admin = await client.get(kind="CoreAccount", name__value="admin")
diff --git a/tests/unit/sdk/conftest.py b/tests/unit/sdk/conftest.py
index d3dc9dd8..afb9250c 100644
--- a/tests/unit/sdk/conftest.py
+++ b/tests/unit/sdk/conftest.py
@@ -2507,3 +2507,77 @@ async def mock_query_location_batch(httpx_mock: HTTPXMock, client: InfrahubClien
match_headers={"X-Infrahub-Tracker": f"query-builtinlocation-page{i}"},
)
return httpx_mock
+
+
+@pytest.fixture
+async def mock_query_tasks_01(httpx_mock: HTTPXMock) -> HTTPXMock:
+ for i in [1, 2]:
+ filename = get_fixtures_dir() / "tasks" / f"mock_query_tasks_01_page{i}.json"
+ response_text = filename.read_text(encoding="UTF-8")
+ httpx_mock.add_response(
+ method="POST",
+ json=ujson.loads(response_text),
+ match_headers={"X-Infrahub-Tracker": f"query-tasks-page{i}"},
+ )
+ return httpx_mock
+
+
+@pytest.fixture
+async def mock_query_tasks_02_main(httpx_mock: HTTPXMock) -> HTTPXMock:
+ filename = get_fixtures_dir() / "tasks" / "mock_query_tasks_02_page1.json"
+ response_text = filename.read_text(encoding="UTF-8")
+ httpx_mock.add_response(
+ method="POST",
+ json=ujson.loads(response_text),
+ match_headers={"X-Infrahub-Tracker": "query-tasks-page1"},
+ )
+ return httpx_mock
+
+
+@pytest.fixture
+async def mock_query_tasks_empty(httpx_mock: HTTPXMock) -> HTTPXMock:
+ filename = get_fixtures_dir() / "tasks" / "mock_query_tasks_empty.json"
+ response_text = filename.read_text(encoding="UTF-8")
+ httpx_mock.add_response(
+ method="POST",
+ json=ujson.loads(response_text),
+ match_headers={"X-Infrahub-Tracker": "query-tasks-page1"},
+ )
+ return httpx_mock
+
+
+@pytest.fixture
+async def mock_query_tasks_03(httpx_mock: HTTPXMock) -> HTTPXMock:
+ filename = get_fixtures_dir() / "tasks" / "mock_query_tasks_03_page1.json"
+ response_text = filename.read_text(encoding="UTF-8")
+ httpx_mock.add_response(
+ method="POST",
+ json=ujson.loads(response_text),
+ match_headers={"X-Infrahub-Tracker": "query-tasks-page1"},
+ )
+ return httpx_mock
+
+
+@pytest.fixture
+async def mock_query_tasks_04_full(httpx_mock: HTTPXMock) -> HTTPXMock:
+ for i in [1, 2, 3]:
+ filename = get_fixtures_dir() / "tasks" / f"mock_query_tasks_04_page{i}.json"
+ response_text = filename.read_text(encoding="UTF-8")
+ httpx_mock.add_response(
+ method="POST",
+ json=ujson.loads(response_text),
+ match_headers={"X-Infrahub-Tracker": f"query-tasks-page{i}"},
+ )
+ return httpx_mock
+
+
+@pytest.fixture
+async def mock_query_tasks_05(httpx_mock: HTTPXMock) -> HTTPXMock:
+ filename = get_fixtures_dir() / "tasks" / "mock_query_tasks_05_page1.json"
+ response_text = filename.read_text(encoding="UTF-8")
+ httpx_mock.add_response(
+ method="POST",
+ json=ujson.loads(response_text),
+ match_headers={"X-Infrahub-Tracker": "query-tasks-page1"},
+ )
+ return httpx_mock
diff --git a/tests/unit/sdk/test_client.py b/tests/unit/sdk/test_client.py
index 4d849221..9f0f4e33 100644
--- a/tests/unit/sdk/test_client.py
+++ b/tests/unit/sdk/test_client.py
@@ -7,8 +7,14 @@
from infrahub_sdk.exceptions import NodeNotFoundError
from infrahub_sdk.node import InfrahubNode, InfrahubNodeSync
-async_client_methods = [method for method in dir(InfrahubClient) if not method.startswith("_")]
-sync_client_methods = [method for method in dir(InfrahubClientSync) if not method.startswith("_")]
+excluded_methods = ["request_context"]
+
+async_client_methods = [
+ method for method in dir(InfrahubClient) if not method.startswith("_") and method not in excluded_methods
+]
+sync_client_methods = [
+ method for method in dir(InfrahubClientSync) if not method.startswith("_") and method not in excluded_methods
+]
batch_client_types = [
("standard", False),
diff --git a/tests/unit/sdk/test_graphql.py b/tests/unit/sdk/test_graphql.py
index de16fe02..06b23022 100644
--- a/tests/unit/sdk/test_graphql.py
+++ b/tests/unit/sdk/test_graphql.py
@@ -1,8 +1,20 @@
+from enum import Enum
+
import pytest
from infrahub_sdk.graphql import Mutation, Query, render_input_block, render_query_block
+class MyStrEnum(str, Enum):
+ VALUE1 = "value1"
+ VALUE2 = "value2"
+
+
+class MyIntEnum(int, Enum):
+ VALUE1 = 12
+ VALUE2 = 24
+
+
@pytest.fixture
def query_data_no_filter():
data = {
@@ -78,10 +90,10 @@ def query_data_filters_01():
def query_data_filters_02():
data = {
"device": {
- "@filters": {"name__value": "myname", "integer__value": 44},
+ "@filters": {"name__value": "myname", "integer__value": 44, "enumstr__value": MyStrEnum.VALUE2},
"name": {"value": None},
"interfaces": {
- "@filters": {"enabled__value": True},
+ "@filters": {"enabled__value": True, "enumint__value": MyIntEnum.VALUE1},
"name": {"value": None},
},
}
@@ -324,11 +336,11 @@ def test_query_rendering_with_filters(query_data_filters_02):
expected_query = """
query {
- device(name__value: "myname", integer__value: 44) {
+ device(name__value: "myname", integer__value: 44, enumstr__value: VALUE2) {
name {
value
}
- interfaces(enabled__value: true) {
+ interfaces(enabled__value: true, enumint__value: VALUE1) {
name {
value
}
@@ -339,6 +351,26 @@ def test_query_rendering_with_filters(query_data_filters_02):
assert query.render() == expected_query
+def test_query_rendering_with_filters_convert_enum(query_data_filters_02):
+ query = Query(query=query_data_filters_02)
+
+ expected_query = """
+query {
+ device(name__value: "myname", integer__value: 44, enumstr__value: "value2") {
+ name {
+ value
+ }
+ interfaces(enabled__value: true, enumint__value: 12) {
+ name {
+ value
+ }
+ }
+ }
+}
+"""
+ assert query.render(convert_enum=True) == expected_query
+
+
def test_mutation_rendering_no_vars(input_data_01):
query_data = {"ok": None, "object": {"id": None}}
@@ -425,6 +457,40 @@ def test_mutation_rendering_many_relationships():
assert query.render() == expected_query
+def test_mutation_rendering_enum():
+ query_data = {"ok": None, "object": {"id": None}}
+ input_data = {
+ "data": {
+ "description": {"value": MyStrEnum.VALUE1},
+ "size": {"value": MyIntEnum.VALUE2},
+ }
+ }
+
+ query = Mutation(mutation="myobject", query=query_data, input_data=input_data)
+
+ expected_query = """
+mutation {
+ myobject(
+ data: {
+ description: {
+ value: VALUE1
+ }
+ size: {
+ value: VALUE2
+ }
+ }
+ ){
+ ok
+ object {
+ id
+ }
+ }
+}
+"""
+ assert query.render_first_line() == "mutation {"
+ assert query.render() == expected_query
+
+
def test_mutation_rendering_with_vars(input_data_01):
query_data = {"ok": None, "object": {"id": None}}
variables = {"name": str, "description": str, "number": int}
diff --git a/tests/unit/sdk/test_task.py b/tests/unit/sdk/test_task.py
new file mode 100644
index 00000000..8837d36f
--- /dev/null
+++ b/tests/unit/sdk/test_task.py
@@ -0,0 +1,155 @@
+from datetime import datetime, timezone
+
+import pytest
+
+from infrahub_sdk.task.exceptions import TaskNotFoundError, TooManyTasksError
+from infrahub_sdk.task.manager import InfraHubTaskManagerBase
+from infrahub_sdk.task.models import Task, TaskFilter, TaskState
+
+client_types = ["standard", "sync"]
+
+
+@pytest.mark.parametrize("client_type", client_types)
+async def test_method_all(clients, mock_query_tasks_01, client_type):
+ if client_type == "standard":
+ tasks = await clients.standard.task.all()
+ else:
+ tasks = clients.sync.task.all()
+
+ assert len(tasks) == 5
+ assert isinstance(tasks[0], Task)
+
+
+@pytest.mark.parametrize("client_type", client_types)
+async def test_method_all_full(clients, mock_query_tasks_01, client_type):
+ if client_type == "standard":
+ tasks = await clients.standard.task.all(include_logs=True, include_related_nodes=True)
+ else:
+ tasks = clients.sync.task.all(include_logs=True, include_related_nodes=True)
+
+ assert len(tasks) == 5
+ assert isinstance(tasks[0], Task)
+
+
+async def test_generate_count_query():
+ query = InfraHubTaskManagerBase._generate_count_query()
+ assert query
+ assert (
+ query.render()
+ == """
+query {
+ InfrahubTask {
+ count
+ }
+}
+"""
+ )
+
+ query2 = InfraHubTaskManagerBase._generate_count_query(
+ filters=TaskFilter(ids=["azerty", "qwerty"], state=[TaskState.COMPLETED])
+ )
+ assert query2
+ assert (
+ query2.render()
+ == """
+query {
+ InfrahubTask(ids: ["azerty", "qwerty"], state: [COMPLETED]) {
+ count
+ }
+}
+"""
+ )
+
+
+@pytest.mark.parametrize("client_type", client_types)
+async def test_method_filters(clients, mock_query_tasks_02_main, client_type):
+ if client_type == "standard":
+ tasks = await clients.standard.task.filter(filter=TaskFilter(branch="main"))
+ else:
+ tasks = clients.sync.task.filter(filter=TaskFilter(branch="main"))
+
+ assert len(tasks) == 2
+ assert isinstance(tasks[0], Task)
+
+
+@pytest.mark.parametrize("client_type", client_types)
+async def test_method_get_too_many(clients, mock_query_tasks_02_main, client_type):
+ with pytest.raises(TooManyTasksError):
+ if client_type == "standard":
+ await clients.standard.task.get(id="a60f4431-6a43-451e-8f42-9ec5db9a9370")
+ else:
+ clients.sync.task.get(id="a60f4431-6a43-451e-8f42-9ec5db9a9370")
+
+
+@pytest.mark.parametrize("client_type", client_types)
+async def test_method_get_not_found(clients, mock_query_tasks_empty, client_type):
+ with pytest.raises(TaskNotFoundError):
+ if client_type == "standard":
+ await clients.standard.task.get(id="a60f4431-6a43-451e-8f42-9ec5db9a9370")
+ else:
+ clients.sync.task.get(id="a60f4431-6a43-451e-8f42-9ec5db9a9370")
+
+
+@pytest.mark.parametrize("client_type", client_types)
+async def test_method_get(clients, mock_query_tasks_03, client_type):
+ if client_type == "standard":
+ task = await clients.standard.task.get(id="a60f4431-6a43-451e-8f42-9ec5db9a9370")
+ else:
+ task = clients.sync.task.get(id="a60f4431-6a43-451e-8f42-9ec5db9a9370")
+
+ assert task
+ assert task.id == "a60f4431-6a43-451e-8f42-9ec5db9a9370"
+
+
+@pytest.mark.parametrize("client_type", client_types)
+async def test_method_get_full(clients, mock_query_tasks_05, client_type):
+ if client_type == "standard":
+ task = await clients.standard.task.get(id="32116fcd-9071-43a7-9f14-777901020b5b")
+ else:
+ task = clients.sync.task.get(id="32116fcd-9071-43a7-9f14-777901020b5b")
+
+ assert task
+ assert task.id == "32116fcd-9071-43a7-9f14-777901020b5b"
+ assert len(task.logs) == 4
+ assert len(task.related_nodes) == 2
+ assert task.model_dump() == {
+ "branch": "main",
+ "created_at": datetime(2025, 1, 18, 22, 12, 20, 228112, tzinfo=timezone.utc),
+ "id": "32116fcd-9071-43a7-9f14-777901020b5b",
+ "logs": [
+ {
+ "message": "Found 1 check definitions in the repository",
+ "severity": "info",
+ "timestamp": datetime(2025, 1, 18, 22, 12, 20, 371699, tzinfo=timezone.utc),
+ },
+ {
+ "message": "Found 3 Python transforms in the repository",
+ "severity": "info",
+ "timestamp": datetime(2025, 1, 18, 22, 12, 20, 603709, tzinfo=timezone.utc),
+ },
+ {
+ "message": "Found 4 generator definitions in the repository",
+ "severity": "info",
+ "timestamp": datetime(2025, 1, 18, 22, 12, 21, 259186, tzinfo=timezone.utc),
+ },
+ {
+ "message": "Processing generator update_upstream_interfaces_description (generators/upstream_interfaces.py)",
+ "severity": "info",
+ "timestamp": datetime(2025, 1, 18, 22, 12, 21, 259692, tzinfo=timezone.utc),
+ },
+ ],
+ "parameters": None,
+ "progress": None,
+ "related_nodes": [
+ {
+ "id": "1808d478-e51e-7504-d0ef-c513f1cd69a5",
+ "kind": "CoreReadOnlyRepository",
+ },
+ {"id": "1808d478-e51e-7504-aaaa-c513f1cd69a5", "kind": "TestMyKind"},
+ ],
+ "state": TaskState.COMPLETED,
+ "tags": None,
+ "title": "Import Python file",
+ "updated_at": datetime(2025, 1, 18, 22, 12, 22, 44921, tzinfo=timezone.utc),
+ "workflow": "import-python-files",
+ }
diff --git a/tests/unit/sdk/test_timestamp.py b/tests/unit/sdk/test_timestamp.py
index bcdf18a7..c800e46a 100644
--- a/tests/unit/sdk/test_timestamp.py
+++ b/tests/unit/sdk/test_timestamp.py
@@ -1,17 +1,22 @@
-import pendulum
+from datetime import datetime, timezone
+
import pytest
+from whenever import Instant
+
+from infrahub_sdk.exceptions import TimestampFormatError
+from infrahub_sdk.timestamp import Timestamp
-from infrahub_sdk.timestamp import Timestamp, TimestampFormatError
+UTC = timezone.utc # Required for older versions of Python
def test_init_empty():
t1 = Timestamp()
assert isinstance(t1, Timestamp)
- assert t1.to_string() == t1.obj.to_iso8601_string()
+ assert t1.to_datetime() == t1._obj.py_datetime()
t2 = Timestamp(None)
assert isinstance(t2, Timestamp)
- assert t2.to_string() == t2.obj.to_iso8601_string()
+ assert t2.to_datetime() == t2._obj.py_datetime()
def test_init_timestamp():
@@ -19,22 +24,85 @@ def test_init_timestamp():
t2 = Timestamp(t1)
assert t1.to_string() == t2.to_string()
assert isinstance(t2, Timestamp)
- assert t2.to_string() == t2.obj.to_iso8601_string()
+ assert t2.to_datetime() == t2._obj.py_datetime()
def test_parse_string():
REF = "2022-01-01T10:00:00.000000Z"
- assert Timestamp._parse_string(REF) == pendulum.parse(REF)
+ assert Timestamp._parse_string(REF).instant() == Instant.parse_common_iso(REF)
assert Timestamp._parse_string("5m")
assert Timestamp._parse_string("10min")
assert Timestamp._parse_string("2h")
assert Timestamp._parse_string("10s")
-
- with pytest.raises(ValueError):
+ assert Timestamp._parse_string("2025-01-02")
+ assert Timestamp._parse_string("2024-06-04T03:13:03.386270")
+ assert Timestamp._parse_string("2025-03-05T18:01:52+01:00")
+ with pytest.raises(TimestampFormatError):
Timestamp._parse_string("notvalid")
+@pytest.mark.parametrize(
+ "input_str,expected_datetime",
+ [
+ pytest.param(
+ "2022-01-01T10:01:01.123000Z", datetime(2022, 1, 1, 10, 1, 1, 123000, tzinfo=UTC), id="milliseconds"
+ ),
+ pytest.param(
+ "2023-12-31T23:59:59.999999Z", datetime(2023, 12, 31, 23, 59, 59, 999999, tzinfo=UTC), id="microseconds"
+ ),
+ pytest.param(
+ "2025-02-25T05:58:54.524191Z",
+ datetime(2025, 2, 25, 5, 58, 54, 524191, tzinfo=UTC),
+ id="milliseconds_with_offset",
+ ),
+ pytest.param(
+ "2025-02-25T06:38:37.753389419Z",
+ datetime(2025, 2, 25, 6, 38, 37, 753389, tzinfo=UTC),
+ id="nanoseconds",
+ ),
+ ],
+)
+def test_to_datetime(input_str, expected_datetime):
+ assert isinstance(Timestamp(input_str).to_datetime(), datetime)
+ assert Timestamp(input_str).to_datetime() == expected_datetime
+
+
+@pytest.mark.parametrize(
+ "input_str,expected_str,expected_str_no_z",
+ [
+ pytest.param(
+ "2022-01-01T10:01:01.123000Z",
+ "2022-01-01T10:01:01.123000Z",
+ "2022-01-01T10:01:01.123000+00:00",
+ id="milliseconds",
+ ),
+ pytest.param(
+ "2023-12-31T23:59:59.999999Z",
+ "2023-12-31T23:59:59.999999Z",
+ "2023-12-31T23:59:59.999999+00:00",
+ id="microseconds",
+ ),
+ ],
+)
+def test_to_string_default(input_str, expected_str, expected_str_no_z):
+ assert isinstance(Timestamp(input_str).to_string(), str)
+ assert Timestamp(input_str).to_string() == expected_str
+ assert Timestamp(input_str).to_string(with_z=False) == expected_str_no_z
+
+
+def test_add():
+ t1 = Timestamp("2022-01-01T10:01:01.123Z")
+ t2 = t1.add(hours=1)
+ assert t2.to_string() == "2022-01-01T11:01:01.123000Z"
+
+
+def test_subtract():
+ t1 = Timestamp("2022-01-01T10:05:01.123Z")
+ t2 = t1.subtract(hours=1)
+ assert t2.to_string() == "2022-01-01T09:05:01.123000Z"
+
+
def test_compare():
time1 = "2022-01-01T11:00:00.000000Z"
time2 = "2022-02-01T11:00:00.000000Z"
@@ -51,6 +119,15 @@ def test_compare():
assert t11 == t12
+def test_serialize():
+ time_no_z = "2022-01-01T11:00:00.000000+00:00"
+ time = "2022-01-01T11:00:00.000000Z"
+ timestamp = Timestamp(time)
+
+ assert timestamp.to_string(with_z=False) == time_no_z
+ assert timestamp.to_string() == time
+
+
@pytest.mark.parametrize("invalid_str", ["blurple", "1122334455667788", "2023-45-99"])
def test_invalid_raises_correct_error(invalid_str):
with pytest.raises(TimestampFormatError):
diff --git a/tests/unit/sdk/test_utils.py b/tests/unit/sdk/test_utils.py
index df424d2a..7f628c62 100644
--- a/tests/unit/sdk/test_utils.py
+++ b/tests/unit/sdk/test_utils.py
@@ -4,6 +4,7 @@
import pytest
from graphql import parse
+from whenever import Instant
from infrahub_sdk.node import InfrahubNode
from infrahub_sdk.utils import (
@@ -11,6 +12,7 @@
base16encode,
base36decode,
base36encode,
+ calculate_time_diff,
compare_lists,
deep_merge_dict,
dict_hash,
@@ -207,3 +209,20 @@ def test_write_to_file():
assert write_to_file(directory / "file.txt", {"key": "value"}) is True
tmp_dir.cleanup()
+
+
+def test_calculate_time_diff():
+ time1 = Instant.now().subtract(seconds=98).format_common_iso()
+ assert calculate_time_diff(time1) == "1m and 38s ago"
+
+ time2 = Instant.now().subtract(hours=1, minutes=12, seconds=34).format_common_iso()
+ assert calculate_time_diff(time2) == "1h 12m and 34s ago"
+
+ time3 = Instant.now().format_common_iso()
+ assert calculate_time_diff(time3) == "now"
+
+ time4 = Instant.now().subtract(seconds=23).format_common_iso()
+ assert calculate_time_diff(time4) == "23s ago"
+
+ time5 = Instant.now().subtract(hours=77, minutes=12, seconds=34).format_common_iso()
+ assert calculate_time_diff(time5) == "3d and 5h ago"