diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 5b52c8c..c14f984 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -436,6 +436,7 @@ export default defineConfig({ text: "Work Item Filters", link: "/core-concepts/issues/visualise_filter", }, + { text: "Plane Query Language", link: "/core-concepts/issues/plane-query-language" }, { text: "Display options", link: "/core-concepts/issues/display-options", diff --git a/docs/core-concepts/issues/plane-query-language.md b/docs/core-concepts/issues/plane-query-language.md new file mode 100644 index 0000000..defc6b3 --- /dev/null +++ b/docs/core-concepts/issues/plane-query-language.md @@ -0,0 +1,346 @@ +--- +title: Plane Query Language +description: Filter work items using text-based queries with Plane Query Language (PQL). +--- + +# Plane Query Language + +Plane Query Language (PQL) lets you filter work items using text-based queries. Write structured expressions to quickly find exactly what you need. + +![PQL editor](https://media.docs.plane.so/work-items/pql-editor.webp#hero) + +## Use the PQL editor + +Plane includes an interactive editor that helps you build queries. + +To switch to PQL mode, click **PQL** in the filter bar. + +When you start typing in the PQL field: + +1. A dropdown shows available **fields** +2. After selecting a field, you see **operators** +3. Then you choose or type **values** +4. Continue building your query using **AND** or **OR** + +![PQL autocomplete](https://media.docs.plane.so/work-items/pql-autocomplete.webp#hero) + +This guided experience lets you construct queries without memorizing syntax. + +## Query structure + +PQL queries follow a simple pattern: + +``` +Field Operator Value +``` + +Example: + +``` +priority = High +``` + +This returns all work items where priority is High. + +You can also combine multiple conditions using logical operators like `AND` and `OR`. + +**Using AND** + +``` +type = Bug AND priority = High +``` + +This returns work items that match both conditions. + +**Using OR** + +``` +state = Todo OR state = In Progress +``` + +This returns work items that match either condition. + +**Combined:** + +``` +(priority = High AND state in (Backlog, In Progress, Todo)) OR (type in (Bug, Task, Improvements) AND assignee in (Ethan, Parker, Amanda)) +``` + +## Save as view + +Once you've built your query, click **Save view** to preserve it for quick access later. See [Views](/core-concepts/views) for details. + +## Where PQL works + +PQL is available wherever work items are listed: + +- Work items +- Cycles +- Modules +- Views +- Teamspace work items +- Workspace views + +## Operators reference + +Each field supports different operators. The available operators depend on the field type. + +### id + +| Operator | Description | +| -------- | ------------------ | +| `=` | ID matches exactly | +| `!=` | ID does not match | +| `~` | ID contains text | + +### title + +| Operator | Description | +| -------- | --------------------- | +| `=` | Title matches exactly | +| `!=` | Title does not match | +| `~` | Title contains text | + +### type + +| Operator | Description | +| -------- | --------------------------------------- | +| `IN` | Type is any of the specified values | +| `NOT IN` | Type is not any of the specified values | +| `=` | Type matches exactly | +| `!=` | Type does not match | + +### state + +| Operator | Description | +| -------- | ---------------------------------------- | +| `IN` | State is any of the specified values | +| `NOT IN` | State is not any of the specified values | +| `=` | State matches exactly | +| `!=` | State does not match | + +### stateGroup + +| Operator | Description | +| -------- | ---------------------------------------------- | +| `IN` | State group is any of the specified values | +| `NOT IN` | State group is not any of the specified values | +| `=` | State group matches exactly | +| `!=` | State group does not match | + +### assignee + +| Operator | Description | +| --------- | -------------------------------------------- | +| `IN` | Assigned to any of the specified members | +| `NOT IN` | Not assigned to any of the specified members | +| `=` | Assigned to this member | +| `!=` | Not assigned to this member | +| `IS NULL` | No assignee | + +### priority + +| Operator | Description | +| -------- | ------------------------------------------- | +| `IN` | Priority is any of the specified values | +| `NOT IN` | Priority is not any of the specified values | +| `=` | Priority matches exactly | +| `!=` | Priority does not match | + +### mention + +| Operator | Description | +| --------- | --------------------------------------------- | +| `IN` | Mentions any of the specified members | +| `NOT IN` | Does not mention any of the specified members | +| `=` | Mentions this member | +| `!=` | Does not mention this member | +| `IS NULL` | No mentions | + +### label + +| Operator | Description | +| --------- | ----------------------------------------- | +| `IN` | Has any of the specified labels | +| `NOT IN` | Does not have any of the specified labels | +| `=` | Has this label | +| `!=` | Does not have this label | +| `IS NULL` | No labels | + +### cycle + +| Operator | Description | +| --------- | ---------------------------------- | +| `IN` | In any of the specified cycles | +| `NOT IN` | Not in any of the specified cycles | +| `=` | In this cycle | +| `!=` | Not in this cycle | +| `IS NULL` | Not in any cycle | + +### module + +| Operator | Description | +| --------- | ----------------------------------- | +| `IN` | In any of the specified modules | +| `NOT IN` | Not in any of the specified modules | +| `=` | In this module | +| `!=` | Not in this module | +| `IS NULL` | Not in any module | + +### milestone + +| Operator | Description | +| --------- | -------------------------------------- | +| `IN` | In any of the specified milestones | +| `NOT IN` | Not in any of the specified milestones | +| `=` | In this milestone | +| `!=` | Not in this milestone | +| `IS NULL` | No milestone | + +### startDate + +| Operator | Description | +| --------- | ---------------------------------------- | +| `=` | Start date is this date | +| `!=` | Start date is not this date | +| `<` | Start date is before this date | +| `<=` | Start date is on or before this date | +| `>` | Start date is after this date | +| `>=` | Start date is on or after this date | +| `BETWEEN` | Start date is within the specified range | +| `IS NULL` | No start date set | + +### dueDate + +| Operator | Description | +| --------- | -------------------------------------- | +| `=` | Due date is this date | +| `!=` | Due date is not this date | +| `<` | Due date is before this date | +| `<=` | Due date is on or before this date | +| `>` | Due date is after this date | +| `>=` | Due date is on or after this date | +| `BETWEEN` | Due date is within the specified range | +| `IS NULL` | No due date set | + +### createdAt + +| Operator | Description | +| --------- | ---------------------------------- | +| `=` | Created on this date | +| `!=` | Not created on this date | +| `<` | Created before this date | +| `<=` | Created on or before this date | +| `>` | Created after this date | +| `>=` | Created on or after this date | +| `BETWEEN` | Created within the specified range | +| `IS NULL` | No creation date | + +### updatedAt + +| Operator | Description | +| --------- | ---------------------------------- | +| `=` | Updated on this date | +| `!=` | Not updated on this date | +| `<` | Updated before this date | +| `<=` | Updated on or before this date | +| `>` | Updated after this date | +| `>=` | Updated on or after this date | +| `BETWEEN` | Updated within the specified range | +| `IS NULL` | No update date | + +### createdBy + +| Operator | Description | +| -------- | ------------------------------------------- | +| `IN` | Created by any of the specified members | +| `NOT IN` | Not created by any of the specified members | +| `=` | Created by this member | +| `!=` | Not created by this member | + +### Custom properties + +The available operators depend on the property type. + +#### Text + +| Operator | Description | +| -------- | -------------------- | +| `=` | Text matches exactly | +| `!=` | Text does not match | +| `~` | Text contains value | + +#### Number + +| Operator | Description | +| --------- | --------------------------------------------- | +| `=` | Number equals this value | +| `!=` | Number does not equal this value | +| `<` | Number is less than this value | +| `<=` | Number is less than or equal to this value | +| `>` | Number is greater than this value | +| `>=` | Number is greater than or equal to this value | +| `BETWEEN` | Number is within the specified range | +| `IS NULL` | No number set | + +#### Dropdown + +| Operator | Description | +| --------- | ----------------------------------------- | +| `IN` | Option is any of the specified values | +| `NOT IN` | Option is not any of the specified values | +| `=` | Option matches exactly | +| `!=` | Option does not match | +| `IS NULL` | No option selected | + +#### Boolean + +| Operator | Description | +| -------- | -------------------------- | +| `=` | Value is true or false | +| `!=` | Value is not true or false | + +#### Date + +| Operator | Description | +| --------- | ---------------------------------- | +| `=` | Date is this date | +| `!=` | Date is not this date | +| `<` | Date is before this date | +| `<=` | Date is on or before this date | +| `>` | Date is after this date | +| `>=` | Date is on or after this date | +| `BETWEEN` | Date is within the specified range | +| `IS NULL` | No date set | + +#### Member picker + +| Operator | Description | +| --------- | ----------------------------------------- | +| `IN` | Member is any of the specified values | +| `NOT IN` | Member is not any of the specified values | +| `=` | Member matches exactly | +| `!=` | Member does not match | +| `IS NULL` | No member selected | + +#### URL + +| Operator | Description | +| -------- | ------------------- | +| `=` | URL matches exactly | +| `!=` | URL does not match | +| `~` | URL contains text | + +## Built-in functions + +PQL includes functions to filter work items based on common scenarios. These functions return a boolean value (`true` or `false`). + +| Function | Description | +| --------------------- | ----------------------------------- | +| `isOverdue` | Due date is past and state is open | +| `hasNoAssignee` | Work item has no assignee | +| `hasNoLabel` | Work item has no labels | +| `isTopLevel` | Not a sub-work item (has no parent) | +| `isSubWorkItem` | Is a sub-work item (has a parent) | +| `hasChildren` | Has at least one sub-work item | +| `hasStartAndDueDates` | Has both start and due dates | diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db9e6a2..2121940 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 4.2.1(vite@5.4.21(lightningcss@1.31.1)) lucide-vue-next: specifier: ^0.577.0 - version: 0.577.0(vue@3.5.29) + version: 0.577.0(vue@3.5.30) medium-zoom: specifier: ^1.1.0 version: 1.1.0 @@ -22,13 +22,13 @@ importers: version: 4.2.1 vitepress: specifier: ^1.6.3 - version: 1.6.4(@algolia/client-search@5.49.1)(lightningcss@1.31.1)(postcss@8.5.8)(search-insights@2.17.3) + version: 1.6.4(@algolia/client-search@5.49.2)(lightningcss@1.31.1)(postcss@8.5.8)(search-insights@2.17.3) vitepress-plugin-tabs: specifier: ^0.8.0 - version: 0.8.0(vitepress@1.6.4(@algolia/client-search@5.49.1)(lightningcss@1.31.1)(postcss@8.5.8)(search-insights@2.17.3))(vue@3.5.29) + version: 0.8.0(vitepress@1.6.4(@algolia/client-search@5.49.2)(lightningcss@1.31.1)(postcss@8.5.8)(search-insights@2.17.3))(vue@3.5.30) vue: specifier: ^3.5.13 - version: 3.5.29 + version: 3.5.30 devDependencies: oxfmt: specifier: ^0.36.0 @@ -36,8 +36,8 @@ importers: packages: - '@algolia/abtesting@1.15.1': - resolution: {integrity: sha512-2yuIC48rUuHGhU1U5qJ9kJHaxYpJ0jpDHJVI5ekOxSMYXlH4+HP+pA31G820lsAznfmu2nzDV7n5RO44zIY1zw==} + '@algolia/abtesting@1.15.2': + resolution: {integrity: sha512-rF7vRVE61E0QORw8e2NNdnttcl3jmFMWS9B4hhdga12COe+lMa26bQLfcBn/Nbp9/AF/8gXdaRCPsVns3CnjsA==} engines: {node: '>= 14.0.0'} '@algolia/autocomplete-core@1.17.7': @@ -60,56 +60,56 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.49.1': - resolution: {integrity: sha512-h6M7HzPin+45/l09q0r2dYmocSSt2MMGOOk5c4O5K/bBBlEwf1BKfN6z+iX4b8WXcQQhf7rgQwC52kBZJt/ZZw==} + '@algolia/client-abtesting@5.49.2': + resolution: {integrity: sha512-XyvKCm0RRmovMI/ChaAVjTwpZhXdbgt3iZofK914HeEHLqD1MUFFVLz7M0+Ou7F56UkHXwRbpHwb9xBDNopprQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.49.1': - resolution: {integrity: sha512-048T9/Z8OeLmTk8h76QUqaNFp7Rq2VgS2Zm6Y2tNMYGQ1uNuzePY/udB5l5krlXll7ZGflyCjFvRiOtlPZpE9g==} + '@algolia/client-analytics@5.49.2': + resolution: {integrity: sha512-jq/3qvtmj3NijZlhq7A1B0Cl41GfaBpjJxcwukGsYds6aMSCWrEAJ9pUqw/C9B3hAmILYKl7Ljz3N9SFvekD3Q==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.49.1': - resolution: {integrity: sha512-vp5/a9ikqvf3mn9QvHN8PRekn8hW34aV9eX+O0J5mKPZXeA6Pd5OQEh2ZWf7gJY6yyfTlLp5LMFzQUAU+Fpqpg==} + '@algolia/client-common@5.49.2': + resolution: {integrity: sha512-bn0biLequn3epobCfjUqCxlIlurLr4RHu7RaE4trgN+RDcUq6HCVC3/yqq1hwbNYpVtulnTOJzcaxYlSr1fnuw==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.49.1': - resolution: {integrity: sha512-B6N7PgkvYrul3bntTz/l6uXnhQ2bvP+M7NqTcayh681tSqPaA5cJCUBp/vrP7vpPRpej4Eeyx2qz5p0tE/2N2g==} + '@algolia/client-insights@5.49.2': + resolution: {integrity: sha512-z14wfFs1T3eeYbCArC8pvntAWsPo9f6hnUGoj8IoRUJTwgJiiySECkm8bmmV47/x0oGHfsVn3kBdjMX0yq0sNA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.49.1': - resolution: {integrity: sha512-v+4DN+lkYfBd01Hbnb9ZrCHe7l+mvihyx218INRX/kaCXROIWUDIT1cs3urQxfE7kXBFnLsqYeOflQALv/gA5w==} + '@algolia/client-personalization@5.49.2': + resolution: {integrity: sha512-GpRf7yuuAX93+Qt0JGEJZwgtL0MFdjFO9n7dn8s2pA9mTjzl0Sc5+uTk1VPbIAuf7xhCP9Mve+URGb6J+EYxgA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.49.1': - resolution: {integrity: sha512-Un11cab6ZCv0W+Jiak8UktGIqoa4+gSNgEZNfG8m8eTsXGqwIEr370H3Rqwj87zeNSlFpH2BslMXJ/cLNS1qtg==} + '@algolia/client-query-suggestions@5.49.2': + resolution: {integrity: sha512-HZwApmNkp0DiAjZcLYdQLddcG4Agb88OkojiAHGgcm5DVXobT5uSZ9lmyrbw/tmQBJwgu2CNw4zTyXoIB7YbPA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.49.1': - resolution: {integrity: sha512-Nt9hri7nbOo0RipAsGjIssHkpLMHHN/P7QqENywAq5TLsoYDzUyJGny8FEiD/9KJUxtGH8blGpMedilI6kK3rA==} + '@algolia/client-search@5.49.2': + resolution: {integrity: sha512-y1IOpG6OSmTpGg/CT0YBb/EAhR2nsC18QWp9Jy8HO9iGySpcwaTvs5kHa17daP3BMTwWyaX9/1tDTDQshZzXdg==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.49.1': - resolution: {integrity: sha512-b5hUXwDqje0Y4CpU6VL481DXgPgxpTD5sYMnfQTHKgUispGnaCLCm2/T9WbJo1YNUbX3iHtYDArp804eD6CmRQ==} + '@algolia/ingestion@1.49.2': + resolution: {integrity: sha512-YYJRjaZ2bqk923HxE4um7j/Cm3/xoSkF2HC2ZweOF8cXL3sqnlndSUYmCaxHFjNPWLaSHk2IfssX6J/tdKTULw==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.49.1': - resolution: {integrity: sha512-bvrXwZ0WsL3rN6Q4m4QqxsXFCo6WAew7sAdrpMQMK4Efn4/W920r9ptOuckejOSSvyLr9pAWgC5rsHhR2FYuYw==} + '@algolia/monitoring@1.49.2': + resolution: {integrity: sha512-9WgH+Dha39EQQyGKCHlGYnxW/7W19DIrEbCEbnzwAMpGAv1yTWCHMPXHxYa+LcL3eCp2V/5idD1zHNlIKmHRHg==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.49.1': - resolution: {integrity: sha512-h2yz3AGeGkQwNgbLmoe3bxYs8fac4An1CprKTypYyTU/k3Q+9FbIvJ8aS1DoBKaTjSRZVoyQS7SZQio6GaHbZw==} + '@algolia/recommend@5.49.2': + resolution: {integrity: sha512-K7Gp5u+JtVYgaVpBxF5rGiM+Ia8SsMdcAJMTDV93rwh00DKNllC19o1g+PwrDjDvyXNrnTEbofzbTs2GLfFyKA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.49.1': - resolution: {integrity: sha512-2UPyRuUR/qpqSqH8mxFV5uBZWEpxhGPHLlx9Xf6OVxr79XO2ctzZQAhsmTZ6X22x+N8MBWpB9UEky7YU2HGFgA==} + '@algolia/requester-browser-xhr@5.49.2': + resolution: {integrity: sha512-3UhYCcWX6fbtN8ABcxZlhaQEwXFh3CsFtARyyadQShHMPe3mJV9Wel4FpJTa+seugRkbezFz0tt6aPTZSYTBuA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.49.1': - resolution: {integrity: sha512-N+xlE4lN+wpuT+4vhNEwPVlrfN+DWAZmSX9SYhbz986Oq8AMsqdntOqUyiOXVxYsQtfLwmiej24vbvJGYv1Qtw==} + '@algolia/requester-fetch@5.49.2': + resolution: {integrity: sha512-G94VKSGbsr+WjsDDOBe5QDQ82QYgxvpxRGJfCHZBnYKYsy/jv9qGIDb93biza+LJWizQBUtDj7bZzp3QZyzhPQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.49.1': - resolution: {integrity: sha512-zA5bkUOB5PPtTr182DJmajCiizHp0rCJQ0Chf96zNFvkdESKYlDeYA3tQ7r2oyHbu/8DiohAQ5PZ85edctzbXA==} + '@algolia/requester-node-http@5.49.2': + resolution: {integrity: sha512-UuihBGHafG/ENsrcTGAn5rsOffrCIRuHMOsD85fZGLEY92ate+BMTUqxz60dv5zerh8ZumN4bRm8eW2z9L11jA==} engines: {node: '>= 14.0.0'} '@babel/helper-string-parser@7.27.1': @@ -290,8 +290,8 @@ packages: cpu: [x64] os: [win32] - '@iconify-json/simple-icons@1.2.72': - resolution: {integrity: sha512-wkcixntHvaCoqPqerGrNFcHQ3Yx1ux4ZkhscCDK0DEHpP62XCH+cxq1HTsRjbUiQl/M9K8bj03HF6Wgn5iE2rQ==} + '@iconify-json/simple-icons@1.2.73': + resolution: {integrity: sha512-nQZTwul4c2zBqH/aLP4zMOiElj93T6HawbrP+sFQKpxmBdS5x1duCK3cAnkj6dntHz84EYkzaQRM83V2pj4qxA==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -724,17 +724,17 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 - '@vue/compiler-core@3.5.29': - resolution: {integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==} + '@vue/compiler-core@3.5.30': + resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==} - '@vue/compiler-dom@3.5.29': - resolution: {integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==} + '@vue/compiler-dom@3.5.30': + resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==} - '@vue/compiler-sfc@3.5.29': - resolution: {integrity: sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==} + '@vue/compiler-sfc@3.5.30': + resolution: {integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==} - '@vue/compiler-ssr@3.5.29': - resolution: {integrity: sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==} + '@vue/compiler-ssr@3.5.30': + resolution: {integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==} '@vue/devtools-api@7.7.9': resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} @@ -745,22 +745,22 @@ packages: '@vue/devtools-shared@7.7.9': resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} - '@vue/reactivity@3.5.29': - resolution: {integrity: sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==} + '@vue/reactivity@3.5.30': + resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==} - '@vue/runtime-core@3.5.29': - resolution: {integrity: sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==} + '@vue/runtime-core@3.5.30': + resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==} - '@vue/runtime-dom@3.5.29': - resolution: {integrity: sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==} + '@vue/runtime-dom@3.5.30': + resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==} - '@vue/server-renderer@3.5.29': - resolution: {integrity: sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==} + '@vue/server-renderer@3.5.30': + resolution: {integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==} peerDependencies: - vue: 3.5.29 + vue: 3.5.30 - '@vue/shared@3.5.29': - resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==} + '@vue/shared@3.5.30': + resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} '@vueuse/core@12.8.2': resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} @@ -812,8 +812,8 @@ packages: '@vueuse/shared@12.8.2': resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} - algoliasearch@5.49.1: - resolution: {integrity: sha512-X3Pp2aRQhg4xUC6PQtkubn5NpRKuUPQ9FPDQlx36SmpFwwH2N0/tw4c+NXV3nw3PsgeUs+BuWGP0gjz3TvENLQ==} + algoliasearch@5.49.2: + resolution: {integrity: sha512-1K0wtDaRONwfhL4h8bbJ9qTjmY6rhGgRvvagXkMBsAOMNr+3Q2SffHECh9DIuNVrMA1JwA0zCwhyepgBZVakng==} engines: {node: '>= 14.0.0'} birpc@2.9.0: @@ -1034,8 +1034,8 @@ packages: resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} - preact@10.28.4: - resolution: {integrity: sha512-uKFfOHWuSNpRFVTnljsCluEFq57OKT+0QdOiQo8XWnQ/pSvg7OpX5eNOejELXJMWy+BwM2nobz0FkvzmnpCNsQ==} + preact@10.29.0: + resolution: {integrity: sha512-wSAGyk2bYR1c7t3SZ3jHcM6xy0lcBcDel6lODcs9ME6Th++Dx2KU+6D3HD8wMMKGA8Wpw7OMd3/4RGzYRpzwRg==} property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} @@ -1168,8 +1168,8 @@ packages: postcss: optional: true - vue@3.5.29: - resolution: {integrity: sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==} + vue@3.5.30: + resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -1181,117 +1181,117 @@ packages: snapshots: - '@algolia/abtesting@1.15.1': + '@algolia/abtesting@1.15.2': dependencies: - '@algolia/client-common': 5.49.1 - '@algolia/requester-browser-xhr': 5.49.1 - '@algolia/requester-fetch': 5.49.1 - '@algolia/requester-node-http': 5.49.1 + '@algolia/client-common': 5.49.2 + '@algolia/requester-browser-xhr': 5.49.2 + '@algolia/requester-fetch': 5.49.2 + '@algolia/requester-node-http': 5.49.2 - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.49.2)(algoliasearch@5.49.2)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.49.1)(algoliasearch@5.49.1) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.49.2)(algoliasearch@5.49.2)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.49.2)(algoliasearch@5.49.2) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.49.2)(algoliasearch@5.49.2)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.49.1)(algoliasearch@5.49.1) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.49.2)(algoliasearch@5.49.2) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.49.2)(algoliasearch@5.49.2)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.49.1)(algoliasearch@5.49.1) - '@algolia/client-search': 5.49.1 - algoliasearch: 5.49.1 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.49.2)(algoliasearch@5.49.2) + '@algolia/client-search': 5.49.2 + algoliasearch: 5.49.2 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.49.2)(algoliasearch@5.49.2)': dependencies: - '@algolia/client-search': 5.49.1 - algoliasearch: 5.49.1 + '@algolia/client-search': 5.49.2 + algoliasearch: 5.49.2 - '@algolia/client-abtesting@5.49.1': + '@algolia/client-abtesting@5.49.2': dependencies: - '@algolia/client-common': 5.49.1 - '@algolia/requester-browser-xhr': 5.49.1 - '@algolia/requester-fetch': 5.49.1 - '@algolia/requester-node-http': 5.49.1 + '@algolia/client-common': 5.49.2 + '@algolia/requester-browser-xhr': 5.49.2 + '@algolia/requester-fetch': 5.49.2 + '@algolia/requester-node-http': 5.49.2 - '@algolia/client-analytics@5.49.1': + '@algolia/client-analytics@5.49.2': dependencies: - '@algolia/client-common': 5.49.1 - '@algolia/requester-browser-xhr': 5.49.1 - '@algolia/requester-fetch': 5.49.1 - '@algolia/requester-node-http': 5.49.1 + '@algolia/client-common': 5.49.2 + '@algolia/requester-browser-xhr': 5.49.2 + '@algolia/requester-fetch': 5.49.2 + '@algolia/requester-node-http': 5.49.2 - '@algolia/client-common@5.49.1': {} + '@algolia/client-common@5.49.2': {} - '@algolia/client-insights@5.49.1': + '@algolia/client-insights@5.49.2': dependencies: - '@algolia/client-common': 5.49.1 - '@algolia/requester-browser-xhr': 5.49.1 - '@algolia/requester-fetch': 5.49.1 - '@algolia/requester-node-http': 5.49.1 + '@algolia/client-common': 5.49.2 + '@algolia/requester-browser-xhr': 5.49.2 + '@algolia/requester-fetch': 5.49.2 + '@algolia/requester-node-http': 5.49.2 - '@algolia/client-personalization@5.49.1': + '@algolia/client-personalization@5.49.2': dependencies: - '@algolia/client-common': 5.49.1 - '@algolia/requester-browser-xhr': 5.49.1 - '@algolia/requester-fetch': 5.49.1 - '@algolia/requester-node-http': 5.49.1 + '@algolia/client-common': 5.49.2 + '@algolia/requester-browser-xhr': 5.49.2 + '@algolia/requester-fetch': 5.49.2 + '@algolia/requester-node-http': 5.49.2 - '@algolia/client-query-suggestions@5.49.1': + '@algolia/client-query-suggestions@5.49.2': dependencies: - '@algolia/client-common': 5.49.1 - '@algolia/requester-browser-xhr': 5.49.1 - '@algolia/requester-fetch': 5.49.1 - '@algolia/requester-node-http': 5.49.1 + '@algolia/client-common': 5.49.2 + '@algolia/requester-browser-xhr': 5.49.2 + '@algolia/requester-fetch': 5.49.2 + '@algolia/requester-node-http': 5.49.2 - '@algolia/client-search@5.49.1': + '@algolia/client-search@5.49.2': dependencies: - '@algolia/client-common': 5.49.1 - '@algolia/requester-browser-xhr': 5.49.1 - '@algolia/requester-fetch': 5.49.1 - '@algolia/requester-node-http': 5.49.1 + '@algolia/client-common': 5.49.2 + '@algolia/requester-browser-xhr': 5.49.2 + '@algolia/requester-fetch': 5.49.2 + '@algolia/requester-node-http': 5.49.2 - '@algolia/ingestion@1.49.1': + '@algolia/ingestion@1.49.2': dependencies: - '@algolia/client-common': 5.49.1 - '@algolia/requester-browser-xhr': 5.49.1 - '@algolia/requester-fetch': 5.49.1 - '@algolia/requester-node-http': 5.49.1 + '@algolia/client-common': 5.49.2 + '@algolia/requester-browser-xhr': 5.49.2 + '@algolia/requester-fetch': 5.49.2 + '@algolia/requester-node-http': 5.49.2 - '@algolia/monitoring@1.49.1': + '@algolia/monitoring@1.49.2': dependencies: - '@algolia/client-common': 5.49.1 - '@algolia/requester-browser-xhr': 5.49.1 - '@algolia/requester-fetch': 5.49.1 - '@algolia/requester-node-http': 5.49.1 + '@algolia/client-common': 5.49.2 + '@algolia/requester-browser-xhr': 5.49.2 + '@algolia/requester-fetch': 5.49.2 + '@algolia/requester-node-http': 5.49.2 - '@algolia/recommend@5.49.1': + '@algolia/recommend@5.49.2': dependencies: - '@algolia/client-common': 5.49.1 - '@algolia/requester-browser-xhr': 5.49.1 - '@algolia/requester-fetch': 5.49.1 - '@algolia/requester-node-http': 5.49.1 + '@algolia/client-common': 5.49.2 + '@algolia/requester-browser-xhr': 5.49.2 + '@algolia/requester-fetch': 5.49.2 + '@algolia/requester-node-http': 5.49.2 - '@algolia/requester-browser-xhr@5.49.1': + '@algolia/requester-browser-xhr@5.49.2': dependencies: - '@algolia/client-common': 5.49.1 + '@algolia/client-common': 5.49.2 - '@algolia/requester-fetch@5.49.1': + '@algolia/requester-fetch@5.49.2': dependencies: - '@algolia/client-common': 5.49.1 + '@algolia/client-common': 5.49.2 - '@algolia/requester-node-http@5.49.1': + '@algolia/requester-node-http@5.49.2': dependencies: - '@algolia/client-common': 5.49.1 + '@algolia/client-common': 5.49.2 '@babel/helper-string-parser@7.27.1': {} @@ -1308,10 +1308,10 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.49.1)(search-insights@2.17.3)': + '@docsearch/js@3.8.2(@algolia/client-search@5.49.2)(search-insights@2.17.3)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.49.1)(search-insights@2.17.3) - preact: 10.28.4 + '@docsearch/react': 3.8.2(@algolia/client-search@5.49.2)(search-insights@2.17.3) + preact: 10.29.0 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -1319,12 +1319,12 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.8.2(@algolia/client-search@5.49.1)(search-insights@2.17.3)': + '@docsearch/react@3.8.2(@algolia/client-search@5.49.2)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.49.1)(algoliasearch@5.49.1) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.49.2)(algoliasearch@5.49.2)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.49.2)(algoliasearch@5.49.2) '@docsearch/css': 3.8.2 - algoliasearch: 5.49.1 + algoliasearch: 5.49.2 optionalDependencies: search-insights: 2.17.3 transitivePeerDependencies: @@ -1399,7 +1399,7 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@iconify-json/simple-icons@1.2.72': + '@iconify-json/simple-icons@1.2.73': dependencies: '@iconify/types': 2.0.0 @@ -1689,40 +1689,40 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@5.2.4(vite@5.4.21(lightningcss@1.31.1))(vue@3.5.29)': + '@vitejs/plugin-vue@5.2.4(vite@5.4.21(lightningcss@1.31.1))(vue@3.5.30)': dependencies: vite: 5.4.21(lightningcss@1.31.1) - vue: 3.5.29 + vue: 3.5.30 - '@vue/compiler-core@3.5.29': + '@vue/compiler-core@3.5.30': dependencies: '@babel/parser': 7.29.0 - '@vue/shared': 3.5.29 + '@vue/shared': 3.5.30 entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.29': + '@vue/compiler-dom@3.5.30': dependencies: - '@vue/compiler-core': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/compiler-core': 3.5.30 + '@vue/shared': 3.5.30 - '@vue/compiler-sfc@3.5.29': + '@vue/compiler-sfc@3.5.30': dependencies: '@babel/parser': 7.29.0 - '@vue/compiler-core': 3.5.29 - '@vue/compiler-dom': 3.5.29 - '@vue/compiler-ssr': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/compiler-core': 3.5.30 + '@vue/compiler-dom': 3.5.30 + '@vue/compiler-ssr': 3.5.30 + '@vue/shared': 3.5.30 estree-walker: 2.0.2 magic-string: 0.30.21 postcss: 8.5.8 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.29': + '@vue/compiler-ssr@3.5.30': dependencies: - '@vue/compiler-dom': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/compiler-dom': 3.5.30 + '@vue/shared': 3.5.30 '@vue/devtools-api@7.7.9': dependencies: @@ -1742,36 +1742,36 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/reactivity@3.5.29': + '@vue/reactivity@3.5.30': dependencies: - '@vue/shared': 3.5.29 + '@vue/shared': 3.5.30 - '@vue/runtime-core@3.5.29': + '@vue/runtime-core@3.5.30': dependencies: - '@vue/reactivity': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/reactivity': 3.5.30 + '@vue/shared': 3.5.30 - '@vue/runtime-dom@3.5.29': + '@vue/runtime-dom@3.5.30': dependencies: - '@vue/reactivity': 3.5.29 - '@vue/runtime-core': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/reactivity': 3.5.30 + '@vue/runtime-core': 3.5.30 + '@vue/shared': 3.5.30 csstype: 3.2.3 - '@vue/server-renderer@3.5.29(vue@3.5.29)': + '@vue/server-renderer@3.5.30(vue@3.5.30)': dependencies: - '@vue/compiler-ssr': 3.5.29 - '@vue/shared': 3.5.29 - vue: 3.5.29 + '@vue/compiler-ssr': 3.5.30 + '@vue/shared': 3.5.30 + vue: 3.5.30 - '@vue/shared@3.5.29': {} + '@vue/shared@3.5.30': {} '@vueuse/core@12.8.2': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 '@vueuse/shared': 12.8.2 - vue: 3.5.29 + vue: 3.5.30 transitivePeerDependencies: - typescript @@ -1779,7 +1779,7 @@ snapshots: dependencies: '@vueuse/core': 12.8.2 '@vueuse/shared': 12.8.2 - vue: 3.5.29 + vue: 3.5.30 optionalDependencies: focus-trap: 7.8.0 transitivePeerDependencies: @@ -1789,26 +1789,26 @@ snapshots: '@vueuse/shared@12.8.2': dependencies: - vue: 3.5.29 + vue: 3.5.30 transitivePeerDependencies: - typescript - algoliasearch@5.49.1: - dependencies: - '@algolia/abtesting': 1.15.1 - '@algolia/client-abtesting': 5.49.1 - '@algolia/client-analytics': 5.49.1 - '@algolia/client-common': 5.49.1 - '@algolia/client-insights': 5.49.1 - '@algolia/client-personalization': 5.49.1 - '@algolia/client-query-suggestions': 5.49.1 - '@algolia/client-search': 5.49.1 - '@algolia/ingestion': 1.49.1 - '@algolia/monitoring': 1.49.1 - '@algolia/recommend': 5.49.1 - '@algolia/requester-browser-xhr': 5.49.1 - '@algolia/requester-fetch': 5.49.1 - '@algolia/requester-node-http': 5.49.1 + algoliasearch@5.49.2: + dependencies: + '@algolia/abtesting': 1.15.2 + '@algolia/client-abtesting': 5.49.2 + '@algolia/client-analytics': 5.49.2 + '@algolia/client-common': 5.49.2 + '@algolia/client-insights': 5.49.2 + '@algolia/client-personalization': 5.49.2 + '@algolia/client-query-suggestions': 5.49.2 + '@algolia/client-search': 5.49.2 + '@algolia/ingestion': 1.49.2 + '@algolia/monitoring': 1.49.2 + '@algolia/recommend': 5.49.2 + '@algolia/requester-browser-xhr': 5.49.2 + '@algolia/requester-fetch': 5.49.2 + '@algolia/requester-node-http': 5.49.2 birpc@2.9.0: {} @@ -1955,9 +1955,9 @@ snapshots: lightningcss-win32-arm64-msvc: 1.31.1 lightningcss-win32-x64-msvc: 1.31.1 - lucide-vue-next@0.577.0(vue@3.5.29): + lucide-vue-next@0.577.0(vue@3.5.30): dependencies: - vue: 3.5.29 + vue: 3.5.30 magic-string@0.30.21: dependencies: @@ -2042,7 +2042,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.28.4: {} + preact@10.29.0: {} property-information@7.1.0: {} @@ -2169,23 +2169,23 @@ snapshots: fsevents: 2.3.3 lightningcss: 1.31.1 - vitepress-plugin-tabs@0.8.0(vitepress@1.6.4(@algolia/client-search@5.49.1)(lightningcss@1.31.1)(postcss@8.5.8)(search-insights@2.17.3))(vue@3.5.29): + vitepress-plugin-tabs@0.8.0(vitepress@1.6.4(@algolia/client-search@5.49.2)(lightningcss@1.31.1)(postcss@8.5.8)(search-insights@2.17.3))(vue@3.5.30): dependencies: - vitepress: 1.6.4(@algolia/client-search@5.49.1)(lightningcss@1.31.1)(postcss@8.5.8)(search-insights@2.17.3) - vue: 3.5.29 + vitepress: 1.6.4(@algolia/client-search@5.49.2)(lightningcss@1.31.1)(postcss@8.5.8)(search-insights@2.17.3) + vue: 3.5.30 - vitepress@1.6.4(@algolia/client-search@5.49.1)(lightningcss@1.31.1)(postcss@8.5.8)(search-insights@2.17.3): + vitepress@1.6.4(@algolia/client-search@5.49.2)(lightningcss@1.31.1)(postcss@8.5.8)(search-insights@2.17.3): dependencies: '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.49.1)(search-insights@2.17.3) - '@iconify-json/simple-icons': 1.2.72 + '@docsearch/js': 3.8.2(@algolia/client-search@5.49.2)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.73 '@shikijs/core': 2.5.0 '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(lightningcss@1.31.1))(vue@3.5.29) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(lightningcss@1.31.1))(vue@3.5.30) '@vue/devtools-api': 7.7.9 - '@vue/shared': 3.5.29 + '@vue/shared': 3.5.30 '@vueuse/core': 12.8.2 '@vueuse/integrations': 12.8.2(focus-trap@7.8.0) focus-trap: 7.8.0 @@ -2193,7 +2193,7 @@ snapshots: minisearch: 7.2.0 shiki: 2.5.0 vite: 5.4.21(lightningcss@1.31.1) - vue: 3.5.29 + vue: 3.5.30 optionalDependencies: postcss: 8.5.8 transitivePeerDependencies: @@ -2223,12 +2223,12 @@ snapshots: - typescript - universal-cookie - vue@3.5.29: + vue@3.5.30: dependencies: - '@vue/compiler-dom': 3.5.29 - '@vue/compiler-sfc': 3.5.29 - '@vue/runtime-dom': 3.5.29 - '@vue/server-renderer': 3.5.29(vue@3.5.29) - '@vue/shared': 3.5.29 + '@vue/compiler-dom': 3.5.30 + '@vue/compiler-sfc': 3.5.30 + '@vue/runtime-dom': 3.5.30 + '@vue/server-renderer': 3.5.30(vue@3.5.30) + '@vue/shared': 3.5.30 zwitch@2.0.4: {}