= () => (
);
diff --git a/packages/react/src/Renderer.tsx b/packages/react/src/Renderer.tsx
index b07cdca19..1ba4c5982 100644
--- a/packages/react/src/Renderer.tsx
+++ b/packages/react/src/Renderer.tsx
@@ -46,9 +46,10 @@ export class RendererComponent<
* Stateless Renderer.
*
* @template P type of any renderer props
+ * @deprecated Use React.FunctionComponent instead
*/
export type StatelessRenderer =
- React.StatelessComponent
;
+ React.FunctionComponent
;
/**
* Represents a Renderer, which might either be a component or a function.
@@ -57,4 +58,4 @@ export type Renderer =
// TODO fix @typescript-eslint/ban-types
// eslint-disable-next-line @typescript-eslint/ban-types
| RendererComponent
- | StatelessRenderer;
+ | React.FunctionComponent;
diff --git a/packages/react/test/renderers/JsonForms.test.tsx b/packages/react/test/renderers/JsonForms.test.tsx
index d863fb6bb..fb142d4f1 100644
--- a/packages/react/test/renderers/JsonForms.test.tsx
+++ b/packages/react/test/renderers/JsonForms.test.tsx
@@ -50,7 +50,6 @@ import {
} from '@jsonforms/core';
import { isEqual } from 'lodash';
import Enzyme, { mount, shallow } from 'enzyme';
-import type { StatelessRenderer } from '../../src/Renderer';
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
import {
JsonForms,
@@ -114,13 +113,13 @@ export const initJsonFormsStore = ({
return createStore(reducer, initState);
};
-const CustomRenderer1: StatelessRenderer = () => test
;
-const CustomRenderer2: StatelessRenderer = () => test
;
-const CustomRenderer3: StatelessRenderer = () => test
;
-const CellRenderer1: StatelessRenderer = () => (
+const CustomRenderer1: React.FC = () => test
;
+const CustomRenderer2: React.FC = () => test
;
+const CustomRenderer3: React.FC = () => test
;
+const CellRenderer1: React.FC = () => (
test
);
-const CellRenderer2: StatelessRenderer = () => (
+const CellRenderer2: React.FC = () => (
test
);
@@ -256,7 +255,7 @@ test('ids should be unique within the same form', () => {
});
const ids: string[] = [];
- const MyCustomRenderer: StatelessRenderer = (props: any) => {
+ const MyCustomRenderer: React.FC = (props: any) => {
ids.push(props.id);
return Custom
;
};
@@ -432,9 +431,7 @@ test('JsonForms renderer should pick most applicable cell renderer via ownProps'
});
store.dispatch(registerCell(() => 50, CellRenderer1));
- const ArrayRenderer: StatelessRenderer = (
- props: RendererProps
- ) => {
+ const ArrayRenderer: React.FC = (props: RendererProps) => {
return (
{
});
test('JsonForms renderer should pick enabled prop from ownProps', () => {
- const CustomRenderer4: StatelessRenderer = (
- props: RendererProps
- ) => {
+ const CustomRenderer4: React.FC = (props: RendererProps) => {
return {`${props.enabled}`}
;
};
@@ -1010,7 +1005,7 @@ test('JsonForms should update if data prop is updated', () => {
});
test('JsonForms should use additionalErrors if provided', () => {
- const CustomRendererWithError: StatelessRenderer = ({
+ const CustomRendererWithError: React.FC = ({
errors,
}: ControlProps) => {
return {errors}
;
@@ -1048,7 +1043,7 @@ test('JsonForms should use additionalErrors if provided', () => {
});
test('JsonForms should use react to additionalErrors update', () => {
- const CustomRendererWithError: StatelessRenderer = ({
+ const CustomRendererWithError: React.FC = ({
errors,
}: ControlProps) => {
return {errors}
;
diff --git a/packages/vanilla-renderers/src/cells/BooleanCell.tsx b/packages/vanilla-renderers/src/cells/BooleanCell.tsx
index efb76ebe6..2213ad040 100644
--- a/packages/vanilla-renderers/src/cells/BooleanCell.tsx
+++ b/packages/vanilla-renderers/src/cells/BooleanCell.tsx
@@ -30,13 +30,10 @@ import {
rankWith,
} from '@jsonforms/core';
import { withJsonFormsCellProps } from '@jsonforms/react';
-import type { StatelessComponent } from 'react';
import type { VanillaRendererProps } from '../index';
import { withVanillaBooleanCellProps } from '../util/index';
-export const BooleanCell: StatelessComponent = (
- props: CellProps & VanillaRendererProps
-) => {
+export const BooleanCell = (props: CellProps & VanillaRendererProps) => {
const { data, className, id, enabled, uischema, path, handleChange } = props;
return (
From e2909a26201a6a83844e2344870b6cf5f4b4a534 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 5 Mar 2026 15:16:11 +0100
Subject: [PATCH 12/29] deps(dev): bump rollup from 2.79.1 to 2.80.0 (#2546)
Bumps [rollup](https://github.com/rollup/rollup) from 2.79.1 to 2.80.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/v2.80.0/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.79.1...v2.80.0)
---
updated-dependencies:
- dependency-name: rollup
dependency-version: 2.80.0
dependency-type: direct:development
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pnpm-lock.yaml | 430 ++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 340 insertions(+), 90 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 80199bcaa..5d0477d39 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -427,16 +427,16 @@ importers:
version: 6.1.0
rollup:
specifier: ^2.78.0
- version: 2.79.1
+ version: 2.80.0
rollup-plugin-cleanup:
specifier: ^3.2.1
- version: 3.2.1(rollup@2.79.1)
+ version: 3.2.1(rollup@2.80.0)
rollup-plugin-typescript2:
specifier: ^0.34.1
- version: 0.34.1(rollup@2.79.1)(typescript@5.5.4)
+ version: 0.34.1(rollup@2.80.0)(typescript@5.5.4)
rollup-plugin-visualizer:
specifier: ^5.4.1
- version: 5.12.0(rollup@2.79.1)
+ version: 5.12.0(rollup@2.80.0)
source-map-support:
specifier: ^0.5.21
version: 0.5.21
@@ -494,16 +494,16 @@ importers:
version: 6.1.0
rollup:
specifier: ^2.78.0
- version: 2.79.1
+ version: 2.80.0
rollup-plugin-cleanup:
specifier: ^3.2.1
- version: 3.2.1(rollup@2.79.1)
+ version: 3.2.1(rollup@2.80.0)
rollup-plugin-typescript2:
specifier: ^0.34.1
- version: 0.34.1(rollup@2.79.1)(typescript@5.5.4)
+ version: 0.34.1(rollup@2.80.0)(typescript@5.5.4)
rollup-plugin-visualizer:
specifier: ^5.4.1
- version: 5.12.0(rollup@2.79.1)
+ version: 5.12.0(rollup@2.80.0)
tslib:
specifier: ^2.5.0
version: 2.6.2
@@ -634,16 +634,16 @@ importers:
version: 8.11.3(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@mui/material@7.3.0(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(@mui/system@7.3.0(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(dayjs@1.10.7)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)
'@rollup/plugin-commonjs':
specifier: ^23.0.3
- version: 23.0.7(rollup@2.79.1)
+ version: 23.0.7(rollup@2.80.0)
'@rollup/plugin-json':
specifier: ^5.0.2
- version: 5.0.2(rollup@2.79.1)
+ version: 5.0.2(rollup@2.80.0)
'@rollup/plugin-node-resolve':
specifier: ^15.0.1
- version: 15.2.3(rollup@2.79.1)
+ version: 15.2.3(rollup@2.80.0)
'@rollup/plugin-replace':
specifier: ^5.0.1
- version: 5.0.5(rollup@2.79.1)
+ version: 5.0.5(rollup@2.80.0)
'@types/enzyme':
specifier: ^3.10.3
version: 3.10.18
@@ -712,22 +712,22 @@ importers:
version: 6.1.0
rollup:
specifier: ^2.78.0
- version: 2.79.1
+ version: 2.80.0
rollup-plugin-cleanup:
specifier: ^3.2.1
- version: 3.2.1(rollup@2.79.1)
+ version: 3.2.1(rollup@2.80.0)
rollup-plugin-copy:
specifier: ^3.4.0
version: 3.5.0
rollup-plugin-import-css:
specifier: ^3.3.1
- version: 3.5.0(rollup@2.79.1)
+ version: 3.5.0(rollup@2.80.0)
rollup-plugin-typescript2:
specifier: ^0.34.1
- version: 0.34.1(rollup@2.79.1)(typescript@5.5.4)
+ version: 0.34.1(rollup@2.80.0)(typescript@5.5.4)
rollup-plugin-visualizer:
specifier: ^5.4.1
- version: 5.12.0(rollup@2.79.1)
+ version: 5.12.0(rollup@2.80.0)
source-map-loader:
specifier: ^0.2.4
version: 0.2.4
@@ -767,7 +767,7 @@ importers:
version: link:../core
'@rollup/plugin-alias':
specifier: ^3.1.8
- version: 3.1.9(rollup@2.79.1)
+ version: 3.1.9(rollup@2.80.0)
'@types/enzyme':
specifier: ^3.10.3
version: 3.10.18
@@ -845,16 +845,16 @@ importers:
version: 6.1.0
rollup:
specifier: ^2.78.0
- version: 2.79.1
+ version: 2.80.0
rollup-plugin-cleanup:
specifier: ^3.2.1
- version: 3.2.1(rollup@2.79.1)
+ version: 3.2.1(rollup@2.80.0)
rollup-plugin-typescript2:
specifier: ^0.34.1
- version: 0.34.1(rollup@2.79.1)(typescript@5.5.4)
+ version: 0.34.1(rollup@2.80.0)(typescript@5.5.4)
rollup-plugin-visualizer:
specifier: ^5.4.1
- version: 5.12.0(rollup@2.79.1)
+ version: 5.12.0(rollup@2.80.0)
ts-jest:
specifier: ^29.4.5
version: 29.4.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4)
@@ -885,16 +885,16 @@ importers:
version: link:../react
'@rollup/plugin-commonjs':
specifier: ^23.0.3
- version: 23.0.7(rollup@2.79.1)
+ version: 23.0.7(rollup@2.80.0)
'@rollup/plugin-json':
specifier: ^5.0.2
- version: 5.0.2(rollup@2.79.1)
+ version: 5.0.2(rollup@2.80.0)
'@rollup/plugin-node-resolve':
specifier: ^15.0.1
- version: 15.2.3(rollup@2.79.1)
+ version: 15.2.3(rollup@2.80.0)
'@rollup/plugin-replace':
specifier: ^5.0.1
- version: 5.0.5(rollup@2.79.1)
+ version: 5.0.5(rollup@2.80.0)
'@types/enzyme':
specifier: ^3.10.3
version: 3.10.18
@@ -960,22 +960,22 @@ importers:
version: 6.1.0
rollup:
specifier: ^2.78.0
- version: 2.79.1
+ version: 2.80.0
rollup-plugin-cleanup:
specifier: ^3.2.1
- version: 3.2.1(rollup@2.79.1)
+ version: 3.2.1(rollup@2.80.0)
rollup-plugin-copy:
specifier: ^3.4.0
version: 3.5.0
rollup-plugin-import-css:
specifier: ^3.3.1
- version: 3.5.0(rollup@2.79.1)
+ version: 3.5.0(rollup@2.80.0)
rollup-plugin-typescript2:
specifier: ^0.34.1
- version: 0.34.1(rollup@2.79.1)(typescript@5.5.4)
+ version: 0.34.1(rollup@2.80.0)(typescript@5.5.4)
rollup-plugin-visualizer:
specifier: ^5.4.1
- version: 5.12.0(rollup@2.79.1)
+ version: 5.12.0(rollup@2.80.0)
source-map-loader:
specifier: ^0.2.4
version: 0.2.4
@@ -1024,7 +1024,7 @@ importers:
version: link:../core
'@rollup/plugin-alias':
specifier: ^3.1.8
- version: 3.1.9(rollup@2.79.1)
+ version: 3.1.9(rollup@2.80.0)
'@types/jest':
specifier: ^29.5.14
version: 29.5.14
@@ -1090,19 +1090,19 @@ importers:
version: 6.1.0
rollup:
specifier: ^2.78.0
- version: 2.79.1
+ version: 2.80.0
rollup-plugin-babel:
specifier: ^4.4.0
- version: 4.4.0(@babel/core@7.24.5)(rollup@2.79.1)
+ version: 4.4.0(@babel/core@7.24.5)(rollup@2.80.0)
rollup-plugin-cleanup:
specifier: ^3.2.1
- version: 3.2.1(rollup@2.79.1)
+ version: 3.2.1(rollup@2.80.0)
rollup-plugin-typescript2:
specifier: ^0.34.1
- version: 0.34.1(rollup@2.79.1)(typescript@5.5.4)
+ version: 0.34.1(rollup@2.80.0)(typescript@5.5.4)
rollup-plugin-visualizer:
specifier: ^5.4.1
- version: 5.12.0(rollup@2.79.1)
+ version: 5.12.0(rollup@2.80.0)
rollup-plugin-vue:
specifier: ^6.0.0
version: 6.0.0(@vue/compiler-sfc@3.5.17)
@@ -1214,19 +1214,19 @@ importers:
version: 6.1.0
rollup:
specifier: ^2.78.0
- version: 2.79.1
+ version: 2.80.0
rollup-plugin-babel:
specifier: ^4.4.0
- version: 4.4.0(@babel/core@7.24.5)(rollup@2.79.1)
+ version: 4.4.0(@babel/core@7.24.5)(rollup@2.80.0)
rollup-plugin-cleanup:
specifier: ^3.2.1
- version: 3.2.1(rollup@2.79.1)
+ version: 3.2.1(rollup@2.80.0)
rollup-plugin-typescript2:
specifier: ^0.34.1
- version: 0.34.1(rollup@2.79.1)(typescript@5.5.4)
+ version: 0.34.1(rollup@2.80.0)(typescript@5.5.4)
rollup-plugin-visualizer:
specifier: ^5.4.1
- version: 5.12.0(rollup@2.79.1)
+ version: 5.12.0(rollup@2.80.0)
rollup-plugin-vue:
specifier: ^6.0.0
version: 6.0.0(@vue/compiler-sfc@3.5.17)
@@ -1367,10 +1367,10 @@ importers:
version: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
vite-plugin-dts:
specifier: ^3.9.1
- version: 3.9.1(@types/node@22.13.8)(rollup@4.52.4)(typescript@5.5.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))
+ version: 3.9.1(@types/node@22.13.8)(rollup@4.59.0)(typescript@5.5.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))
vite-plugin-node-polyfills:
specifier: ^0.21.0
- version: 0.21.0(rollup@4.52.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))
+ version: 0.21.0(rollup@4.59.0)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))
vite-plugin-static-copy:
specifier: ^2.3.2
version: 2.3.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))
@@ -4749,6 +4749,11 @@ packages:
cpu: [arm]
os: [android]
+ '@rollup/rollup-android-arm-eabi@4.59.0':
+ resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==}
+ cpu: [arm]
+ os: [android]
+
'@rollup/rollup-android-arm64@4.34.8':
resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==}
cpu: [arm64]
@@ -4759,6 +4764,11 @@ packages:
cpu: [arm64]
os: [android]
+ '@rollup/rollup-android-arm64@4.59.0':
+ resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==}
+ cpu: [arm64]
+ os: [android]
+
'@rollup/rollup-darwin-arm64@4.34.8':
resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==}
cpu: [arm64]
@@ -4769,6 +4779,11 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@rollup/rollup-darwin-arm64@4.59.0':
+ resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==}
+ cpu: [arm64]
+ os: [darwin]
+
'@rollup/rollup-darwin-x64@4.34.8':
resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==}
cpu: [x64]
@@ -4779,6 +4794,11 @@ packages:
cpu: [x64]
os: [darwin]
+ '@rollup/rollup-darwin-x64@4.59.0':
+ resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==}
+ cpu: [x64]
+ os: [darwin]
+
'@rollup/rollup-freebsd-arm64@4.34.8':
resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==}
cpu: [arm64]
@@ -4789,6 +4809,11 @@ packages:
cpu: [arm64]
os: [freebsd]
+ '@rollup/rollup-freebsd-arm64@4.59.0':
+ resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==}
+ cpu: [arm64]
+ os: [freebsd]
+
'@rollup/rollup-freebsd-x64@4.34.8':
resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==}
cpu: [x64]
@@ -4799,6 +4824,11 @@ packages:
cpu: [x64]
os: [freebsd]
+ '@rollup/rollup-freebsd-x64@4.59.0':
+ resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==}
+ cpu: [x64]
+ os: [freebsd]
+
'@rollup/rollup-linux-arm-gnueabihf@4.34.8':
resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==}
cpu: [arm]
@@ -4809,6 +4839,11 @@ packages:
cpu: [arm]
os: [linux]
+ '@rollup/rollup-linux-arm-gnueabihf@4.59.0':
+ resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==}
+ cpu: [arm]
+ os: [linux]
+
'@rollup/rollup-linux-arm-musleabihf@4.34.8':
resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==}
cpu: [arm]
@@ -4819,6 +4854,11 @@ packages:
cpu: [arm]
os: [linux]
+ '@rollup/rollup-linux-arm-musleabihf@4.59.0':
+ resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==}
+ cpu: [arm]
+ os: [linux]
+
'@rollup/rollup-linux-arm64-gnu@4.34.8':
resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==}
cpu: [arm64]
@@ -4829,6 +4869,11 @@ packages:
cpu: [arm64]
os: [linux]
+ '@rollup/rollup-linux-arm64-gnu@4.59.0':
+ resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==}
+ cpu: [arm64]
+ os: [linux]
+
'@rollup/rollup-linux-arm64-musl@4.34.8':
resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==}
cpu: [arm64]
@@ -4839,11 +4884,26 @@ packages:
cpu: [arm64]
os: [linux]
+ '@rollup/rollup-linux-arm64-musl@4.59.0':
+ resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==}
+ cpu: [arm64]
+ os: [linux]
+
'@rollup/rollup-linux-loong64-gnu@4.52.4':
resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==}
cpu: [loong64]
os: [linux]
+ '@rollup/rollup-linux-loong64-gnu@4.59.0':
+ resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-loong64-musl@4.59.0':
+ resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==}
+ cpu: [loong64]
+ os: [linux]
+
'@rollup/rollup-linux-loongarch64-gnu@4.34.8':
resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==}
cpu: [loong64]
@@ -4859,6 +4919,16 @@ packages:
cpu: [ppc64]
os: [linux]
+ '@rollup/rollup-linux-ppc64-gnu@4.59.0':
+ resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-ppc64-musl@4.59.0':
+ resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==}
+ cpu: [ppc64]
+ os: [linux]
+
'@rollup/rollup-linux-riscv64-gnu@4.34.8':
resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==}
cpu: [riscv64]
@@ -4869,11 +4939,21 @@ packages:
cpu: [riscv64]
os: [linux]
+ '@rollup/rollup-linux-riscv64-gnu@4.59.0':
+ resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==}
+ cpu: [riscv64]
+ os: [linux]
+
'@rollup/rollup-linux-riscv64-musl@4.52.4':
resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==}
cpu: [riscv64]
os: [linux]
+ '@rollup/rollup-linux-riscv64-musl@4.59.0':
+ resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==}
+ cpu: [riscv64]
+ os: [linux]
+
'@rollup/rollup-linux-s390x-gnu@4.34.8':
resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==}
cpu: [s390x]
@@ -4884,6 +4964,11 @@ packages:
cpu: [s390x]
os: [linux]
+ '@rollup/rollup-linux-s390x-gnu@4.59.0':
+ resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==}
+ cpu: [s390x]
+ os: [linux]
+
'@rollup/rollup-linux-x64-gnu@4.34.8':
resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==}
cpu: [x64]
@@ -4894,6 +4979,11 @@ packages:
cpu: [x64]
os: [linux]
+ '@rollup/rollup-linux-x64-gnu@4.59.0':
+ resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==}
+ cpu: [x64]
+ os: [linux]
+
'@rollup/rollup-linux-x64-musl@4.34.8':
resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==}
cpu: [x64]
@@ -4904,11 +4994,26 @@ packages:
cpu: [x64]
os: [linux]
+ '@rollup/rollup-linux-x64-musl@4.59.0':
+ resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-openbsd-x64@4.59.0':
+ resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==}
+ cpu: [x64]
+ os: [openbsd]
+
'@rollup/rollup-openharmony-arm64@4.52.4':
resolution: {integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==}
cpu: [arm64]
os: [openharmony]
+ '@rollup/rollup-openharmony-arm64@4.59.0':
+ resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==}
+ cpu: [arm64]
+ os: [openharmony]
+
'@rollup/rollup-win32-arm64-msvc@4.34.8':
resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==}
cpu: [arm64]
@@ -4919,6 +5024,11 @@ packages:
cpu: [arm64]
os: [win32]
+ '@rollup/rollup-win32-arm64-msvc@4.59.0':
+ resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==}
+ cpu: [arm64]
+ os: [win32]
+
'@rollup/rollup-win32-ia32-msvc@4.34.8':
resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==}
cpu: [ia32]
@@ -4929,11 +5039,21 @@ packages:
cpu: [ia32]
os: [win32]
+ '@rollup/rollup-win32-ia32-msvc@4.59.0':
+ resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==}
+ cpu: [ia32]
+ os: [win32]
+
'@rollup/rollup-win32-x64-gnu@4.52.4':
resolution: {integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==}
cpu: [x64]
os: [win32]
+ '@rollup/rollup-win32-x64-gnu@4.59.0':
+ resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==}
+ cpu: [x64]
+ os: [win32]
+
'@rollup/rollup-win32-x64-msvc@4.34.8':
resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==}
cpu: [x64]
@@ -4944,6 +5064,11 @@ packages:
cpu: [x64]
os: [win32]
+ '@rollup/rollup-win32-x64-msvc@4.59.0':
+ resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==}
+ cpu: [x64]
+ os: [win32]
+
'@rollup/wasm-node@4.52.4':
resolution: {integrity: sha512-QME8thp2j0GvRu/H8kz3uOawi45rexNIys38kITnMYp8Wl+gyeoIIuKyw8y0Lrq6xSAXgGCoqDyHD+m0wX1jnQ==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
@@ -8772,6 +8897,7 @@ packages:
git-raw-commits@3.0.0:
resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==}
engines: {node: '>=14'}
+ deprecated: This package is no longer maintained. For the JavaScript API, please use @conventional-changelog/git-client instead.
hasBin: true
git-remote-origin-url@2.0.0:
@@ -8781,6 +8907,7 @@ packages:
git-semver-tags@5.0.1:
resolution: {integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==}
engines: {node: '>=14'}
+ deprecated: This package is no longer maintained. For the JavaScript API, please use @conventional-changelog/git-client instead.
hasBin: true
git-up@7.0.0:
@@ -8813,29 +8940,32 @@ packages:
glob@10.3.16:
resolution: {integrity: sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==}
engines: {node: '>=16 || 14 >=14.18'}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
hasBin: true
glob@11.1.0:
resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==}
engines: {node: 20 || >=22}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
hasBin: true
glob@7.1.6:
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
- deprecated: Glob versions prior to v9 are no longer supported
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
glob@8.1.0:
resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
engines: {node: '>=12'}
- deprecated: Glob versions prior to v9 are no longer supported
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
glob@9.3.5:
resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==}
engines: {node: '>=16 || 14 >=14.17'}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
globals@11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
@@ -12488,8 +12618,8 @@ packages:
rollup-pluginutils@2.8.2:
resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
- rollup@2.79.1:
- resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
+ rollup@2.80.0:
+ resolution: {integrity: sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==}
engines: {node: '>=10.0.0'}
hasBin: true
@@ -12503,6 +12633,11 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
+ rollup@4.59.0:
+ resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
rst-selector-parser@2.2.3:
resolution: {integrity: sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==}
@@ -13214,12 +13349,12 @@ packages:
tar@6.2.1:
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
engines: {node: '>=10'}
- deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me
+ deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
tar@7.5.1:
resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==}
engines: {node: '>=18'}
- deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me
+ deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
temp-dir@1.0.0:
resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==}
@@ -14649,7 +14784,7 @@ snapshots:
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1902.17(chokidar@4.0.1)
- '@angular-devkit/build-webpack': 0.1902.17(chokidar@4.0.1)(webpack-dev-server@5.2.2(webpack@5.91.0))(webpack@5.98.0(esbuild@0.25.4))
+ '@angular-devkit/build-webpack': 0.1902.17(chokidar@4.0.1)(webpack-dev-server@5.2.2(webpack@5.98.0(esbuild@0.25.4)))(webpack@5.98.0(esbuild@0.25.4))
'@angular-devkit/core': 19.2.17(chokidar@4.0.1)
'@angular/build': 19.2.17(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(@angular/compiler@19.2.19)(@types/node@22.13.8)(chokidar@4.0.1)(jiti@1.21.0)(karma@6.4.3)(less@4.2.2)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(postcss@8.5.2)(stylus@0.57.0)(terser@5.39.0)(typescript@5.5.4)(yaml@2.8.1)
'@angular/compiler-cli': 19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4)
@@ -14734,7 +14869,7 @@ snapshots:
- webpack-cli
- yaml
- '@angular-devkit/build-webpack@0.1902.17(chokidar@4.0.1)(webpack-dev-server@5.2.2(webpack@5.91.0))(webpack@5.98.0(esbuild@0.25.4))':
+ '@angular-devkit/build-webpack@0.1902.17(chokidar@4.0.1)(webpack-dev-server@5.2.2(webpack@5.98.0(esbuild@0.25.4)))(webpack@5.98.0(esbuild@0.25.4))':
dependencies:
'@angular-devkit/architect': 0.1902.17(chokidar@4.0.1)
rxjs: 7.8.1
@@ -18438,35 +18573,35 @@ snapshots:
'@popperjs/core@2.11.8': {}
- '@rollup/plugin-alias@3.1.9(rollup@2.79.1)':
+ '@rollup/plugin-alias@3.1.9(rollup@2.80.0)':
dependencies:
- rollup: 2.79.1
+ rollup: 2.80.0
slash: 3.0.0
- '@rollup/plugin-commonjs@23.0.7(rollup@2.79.1)':
+ '@rollup/plugin-commonjs@23.0.7(rollup@2.80.0)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@2.79.1)
+ '@rollup/pluginutils': 5.1.0(rollup@2.80.0)
commondir: 1.0.1
estree-walker: 2.0.2
glob: 8.1.0
is-reference: 1.2.1
magic-string: 0.27.0
optionalDependencies:
- rollup: 2.79.1
+ rollup: 2.80.0
- '@rollup/plugin-inject@5.0.5(rollup@4.52.4)':
+ '@rollup/plugin-inject@5.0.5(rollup@4.59.0)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.52.4)
+ '@rollup/pluginutils': 5.1.0(rollup@4.59.0)
estree-walker: 2.0.2
magic-string: 0.30.10
optionalDependencies:
- rollup: 4.52.4
+ rollup: 4.59.0
- '@rollup/plugin-json@5.0.2(rollup@2.79.1)':
+ '@rollup/plugin-json@5.0.2(rollup@2.80.0)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@2.79.1)
+ '@rollup/pluginutils': 5.1.0(rollup@2.80.0)
optionalDependencies:
- rollup: 2.79.1
+ rollup: 2.80.0
'@rollup/plugin-json@6.1.0(rollup@4.52.4)':
dependencies:
@@ -18474,36 +18609,36 @@ snapshots:
optionalDependencies:
rollup: 4.52.4
- '@rollup/plugin-node-resolve@15.2.3(rollup@2.79.1)':
+ '@rollup/plugin-node-resolve@15.2.3(rollup@2.80.0)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@2.79.1)
+ '@rollup/pluginutils': 5.1.0(rollup@2.80.0)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-builtin-module: 3.2.1
is-module: 1.0.0
resolve: 1.22.8
optionalDependencies:
- rollup: 2.79.1
+ rollup: 2.80.0
- '@rollup/plugin-replace@5.0.5(rollup@2.79.1)':
+ '@rollup/plugin-replace@5.0.5(rollup@2.80.0)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@2.79.1)
+ '@rollup/pluginutils': 5.1.0(rollup@2.80.0)
magic-string: 0.30.10
optionalDependencies:
- rollup: 2.79.1
+ rollup: 2.80.0
'@rollup/pluginutils@4.2.1':
dependencies:
estree-walker: 2.0.2
picomatch: 2.3.1
- '@rollup/pluginutils@5.1.0(rollup@2.79.1)':
+ '@rollup/pluginutils@5.1.0(rollup@2.80.0)':
dependencies:
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
optionalDependencies:
- rollup: 2.79.1
+ rollup: 2.80.0
'@rollup/pluginutils@5.1.0(rollup@4.52.4)':
dependencies:
@@ -18513,69 +18648,113 @@ snapshots:
optionalDependencies:
rollup: 4.52.4
+ '@rollup/pluginutils@5.1.0(rollup@4.59.0)':
+ dependencies:
+ '@types/estree': 1.0.5
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ optionalDependencies:
+ rollup: 4.59.0
+
'@rollup/rollup-android-arm-eabi@4.34.8':
optional: true
'@rollup/rollup-android-arm-eabi@4.52.4':
optional: true
+ '@rollup/rollup-android-arm-eabi@4.59.0':
+ optional: true
+
'@rollup/rollup-android-arm64@4.34.8':
optional: true
'@rollup/rollup-android-arm64@4.52.4':
optional: true
+ '@rollup/rollup-android-arm64@4.59.0':
+ optional: true
+
'@rollup/rollup-darwin-arm64@4.34.8':
optional: true
'@rollup/rollup-darwin-arm64@4.52.4':
optional: true
+ '@rollup/rollup-darwin-arm64@4.59.0':
+ optional: true
+
'@rollup/rollup-darwin-x64@4.34.8':
optional: true
'@rollup/rollup-darwin-x64@4.52.4':
optional: true
+ '@rollup/rollup-darwin-x64@4.59.0':
+ optional: true
+
'@rollup/rollup-freebsd-arm64@4.34.8':
optional: true
'@rollup/rollup-freebsd-arm64@4.52.4':
optional: true
+ '@rollup/rollup-freebsd-arm64@4.59.0':
+ optional: true
+
'@rollup/rollup-freebsd-x64@4.34.8':
optional: true
'@rollup/rollup-freebsd-x64@4.52.4':
optional: true
+ '@rollup/rollup-freebsd-x64@4.59.0':
+ optional: true
+
'@rollup/rollup-linux-arm-gnueabihf@4.34.8':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.52.4':
optional: true
+ '@rollup/rollup-linux-arm-gnueabihf@4.59.0':
+ optional: true
+
'@rollup/rollup-linux-arm-musleabihf@4.34.8':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.52.4':
optional: true
+ '@rollup/rollup-linux-arm-musleabihf@4.59.0':
+ optional: true
+
'@rollup/rollup-linux-arm64-gnu@4.34.8':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.52.4':
optional: true
+ '@rollup/rollup-linux-arm64-gnu@4.59.0':
+ optional: true
+
'@rollup/rollup-linux-arm64-musl@4.34.8':
optional: true
'@rollup/rollup-linux-arm64-musl@4.52.4':
optional: true
+ '@rollup/rollup-linux-arm64-musl@4.59.0':
+ optional: true
+
'@rollup/rollup-linux-loong64-gnu@4.52.4':
optional: true
+ '@rollup/rollup-linux-loong64-gnu@4.59.0':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-musl@4.59.0':
+ optional: true
+
'@rollup/rollup-linux-loongarch64-gnu@4.34.8':
optional: true
@@ -18585,57 +18764,96 @@ snapshots:
'@rollup/rollup-linux-ppc64-gnu@4.52.4':
optional: true
+ '@rollup/rollup-linux-ppc64-gnu@4.59.0':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-musl@4.59.0':
+ optional: true
+
'@rollup/rollup-linux-riscv64-gnu@4.34.8':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.52.4':
optional: true
+ '@rollup/rollup-linux-riscv64-gnu@4.59.0':
+ optional: true
+
'@rollup/rollup-linux-riscv64-musl@4.52.4':
optional: true
+ '@rollup/rollup-linux-riscv64-musl@4.59.0':
+ optional: true
+
'@rollup/rollup-linux-s390x-gnu@4.34.8':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.52.4':
optional: true
+ '@rollup/rollup-linux-s390x-gnu@4.59.0':
+ optional: true
+
'@rollup/rollup-linux-x64-gnu@4.34.8':
optional: true
'@rollup/rollup-linux-x64-gnu@4.52.4':
optional: true
+ '@rollup/rollup-linux-x64-gnu@4.59.0':
+ optional: true
+
'@rollup/rollup-linux-x64-musl@4.34.8':
optional: true
'@rollup/rollup-linux-x64-musl@4.52.4':
optional: true
+ '@rollup/rollup-linux-x64-musl@4.59.0':
+ optional: true
+
+ '@rollup/rollup-openbsd-x64@4.59.0':
+ optional: true
+
'@rollup/rollup-openharmony-arm64@4.52.4':
optional: true
+ '@rollup/rollup-openharmony-arm64@4.59.0':
+ optional: true
+
'@rollup/rollup-win32-arm64-msvc@4.34.8':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.52.4':
optional: true
+ '@rollup/rollup-win32-arm64-msvc@4.59.0':
+ optional: true
+
'@rollup/rollup-win32-ia32-msvc@4.34.8':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.52.4':
optional: true
+ '@rollup/rollup-win32-ia32-msvc@4.59.0':
+ optional: true
+
'@rollup/rollup-win32-x64-gnu@4.52.4':
optional: true
+ '@rollup/rollup-win32-x64-gnu@4.59.0':
+ optional: true
+
'@rollup/rollup-win32-x64-msvc@4.34.8':
optional: true
'@rollup/rollup-win32-x64-msvc@4.52.4':
optional: true
+ '@rollup/rollup-win32-x64-msvc@4.59.0':
+ optional: true
+
'@rollup/wasm-node@4.52.4':
dependencies:
'@types/estree': 1.0.8
@@ -28138,17 +28356,17 @@ snapshots:
hash-base: 3.1.0
inherits: 2.0.4
- rollup-plugin-babel@4.4.0(@babel/core@7.24.5)(rollup@2.79.1):
+ rollup-plugin-babel@4.4.0(@babel/core@7.24.5)(rollup@2.80.0):
dependencies:
'@babel/core': 7.24.5
'@babel/helper-module-imports': 7.24.3
- rollup: 2.79.1
+ rollup: 2.80.0
rollup-pluginutils: 2.8.2
- rollup-plugin-cleanup@3.2.1(rollup@2.79.1):
+ rollup-plugin-cleanup@3.2.1(rollup@2.80.0):
dependencies:
js-cleanup: 1.2.0
- rollup: 2.79.1
+ rollup: 2.80.0
rollup-pluginutils: 2.8.2
rollup-plugin-copy@3.5.0:
@@ -28159,10 +28377,10 @@ snapshots:
globby: 10.0.1
is-plain-object: 3.0.1
- rollup-plugin-import-css@3.5.0(rollup@2.79.1):
+ rollup-plugin-import-css@3.5.0(rollup@2.80.0):
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@2.79.1)
- rollup: 2.79.1
+ '@rollup/pluginutils': 5.1.0(rollup@2.80.0)
+ rollup: 2.80.0
rollup-plugin-postcss@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)):
dependencies:
@@ -28183,24 +28401,24 @@ snapshots:
transitivePeerDependencies:
- ts-node
- rollup-plugin-typescript2@0.34.1(rollup@2.79.1)(typescript@5.5.4):
+ rollup-plugin-typescript2@0.34.1(rollup@2.80.0)(typescript@5.5.4):
dependencies:
'@rollup/pluginutils': 4.2.1
find-cache-dir: 3.3.2
fs-extra: 10.1.0
- rollup: 2.79.1
+ rollup: 2.80.0
semver: 7.6.2
tslib: 2.6.2
typescript: 5.5.4
- rollup-plugin-visualizer@5.12.0(rollup@2.79.1):
+ rollup-plugin-visualizer@5.12.0(rollup@2.80.0):
dependencies:
open: 8.4.2
picomatch: 2.3.1
source-map: 0.7.4
yargs: 17.7.2
optionalDependencies:
- rollup: 2.79.1
+ rollup: 2.80.0
rollup-plugin-vue@6.0.0(@vue/compiler-sfc@3.5.17):
dependencies:
@@ -28215,7 +28433,7 @@ snapshots:
dependencies:
estree-walker: 0.6.1
- rollup@2.79.1:
+ rollup@2.80.0:
optionalDependencies:
fsevents: 2.3.3
@@ -28271,6 +28489,38 @@ snapshots:
'@rollup/rollup-win32-x64-gnu': 4.52.4
'@rollup/rollup-win32-x64-msvc': 4.52.4
fsevents: 2.3.3
+ optional: true
+
+ rollup@4.59.0:
+ dependencies:
+ '@types/estree': 1.0.8
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.59.0
+ '@rollup/rollup-android-arm64': 4.59.0
+ '@rollup/rollup-darwin-arm64': 4.59.0
+ '@rollup/rollup-darwin-x64': 4.59.0
+ '@rollup/rollup-freebsd-arm64': 4.59.0
+ '@rollup/rollup-freebsd-x64': 4.59.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.59.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.59.0
+ '@rollup/rollup-linux-arm64-gnu': 4.59.0
+ '@rollup/rollup-linux-arm64-musl': 4.59.0
+ '@rollup/rollup-linux-loong64-gnu': 4.59.0
+ '@rollup/rollup-linux-loong64-musl': 4.59.0
+ '@rollup/rollup-linux-ppc64-gnu': 4.59.0
+ '@rollup/rollup-linux-ppc64-musl': 4.59.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.59.0
+ '@rollup/rollup-linux-riscv64-musl': 4.59.0
+ '@rollup/rollup-linux-s390x-gnu': 4.59.0
+ '@rollup/rollup-linux-x64-gnu': 4.59.0
+ '@rollup/rollup-linux-x64-musl': 4.59.0
+ '@rollup/rollup-openbsd-x64': 4.59.0
+ '@rollup/rollup-openharmony-arm64': 4.59.0
+ '@rollup/rollup-win32-arm64-msvc': 4.59.0
+ '@rollup/rollup-win32-ia32-msvc': 4.59.0
+ '@rollup/rollup-win32-x64-gnu': 4.59.0
+ '@rollup/rollup-win32-x64-msvc': 4.59.0
+ fsevents: 2.3.3
rst-selector-parser@2.2.3:
dependencies:
@@ -29762,10 +30012,10 @@ snapshots:
- supports-color
- terser
- vite-plugin-dts@3.9.1(@types/node@22.13.8)(rollup@4.52.4)(typescript@5.5.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)):
+ vite-plugin-dts@3.9.1(@types/node@22.13.8)(rollup@4.59.0)(typescript@5.5.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)):
dependencies:
'@microsoft/api-extractor': 7.43.0(@types/node@22.13.8)
- '@rollup/pluginutils': 5.1.0(rollup@4.52.4)
+ '@rollup/pluginutils': 5.1.0(rollup@4.59.0)
'@vue/language-core': 1.8.27(typescript@5.5.4)
debug: 4.3.4
kolorist: 1.8.0
@@ -29779,9 +30029,9 @@ snapshots:
- rollup
- supports-color
- vite-plugin-node-polyfills@0.21.0(rollup@4.52.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)):
+ vite-plugin-node-polyfills@0.21.0(rollup@4.59.0)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)):
dependencies:
- '@rollup/plugin-inject': 5.0.5(rollup@4.52.4)
+ '@rollup/plugin-inject': 5.0.5(rollup@4.59.0)
node-stdlib-browser: 1.2.0
vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
transitivePeerDependencies:
@@ -29811,7 +30061,7 @@ snapshots:
dependencies:
esbuild: 0.21.5
postcss: 8.5.6
- rollup: 4.52.4
+ rollup: 4.59.0
optionalDependencies:
'@types/node': 22.13.8
fsevents: 2.3.3
@@ -29826,7 +30076,7 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.2)
picomatch: 4.0.2
postcss: 8.5.6
- rollup: 4.52.4
+ rollup: 4.59.0
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 22.13.8
From 754d9ddd77b86d1bc78ac31d4a21da61f82bc9ff Mon Sep 17 00:00:00 2001
From: "jsonforms-publish[bot]"
Date: Thu, 5 Mar 2026 14:32:46 +0000
Subject: [PATCH 13/29] v3.8.0-alpha.0
---
lerna.json | 2 +-
packages/angular-material/package.json | 6 +++---
packages/angular/package.json | 4 ++--
packages/core/package.json | 2 +-
packages/examples-app/package.json | 2 +-
packages/examples-react/package.json | 2 +-
packages/examples/package.json | 4 ++--
packages/material-renderers/package.json | 6 +++---
packages/react/package.json | 4 ++--
packages/vanilla-renderers/package.json | 6 +++---
packages/vue-vanilla/package.json | 6 +++---
packages/vue-vuetify/package.json | 6 +++---
packages/vue/package.json | 4 ++--
13 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/lerna.json b/lerna.json
index 60766a84e..dd17ae631 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"npmClient": "pnpm",
"$schema": "node_modules/lerna/schemas/lerna-schema.json"
}
diff --git a/packages/angular-material/package.json b/packages/angular-material/package.json
index 84f3a0863..13e12f641 100644
--- a/packages/angular-material/package.json
+++ b/packages/angular-material/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/angular-material",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"description": "Material Renderer Set for Angular module of JSON Forms",
"repository": {
"type": "git",
@@ -72,8 +72,8 @@
"@angular/material": "^19.0.0 || ^20.0.0 || ^21.0.0",
"@angular/platform-browser": "^19.0.0 || ^20.0.0 || ^21.0.0",
"@angular/router": "^19.0.0 || ^20.0.0 || ^21.0.0",
- "@jsonforms/angular": "3.7.0",
- "@jsonforms/core": "3.7.0",
+ "@jsonforms/angular": "3.8.0-alpha.0",
+ "@jsonforms/core": "3.8.0-alpha.0",
"dayjs": "^1.11.10",
"rxjs": "^6.6.0 || ^7.4.0"
},
diff --git a/packages/angular/package.json b/packages/angular/package.json
index 3218b15c7..b30bd8e33 100644
--- a/packages/angular/package.json
+++ b/packages/angular/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/angular",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"description": "Angular module of JSON Forms",
"repository": {
"type": "git",
@@ -73,7 +73,7 @@
"peerDependencies": {
"@angular/core": "^19.0.0 || ^20.0.0 || ^21.0.0",
"@angular/forms": "^19.0.0 || ^20.0.0 || ^21.0.0",
- "@jsonforms/core": "3.7.0",
+ "@jsonforms/core": "3.8.0-alpha.0",
"rxjs": "^6.6.0 || ^7.4.0"
},
"devDependencies": {
diff --git a/packages/core/package.json b/packages/core/package.json
index 1cfdff494..827db5c67 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/core",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"description": "Core module of JSON Forms",
"repository": {
"type": "git",
diff --git a/packages/examples-app/package.json b/packages/examples-app/package.json
index ab86cbe25..f533d8d4a 100644
--- a/packages/examples-app/package.json
+++ b/packages/examples-app/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/examples-app",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"private": true,
"license": "MIT",
"type": "module",
diff --git a/packages/examples-react/package.json b/packages/examples-react/package.json
index 0bd8eddc3..55ad85dfb 100644
--- a/packages/examples-react/package.json
+++ b/packages/examples-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/examples-react",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"private": true,
"dependencies": {
"@jsonforms/core": "workspace:*",
diff --git a/packages/examples/package.json b/packages/examples/package.json
index 4f30927da..1906bcefb 100644
--- a/packages/examples/package.json
+++ b/packages/examples/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/examples",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"description": "JSON Forms Example Data",
"repository": {
"type": "git",
@@ -51,7 +51,7 @@
"lodash": "^4.17.21"
},
"peerDependencies": {
- "@jsonforms/core": "3.7.0"
+ "@jsonforms/core": "3.8.0-alpha.0"
},
"devDependencies": {
"@jsonforms/core": "workspace:*",
diff --git a/packages/material-renderers/package.json b/packages/material-renderers/package.json
index d7ee68a3f..632c6390f 100644
--- a/packages/material-renderers/package.json
+++ b/packages/material-renderers/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/material-renderers",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"description": "Material Renderer Set for JSON Forms",
"repository": {
"type": "git",
@@ -93,8 +93,8 @@
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
- "@jsonforms/core": "3.7.0",
- "@jsonforms/react": "3.7.0",
+ "@jsonforms/core": "3.8.0-alpha.0",
+ "@jsonforms/react": "3.8.0-alpha.0",
"@mui/icons-material": "^7.0.0",
"@mui/material": "^7.0.0",
"@mui/x-date-pickers": "^8.0.0",
diff --git a/packages/react/package.json b/packages/react/package.json
index 72ba3d485..b72764e9f 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/react",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"description": "React module of JSON Forms",
"repository": {
"type": "git",
@@ -90,7 +90,7 @@
"lodash": "^4.17.21"
},
"peerDependencies": {
- "@jsonforms/core": "3.7.0",
+ "@jsonforms/core": "3.8.0-alpha.0",
"react": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
},
"optionalPeerDependencies": {
diff --git a/packages/vanilla-renderers/package.json b/packages/vanilla-renderers/package.json
index 8ffc9055c..f93f51977 100644
--- a/packages/vanilla-renderers/package.json
+++ b/packages/vanilla-renderers/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/vanilla-renderers",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"description": "Default Renderer Set for JSON Forms",
"repository": {
"type": "git",
@@ -54,8 +54,8 @@
"lodash": "^4.17.21"
},
"peerDependencies": {
- "@jsonforms/core": "3.7.0",
- "@jsonforms/react": "3.7.0",
+ "@jsonforms/core": "3.8.0-alpha.0",
+ "@jsonforms/react": "3.8.0-alpha.0",
"react": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
},
"devDependencies": {
diff --git a/packages/vue-vanilla/package.json b/packages/vue-vanilla/package.json
index e277f412d..1c51f084f 100644
--- a/packages/vue-vanilla/package.json
+++ b/packages/vue-vanilla/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/vue-vanilla",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"description": "Vue 3 Vanilla renderers for JSON Forms",
"repository": {
"type": "git",
@@ -97,8 +97,8 @@
"vue": "^3.5.17"
},
"peerDependencies": {
- "@jsonforms/core": "3.7.0",
- "@jsonforms/vue": "3.7.0",
+ "@jsonforms/core": "3.8.0-alpha.0",
+ "@jsonforms/vue": "3.8.0-alpha.0",
"vue": "^3.5.0"
}
}
diff --git a/packages/vue-vuetify/package.json b/packages/vue-vuetify/package.json
index dd86c1782..cad8b0eee 100644
--- a/packages/vue-vuetify/package.json
+++ b/packages/vue-vuetify/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/vue-vuetify",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"description": "Vue Vuetify renderers for JSON Forms",
"repository": {
"type": "git",
@@ -62,8 +62,8 @@
"type-check": "vue-tsc --build --force"
},
"peerDependencies": {
- "@jsonforms/core": "3.7.0",
- "@jsonforms/vue": "3.7.0",
+ "@jsonforms/core": "3.8.0-alpha.0",
+ "@jsonforms/vue": "3.8.0-alpha.0",
"ajv": "^8.18.0",
"dayjs": "^1.10.6",
"lodash": "^4.17.21",
diff --git a/packages/vue/package.json b/packages/vue/package.json
index 70984a732..ad259fcf1 100644
--- a/packages/vue/package.json
+++ b/packages/vue/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/vue",
- "version": "3.7.0",
+ "version": "3.8.0-alpha.0",
"description": "Vue 3 module of JSON Forms",
"repository": {
"type": "git",
@@ -90,7 +90,7 @@
"vue": "^3.5.17"
},
"peerDependencies": {
- "@jsonforms/core": "3.7.0",
+ "@jsonforms/core": "3.8.0-alpha.0",
"vue": "^3.5.0"
}
}
From fd7979a83e3cafd081e53caf1f940712953d5b6e Mon Sep 17 00:00:00 2001
From: Krasimir Chobantonov
Date: Mon, 9 Mar 2026 13:05:47 -0400
Subject: [PATCH 14/29] feat: Optional separateReadonlyFromDisabled option and
Vuetify impl (#2532)
- Add `separateReadonlyFromDisabled` config option enabling independent control
of readonly and enabled states.
- By default, they are not separated keeping the legacy behavior
- Adds READONLY/WRITABLE rules corresponding to the existing ENABLE/DISABLE rules
- Add optional property `readonly` to renderer props and state.
Optional to keep backward compatibility
- Extend the Vue Vuetify renderer set to consider the the new flag and set renderers' inputs
to readonly (instead of disabled) if the flag is enabled and the control set to readonly
fixes #2479
---
packages/core/src/configDefault.ts | 7 +
packages/core/src/mappers/cell.ts | 27 +-
packages/core/src/mappers/renderer.ts | 30 +-
packages/core/src/mappers/util.ts | 73 +++-
packages/core/src/models/uischema.ts | 9 +
packages/core/src/util/runtime.ts | 45 +++
packages/core/test/generators/schema.test.ts | 2 +-
packages/core/test/util/runtime.test.ts | 333 +++++++++++++++++-
.../dev/components/ExampleSettings.vue | 16 +
packages/vue-vuetify/dev/store/index.ts | 1 +
.../src/additional/ListWithDetailRenderer.vue | 16 +-
.../vue-vuetify/src/complex/AllOfRenderer.vue | 2 +
.../vue-vuetify/src/complex/AnyOfRenderer.vue | 1 +
.../src/complex/ArrayControlRenderer.vue | 19 +-
.../src/complex/EnumArrayRenderer.vue | 2 +
.../vue-vuetify/src/complex/MixedRenderer.vue | 10 +-
.../src/complex/ObjectRenderer.vue | 1 +
.../vue-vuetify/src/complex/OneOfRenderer.vue | 4 +-
.../src/complex/OneOfTabRenderer.vue | 10 +-
.../components/AdditionalProperties.vue | 9 +-
.../AnyOfStringOrEnumControlRenderer.vue | 1 +
.../src/controls/BooleanControlRenderer.vue | 1 +
.../controls/BooleanToggleControlRenderer.vue | 1 +
.../src/controls/DateControlRenderer.vue | 5 +-
.../src/controls/DateTimeControlRenderer.vue | 5 +-
.../src/controls/EnumControlRenderer.vue | 1 +
.../src/controls/IntegerControlRenderer.vue | 1 +
.../controls/MultiStringControlRenderer.vue | 1 +
.../src/controls/NumberControlRenderer.vue | 1 +
.../src/controls/OneOfEnumControlRenderer.vue | 1 +
.../OneOfRadioGroupControlRenderer.vue | 1 +
.../src/controls/PasswordControlRenderer.vue | 1 +
.../controls/RadioGroupControlRenderer.vue | 1 +
.../src/controls/SliderControlRenderer.vue | 1 +
.../src/controls/StringControlRenderer.vue | 2 +
.../controls/StringMaskControlRenderer.vue | 1 +
.../src/controls/TimeControlRenderer.vue | 5 +-
.../AutocompleteEnumControlRenderer.vue | 6 +-
.../AutocompleteOneOfEnumControlRenderer.vue | 6 +-
.../src/layouts/ArrayLayoutRenderer.vue | 20 +-
.../src/layouts/CategorizationRenderer.vue | 2 +
.../layouts/CategorizationStepperRenderer.vue | 2 +
.../vue-vuetify/src/layouts/GroupRenderer.vue | 1 +
.../src/layouts/HorizontalLayoutRenderer.vue | 1 +
.../src/layouts/VerticalLayoutRenderer.vue | 1 +
packages/vue-vuetify/src/util/composition.ts | 8 +-
packages/vue/src/jsonFormsCompositions.ts | 6 +
47 files changed, 650 insertions(+), 50 deletions(-)
diff --git a/packages/core/src/configDefault.ts b/packages/core/src/configDefault.ts
index 3761c314e..b00d1adc2 100644
--- a/packages/core/src/configDefault.ts
+++ b/packages/core/src/configDefault.ts
@@ -45,4 +45,11 @@ export const configDefault = {
* [text] if asterisks in labels for required fields should be hidden
*/
hideRequiredAsterisk: false,
+
+ /**
+ * When false (default), readonly is treated as disabled for backward compatibility.
+ * When true, readonly and enabled are handled separately and exposed to renderers,
+ * allowing UI libraries to distinguish between disabled and readonly states.
+ */
+ separateReadonlyFromDisabled: false,
};
diff --git a/packages/core/src/mappers/cell.ts b/packages/core/src/mappers/cell.ts
index 73f01d7f6..7934c38cb 100644
--- a/packages/core/src/mappers/cell.ts
+++ b/packages/core/src/mappers/cell.ts
@@ -53,7 +53,7 @@ import {
JsonFormsCellRendererRegistryEntry,
JsonFormsState,
} from '../store';
-import { isInherentlyEnabled } from './util';
+import { isInherentlyEnabled, isInherentlyReadonly } from './util';
export interface OwnPropsOfCell extends OwnPropsOfControl {
data?: any;
@@ -126,10 +126,14 @@ export const mapStateToCellProps = (
* table renderer, determines whether a cell is enabled and should hand
* over the prop themselves. If that prop was given, we prefer it over
* anything else to save evaluation effort (except for the global readonly
- * flag). For example it would be quite expensive to evaluate the same ui schema
+ * flag when separateReadonlyFromDisabled is disabled).
+ * For example it would be quite expensive to evaluate the same ui schema
* rule again and again for each cell of a table. */
let enabled;
- if (state.jsonforms.readonly === true) {
+ if (
+ !config?.separateReadonlyFromDisabled &&
+ state.jsonforms.readonly === true
+ ) {
enabled = false;
} else if (typeof ownProps.enabled === 'boolean') {
enabled = ownProps.enabled;
@@ -144,6 +148,22 @@ export const mapStateToCellProps = (
);
}
+ /* Similar to enabled, we take a shortcut for readonly state. The parent
+ * renderer can pass the readonly prop directly if it has already computed it,
+ * saving re-evaluation for each cell. */
+ let readonly;
+ if (typeof ownProps.readonly === 'boolean') {
+ readonly = ownProps.readonly;
+ } else {
+ readonly = isInherentlyReadonly(
+ state,
+ ownProps,
+ uischema,
+ schema || rootSchema,
+ rootData,
+ config
+ );
+ }
const t = getTranslator()(state);
const te = getErrorTranslator()(state);
const errors = getCombinedErrorMessage(
@@ -160,6 +180,7 @@ export const mapStateToCellProps = (
data: Resolve.data(rootData, path),
visible,
enabled,
+ readonly,
id,
path,
errors,
diff --git a/packages/core/src/mappers/renderer.ts b/packages/core/src/mappers/renderer.ts
index e53e4a8d7..d80392c85 100644
--- a/packages/core/src/mappers/renderer.ts
+++ b/packages/core/src/mappers/renderer.ts
@@ -83,7 +83,7 @@ import {
getUISchemas,
getUiSchema,
} from '../store';
-import { isInherentlyEnabled } from './util';
+import { isInherentlyEnabled, isInherentlyReadonly } from './util';
import { CombinatorKeyword } from './combinators';
import isEqual from 'lodash/isEqual';
@@ -375,6 +375,10 @@ export interface OwnPropsOfRenderer {
* Whether the rendered element should be enabled.
*/
enabled?: boolean;
+ /**
+ * Whether the rendered element should be readonly.
+ */
+ readonly?: boolean;
/**
* Whether the rendered element should be visible.
*/
@@ -440,6 +444,12 @@ export interface StatePropsOfRenderer {
* Whether the rendered element should be enabled.
*/
enabled: boolean;
+
+ /**
+ * Whether the rendered element should be readonly.
+ */
+ readonly?: boolean;
+
/**
* Whether the rendered element should be visible.
*/
@@ -614,6 +624,14 @@ export const mapStateToControlProps = (
rootData,
config
);
+ const readonly: boolean = isInherentlyReadonly(
+ state,
+ ownProps,
+ uischema,
+ resolvedSchema || rootSchema,
+ rootData,
+ config
+ );
const schema = resolvedSchema ?? rootSchema;
const t = getTranslator()(state);
@@ -646,6 +664,7 @@ export const mapStateToControlProps = (
label: i18nLabel,
visible,
enabled,
+ readonly,
id,
path,
required,
@@ -1062,6 +1081,14 @@ export const mapStateToLayoutProps = (
rootData,
config
);
+ const readonly: boolean = isInherentlyReadonly(
+ state,
+ ownProps,
+ uischema,
+ undefined, // layouts have no associated schema
+ rootData,
+ config
+ );
// some layouts have labels which might need to be translated
const t = getTranslator()(state);
@@ -1075,6 +1102,7 @@ export const mapStateToLayoutProps = (
cells: ownProps.cells || getCells(state),
visible,
enabled,
+ readonly,
path: ownProps.path,
data,
uischema: ownProps.uischema,
diff --git a/packages/core/src/mappers/util.ts b/packages/core/src/mappers/util.ts
index c393073d8..bd87bd2ab 100644
--- a/packages/core/src/mappers/util.ts
+++ b/packages/core/src/mappers/util.ts
@@ -1,10 +1,10 @@
import { JsonSchema, UISchemaElement } from '../models';
import { JsonFormsState, getAjv } from '../store';
-import { hasEnableRule, isEnabled } from '../util';
+import { hasEnableRule, hasReadonlyRule, isEnabled, isReadonly } from '../util';
/**
* Indicates whether the given `uischema` element shall be enabled or disabled.
- * Checks the global readonly flag, uischema rule, uischema options (including the config),
+ * Checks the global readonly flag (unless separateReadonlyFromDisabled is enabled), uischema rule, uischema options (including the config),
* the schema and the enablement indicator of the parent.
*/
export const isInherentlyEnabled = (
@@ -15,29 +15,80 @@ export const isInherentlyEnabled = (
rootData: any,
config: any
) => {
- if (state?.jsonforms?.readonly) {
+ if (!config?.separateReadonlyFromDisabled && state?.jsonforms?.readonly) {
return false;
}
if (uischema && hasEnableRule(uischema)) {
return isEnabled(uischema, rootData, ownProps?.path, getAjv(state), config);
}
+ if (!config?.separateReadonlyFromDisabled) {
+ if (typeof uischema?.options?.readonly === 'boolean') {
+ return !uischema.options.readonly;
+ }
+ if (typeof uischema?.options?.readOnly === 'boolean') {
+ return !uischema.options.readOnly;
+ }
+ if (typeof config?.readonly === 'boolean') {
+ return !config.readonly;
+ }
+ if (typeof config?.readOnly === 'boolean') {
+ return !config.readOnly;
+ }
+ if (schema?.readOnly === true) {
+ return false;
+ }
+ }
+ if (typeof ownProps?.enabled === 'boolean') {
+ return ownProps.enabled;
+ }
+ return true;
+};
+
+/**
+ * Indicates whether the given `uischema` element shall be readonly or writable.
+ * Checks the global readonly flag, uischema rule, uischema options (including the config),
+ * the schema and the readonly indicator of the parent.
+ */
+export const isInherentlyReadonly = (
+ state: JsonFormsState,
+ ownProps: any,
+ uischema: UISchemaElement,
+ schema: (JsonSchema & { readOnly?: boolean }) | undefined,
+ rootData: any,
+ config: any
+) => {
+ if (state?.jsonforms?.readonly) {
+ return true;
+ }
+
+ if (uischema && hasReadonlyRule(uischema)) {
+ return isReadonly(
+ uischema,
+ rootData,
+ ownProps?.path,
+ getAjv(state),
+ config
+ );
+ }
+
if (typeof uischema?.options?.readonly === 'boolean') {
- return !uischema.options.readonly;
+ return uischema.options.readonly;
}
if (typeof uischema?.options?.readOnly === 'boolean') {
- return !uischema.options.readOnly;
+ return uischema.options.readOnly;
}
if (typeof config?.readonly === 'boolean') {
- return !config.readonly;
+ return config.readonly;
}
if (typeof config?.readOnly === 'boolean') {
- return !config.readOnly;
+ return config.readOnly;
}
if (schema?.readOnly === true) {
- return false;
+ return true;
}
- if (typeof ownProps?.enabled === 'boolean') {
- return ownProps.enabled;
+ if (typeof ownProps?.readonly === 'boolean') {
+ return ownProps.readonly;
}
- return true;
+
+ return false;
};
diff --git a/packages/core/src/models/uischema.ts b/packages/core/src/models/uischema.ts
index cc5ae938c..f086da738 100644
--- a/packages/core/src/models/uischema.ts
+++ b/packages/core/src/models/uischema.ts
@@ -109,6 +109,15 @@ export enum RuleEffect {
* Effect that disables the associated element.
*/
DISABLE = 'DISABLE',
+ /**
+ * Effect that makes the associated element read-only
+ * (interaction allowed, value cannot be changed).
+ */
+ READONLY = 'READONLY',
+ /**
+ * Effect that makes the associated element writable.
+ */
+ WRITABLE = 'WRITABLE',
}
/**
diff --git a/packages/core/src/util/runtime.ts b/packages/core/src/util/runtime.ts
index 77caca762..d4fb4ff10 100644
--- a/packages/core/src/util/runtime.ts
+++ b/packages/core/src/util/runtime.ts
@@ -158,6 +158,26 @@ export const evalEnablement = (
}
};
+export const evalReadonly = (
+ uischema: UISchemaElement,
+ data: any,
+ path: string = undefined,
+ ajv: Ajv,
+ config: unknown
+): boolean => {
+ const fulfilled = isRuleFulfilled(uischema, data, path, ajv, config);
+
+ switch (uischema.rule.effect) {
+ case RuleEffect.WRITABLE:
+ return !fulfilled;
+ case RuleEffect.READONLY:
+ return fulfilled;
+ // writable by default
+ default:
+ return false;
+ }
+};
+
export const hasShowRule = (uischema: UISchemaElement): boolean => {
if (
uischema.rule &&
@@ -180,6 +200,17 @@ export const hasEnableRule = (uischema: UISchemaElement): boolean => {
return false;
};
+export const hasReadonlyRule = (uischema: UISchemaElement): boolean => {
+ if (
+ uischema.rule &&
+ (uischema.rule.effect === RuleEffect.READONLY ||
+ uischema.rule.effect === RuleEffect.WRITABLE)
+ ) {
+ return true;
+ }
+ return false;
+};
+
export const isVisible = (
uischema: UISchemaElement,
data: any,
@@ -207,3 +238,17 @@ export const isEnabled = (
return true;
};
+
+export const isReadonly = (
+ uischema: UISchemaElement,
+ data: any,
+ path: string = undefined,
+ ajv: Ajv,
+ config: unknown
+): boolean => {
+ if (uischema.rule) {
+ return evalReadonly(uischema, data, path, ajv, config);
+ }
+
+ return false;
+};
diff --git a/packages/core/test/generators/schema.test.ts b/packages/core/test/generators/schema.test.ts
index 2171f51a0..679defefa 100644
--- a/packages/core/test/generators/schema.test.ts
+++ b/packages/core/test/generators/schema.test.ts
@@ -113,7 +113,7 @@ test('default schema generation array types', (t) => {
test.failing('default schema generation tuple array types', (t) => {
const instance: any = { tupleArray: [3.14, 'PI'] };
const schema = generateJsonSchema(instance);
- // FIXME: This assumption is the correct one, but we crteate a oneOf in this case
+ // FIXME: This assumption is the correct one, but we create a oneOf in this case
t.deepEqual(schema, {
type: 'object',
properties: {
diff --git a/packages/core/test/util/runtime.test.ts b/packages/core/test/util/runtime.test.ts
index 3f068ff65..c72e45f98 100644
--- a/packages/core/test/util/runtime.test.ts
+++ b/packages/core/test/util/runtime.test.ts
@@ -27,7 +27,10 @@ import {
AndCondition,
ControlElement,
createAjv,
+ hasReadonlyRule,
isInherentlyEnabled,
+ isInherentlyReadonly,
+ isReadonly,
JsonFormsCore,
LeafCondition,
OrCondition,
@@ -36,7 +39,11 @@ import {
ValidateFunctionCondition,
ValidateFunctionContext,
} from '../../src';
-import { evalEnablement, evalVisibility } from '../../src/util/runtime';
+import {
+ evalEnablement,
+ evalReadonly,
+ evalVisibility,
+} from '../../src/util/runtime';
test('evalVisibility show valid case', (t) => {
const leafCondition: LeafCondition = {
@@ -775,6 +782,150 @@ test('evalEnablement fail on failWhenUndefined', (t) => {
);
});
+test('evalReadonly readonly valid case', (t) => {
+ const uischema: ControlElement = {
+ type: 'Control',
+ scope: '#/properties/value',
+ rule: {
+ effect: RuleEffect.READONLY,
+ condition: {
+ type: 'LEAF',
+ scope: '#/properties/ruleValue',
+ expectedValue: 'bar',
+ },
+ },
+ };
+
+ t.true(
+ evalReadonly(
+ uischema,
+ { value: 'foo', ruleValue: 'bar' },
+ undefined,
+ createAjv(),
+ undefined
+ )
+ );
+});
+
+test('evalReadonly writable valid and invalid cases', (t) => {
+ const uischema: ControlElement = {
+ type: 'Control',
+ scope: '#/properties/value',
+ rule: {
+ effect: RuleEffect.WRITABLE,
+ condition: {
+ type: 'LEAF',
+ scope: '#/properties/ruleValue',
+ expectedValue: 'bar',
+ },
+ },
+ };
+
+ t.false(
+ evalReadonly(
+ uischema,
+ { value: 'foo', ruleValue: 'bar' },
+ undefined,
+ createAjv(),
+ undefined
+ )
+ );
+ t.true(
+ evalReadonly(
+ uischema,
+ { value: 'foo', ruleValue: 'baz' },
+ undefined,
+ createAjv(),
+ undefined
+ )
+ );
+});
+
+test('hasReadonlyRule detects readonly and writable rules', (t) => {
+ t.true(
+ hasReadonlyRule({
+ type: 'Control',
+ scope: '#/properties/value',
+ rule: {
+ effect: RuleEffect.READONLY,
+ condition: {
+ type: 'LEAF',
+ scope: '#/properties/ruleValue',
+ expectedValue: 'bar',
+ },
+ },
+ })
+ );
+ t.true(
+ hasReadonlyRule({
+ type: 'Control',
+ scope: '#/properties/value',
+ rule: {
+ effect: RuleEffect.WRITABLE,
+ condition: {
+ type: 'LEAF',
+ scope: '#/properties/ruleValue',
+ expectedValue: 'bar',
+ },
+ },
+ })
+ );
+ t.false(
+ hasReadonlyRule({
+ type: 'Control',
+ scope: '#/properties/value',
+ rule: {
+ effect: RuleEffect.ENABLE,
+ condition: {
+ type: 'LEAF',
+ scope: '#/properties/ruleValue',
+ expectedValue: 'bar',
+ },
+ },
+ })
+ );
+});
+
+test('isReadonly defaults to false without rule', (t) => {
+ t.false(
+ isReadonly(
+ {
+ type: 'Control',
+ scope: '#/properties/value',
+ },
+ {},
+ undefined,
+ createAjv(),
+ undefined
+ )
+ );
+});
+
+test('isReadonly evaluates readonly rules', (t) => {
+ const uischema: ControlElement = {
+ type: 'Control',
+ scope: '#/properties/value',
+ rule: {
+ effect: RuleEffect.READONLY,
+ condition: {
+ type: 'LEAF',
+ scope: '#/properties/ruleValue',
+ expectedValue: 'bar',
+ },
+ },
+ };
+
+ t.true(
+ isReadonly(
+ uischema,
+ { value: 'foo', ruleValue: 'bar' },
+ undefined,
+ createAjv(),
+ undefined
+ )
+ );
+});
+
test('isInherentlyEnabled disabled globally', (t) => {
t.false(
isInherentlyEnabled(
@@ -788,6 +939,19 @@ test('isInherentlyEnabled disabled globally', (t) => {
);
});
+test('isInherentlyEnabled ignores global readonly when separated', (t) => {
+ t.true(
+ isInherentlyEnabled(
+ { jsonforms: { readonly: true } },
+ null,
+ null as any,
+ undefined,
+ null,
+ { separateReadonlyFromDisabled: true }
+ )
+ );
+});
+
test('isInherentlyEnabled disabled by ownProps', (t) => {
t.false(
isInherentlyEnabled(
@@ -827,6 +991,19 @@ test('isInherentlyEnabled disabled by uischema', (t) => {
);
});
+test('isInherentlyEnabled ignores readonly uischema when separated', (t) => {
+ t.true(
+ isInherentlyEnabled(
+ null as any,
+ null,
+ { options: { readonly: true } } as unknown as ControlElement,
+ undefined,
+ null,
+ { separateReadonlyFromDisabled: true }
+ )
+ );
+});
+
test('isInherentlyEnabled disabled by uischema over ownProps', (t) => {
t.false(
isInherentlyEnabled(
@@ -892,6 +1069,19 @@ test('isInherentlyEnabled disabled by schema', (t) => {
);
});
+test('isInherentlyEnabled ignores readonly schema when separated', (t) => {
+ t.true(
+ isInherentlyEnabled(
+ null as any,
+ null,
+ null as any,
+ { readOnly: true },
+ null,
+ { separateReadonlyFromDisabled: true }
+ )
+ );
+});
+
test('isInherentlyEnabled disabled by schema over ownProps', (t) => {
t.false(
isInherentlyEnabled(
@@ -978,6 +1168,15 @@ test('isInherentlyEnabled disabled by config', (t) => {
);
});
+test('isInherentlyEnabled ignores readonly config when separated', (t) => {
+ t.true(
+ isInherentlyEnabled(null as any, null, null as any, undefined, null, {
+ readonly: true,
+ separateReadonlyFromDisabled: true,
+ })
+ );
+});
+
test('isInherentlyEnabled enabled by config over ownProps', (t) => {
t.true(
isInherentlyEnabled(
@@ -1038,3 +1237,135 @@ test('isInherentlyEnabled enabled', (t) => {
isInherentlyEnabled(null as any, null, null as any, undefined, null, null)
);
});
+
+test('isInherentlyReadonly readonly globally', (t) => {
+ t.true(
+ isInherentlyReadonly(
+ { jsonforms: { readonly: true } },
+ null,
+ null as any,
+ undefined,
+ null,
+ null
+ )
+ );
+});
+
+test('isInherentlyReadonly readonly by uischema option', (t) => {
+ t.true(
+ isInherentlyReadonly(
+ null as any,
+ { readonly: false },
+ { options: { readonly: true } } as unknown as ControlElement,
+ undefined,
+ null,
+ null
+ )
+ );
+});
+
+test('isInherentlyReadonly prefer readonly over readOnly', (t) => {
+ t.false(
+ isInherentlyReadonly(
+ null as any,
+ null,
+ {
+ options: { readonly: false, readOnly: true },
+ } as unknown as ControlElement,
+ undefined,
+ null,
+ null
+ )
+ );
+ t.true(
+ isInherentlyReadonly(
+ null as any,
+ null,
+ {
+ options: { readonly: true, readOnly: false },
+ } as unknown as ControlElement,
+ undefined,
+ null,
+ null
+ )
+ );
+});
+
+test('isInherentlyReadonly readonly by schema', (t) => {
+ t.true(
+ isInherentlyReadonly(
+ null as any,
+ null,
+ null as any,
+ { readOnly: true },
+ null,
+ null
+ )
+ );
+});
+
+test('isInherentlyReadonly readonly by ownProps', (t) => {
+ t.true(
+ isInherentlyReadonly(
+ null as any,
+ { readonly: true },
+ null as any,
+ undefined,
+ null,
+ null
+ )
+ );
+});
+
+test('isInherentlyReadonly evaluates readonly and writable rules', (t) => {
+ const readonlyRule: ControlElement = {
+ type: 'Control',
+ scope: '#/properties/value',
+ rule: {
+ effect: RuleEffect.READONLY,
+ condition: {
+ type: 'LEAF',
+ scope: '#/properties/ruleValue',
+ expectedValue: 'bar',
+ },
+ },
+ };
+ const writableRule: ControlElement = {
+ type: 'Control',
+ scope: '#/properties/value',
+ rule: {
+ effect: RuleEffect.WRITABLE,
+ condition: {
+ type: 'LEAF',
+ scope: '#/properties/ruleValue',
+ expectedValue: 'bar',
+ },
+ },
+ };
+ const state = {
+ jsonforms: {
+ core: { ajv: createAjv() } as JsonFormsCore,
+ },
+ };
+ const data = {
+ value: 'foo',
+ ruleValue: 'bar',
+ };
+
+ t.true(
+ isInherentlyReadonly(state, null, readonlyRule, undefined, data, null)
+ );
+ t.false(
+ isInherentlyReadonly(state, null, writableRule, undefined, data, null)
+ );
+ t.true(
+ isInherentlyReadonly(
+ state,
+ null,
+ writableRule,
+ undefined,
+ { ...data, ruleValue: 'baz' },
+ null
+ )
+ );
+});
diff --git a/packages/vue-vuetify/dev/components/ExampleSettings.vue b/packages/vue-vuetify/dev/components/ExampleSettings.vue
index bd89d4753..2c8df6fe2 100644
--- a/packages/vue-vuetify/dev/components/ExampleSettings.vue
+++ b/packages/vue-vuetify/dev/components/ExampleSettings.vue
@@ -326,6 +326,22 @@ const layouts = appstoreLayouts.map((value: AppstoreLayouts) => ({
+
+
+
+ When false, readonly is treated as disabled for backward
+ compatibility. When true, readonly and enabled are handled
+ separately
+
+
+
+
+
+
@@ -124,7 +124,10 @@
small
class="ma-0"
:aria-label="control.translations.downAriaLabel"
- :disabled="index >= dataLength - 1 || !control.enabled"
+ :disabled="
+ index >= dataLength - 1 ||
+ !isControlEditable(control)
+ "
:class="styles.listWithDetail.itemMoveDown"
@click="moveDownClick($event, index)"
>
@@ -148,7 +151,7 @@
:class="styles.listWithDetail.itemDelete"
@click="removeItemsClick($event, [index])"
:disabled="
- !control.enabled ||
+ !isControlEditable(control) ||
(appliedOptions.restrict &&
control.arraySchema !== undefined &&
control.arraySchema.minItems !== undefined &&
@@ -180,6 +183,7 @@
:uischema="foundUISchema"
:path="composePaths(control.path, `${selectedIndex}`)"
:enabled="control.enabled"
+ :readonly="control.readonly"
:renderers="control.renderers"
:cells="control.cells"
/>
@@ -221,7 +225,7 @@ import {
VVirtualScroll,
} from 'vuetify/components';
import { ValidationBadge, ValidationIcon } from '../controls/components/index';
-import { useIcons, useVuetifyArrayControl } from '../util';
+import { isControlEditable, useIcons, useVuetifyArrayControl } from '../util';
const controlRenderer = defineComponent({
name: 'list-with-detail-renderer',
@@ -270,6 +274,7 @@ const controlRenderer = defineComponent({
return {
...input,
+ isControlEditable,
selectedIndex,
icons,
};
@@ -286,6 +291,7 @@ const controlRenderer = defineComponent({
this.control.path,
undefined,
this.control.uischema,
+ this.control.rootSchema,
);
},
},
diff --git a/packages/vue-vuetify/src/complex/AllOfRenderer.vue b/packages/vue-vuetify/src/complex/AllOfRenderer.vue
index 233d3e433..d1afc18aa 100644
--- a/packages/vue-vuetify/src/complex/AllOfRenderer.vue
+++ b/packages/vue-vuetify/src/complex/AllOfRenderer.vue
@@ -6,6 +6,7 @@
:uischema="delegateUISchema"
:path="control.path"
:enabled="control.enabled"
+ :readonly="control.readonly"
:renderers="control.renderers"
:cells="control.cells"
/>
@@ -25,6 +26,7 @@
:uischema="allOfRenderInfo.uischema"
:path="control.path"
:enabled="control.enabled"
+ :readonly="control.readonly"
:renderers="control.renderers"
:cells="control.cells"
/>
diff --git a/packages/vue-vuetify/src/complex/AnyOfRenderer.vue b/packages/vue-vuetify/src/complex/AnyOfRenderer.vue
index 3ce0d5990..877193963 100644
--- a/packages/vue-vuetify/src/complex/AnyOfRenderer.vue
+++ b/packages/vue-vuetify/src/complex/AnyOfRenderer.vue
@@ -29,6 +29,7 @@
:renderers="control.renderers"
:cells="control.cells"
:enabled="control.enabled"
+ :readonly="control.readonly"
/>
diff --git a/packages/vue-vuetify/src/complex/ArrayControlRenderer.vue b/packages/vue-vuetify/src/complex/ArrayControlRenderer.vue
index f60e38397..8f5ddaa48 100644
--- a/packages/vue-vuetify/src/complex/ArrayControlRenderer.vue
+++ b/packages/vue-vuetify/src/complex/ArrayControlRenderer.vue
@@ -33,7 +33,7 @@
v-bind="props"
:class="styles.arrayList.addButton"
:disabled="
- !control.enabled ||
+ !isControlEditable(control) ||
(appliedOptions.restrict &&
control.arraySchema !== undefined &&
control.arraySchema.maxItems !== undefined &&
@@ -65,7 +65,7 @@
{{ title(prop) }}
|
@@ -141,7 +142,10 @@
elevation="0"
small
:aria-label="control.translations.downAriaLabel"
- :disabled="index >= dataLength - 1 || !control.enabled"
+ :disabled="
+ index >= dataLength - 1 ||
+ !isControlEditable(control)
+ "
:class="styles.arrayList.itemMoveDown"
@click="moveDownClick($event, index)"
>
@@ -163,7 +167,7 @@
:aria-label="control.translations.removeAriaLabel"
:class="styles.arrayList.itemDelete"
:disabled="
- !control.enabled ||
+ !isControlEditable(control) ||
(appliedOptions.restrict &&
control.arraySchema !== undefined &&
control.arraySchema.minItems !== undefined &&
@@ -220,7 +224,7 @@ import {
VTooltip,
} from 'vuetify/components';
import { ValidationIcon } from '../controls/components/index';
-import { useIcons, useVuetifyArrayControl } from '../util';
+import { isControlEditable, useIcons, useVuetifyArrayControl } from '../util';
const controlRenderer = defineComponent({
name: 'array-control-renderer',
@@ -249,6 +253,7 @@ const controlRenderer = defineComponent({
return {
...useVuetifyArrayControl(input),
+ isControlEditable,
icons,
};
},
diff --git a/packages/vue-vuetify/src/complex/EnumArrayRenderer.vue b/packages/vue-vuetify/src/complex/EnumArrayRenderer.vue
index 6edec0418..e12724970 100644
--- a/packages/vue-vuetify/src/complex/EnumArrayRenderer.vue
+++ b/packages/vue-vuetify/src/complex/EnumArrayRenderer.vue
@@ -4,6 +4,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:hint="control.description"
@@ -34,6 +35,7 @@
:error-messages="control.errors"
hide-details
:disabled="!control.enabled"
+ :readonly="control.readonly"
:indeterminate="control.data === undefined"
v-bind="vuetifyProps(`v-checkbox[${o.value}]`)"
@update:model-value="() => toggle(o.value)"
diff --git a/packages/vue-vuetify/src/complex/MixedRenderer.vue b/packages/vue-vuetify/src/complex/MixedRenderer.vue
index ca750c831..df0563592 100644
--- a/packages/vue-vuetify/src/complex/MixedRenderer.vue
+++ b/packages/vue-vuetify/src/complex/MixedRenderer.vue
@@ -12,11 +12,12 @@
v-disabled-icon-focus
:id="control.id + '-input-selector'"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:label="computedLabel"
:required="control.required"
:error-messages="control.errors"
:items="mixedRenderInfos"
- :clearable="control.enabled"
+ :clearable="isControlEditable(control)"
@update:model-value="handleSelectChange"
:item-title="
(item: SchemaRenderInfo) => t(item.label, item.label)
@@ -46,6 +47,7 @@
:renderers="control.renderers"
:cells="control.cells"
:enabled="control.enabled"
+ :readonly="control.readonly"
>
@@ -59,11 +61,12 @@
v-disabled-icon-focus
:id="control.id + '-input-selector'"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:label="computedLabel"
:required="control.required"
:error-messages="control.errors"
:items="mixedRenderInfos"
- :clearable="control.enabled"
+ :clearable="isControlEditable(control)"
@update:model-value="handleSelectChange"
:item-title="(item: SchemaRenderInfo) => t(item.label, item.label)"
item-value="index"
@@ -83,6 +86,7 @@
:renderers="control.renderers"
:cells="control.cells"
:enabled="control.enabled"
+ :readonly="control.readonly"
>
@@ -120,6 +124,7 @@ import {
import { DisabledIconFocus } from '../controls';
import {
IsDynamicPropertyContext,
+ isControlEditable,
useCombinatorTranslations,
useIcons,
useJsonForms,
@@ -455,6 +460,7 @@ const controlRenderer = defineComponent({
return {
...useCombinatorTranslations(useVuetifyControl(input)),
+ isControlEditable,
nullable,
mixedRenderInfos,
selectedIndex,
diff --git a/packages/vue-vuetify/src/complex/ObjectRenderer.vue b/packages/vue-vuetify/src/complex/ObjectRenderer.vue
index 81d0f7f4d..84765e8f6 100644
--- a/packages/vue-vuetify/src/complex/ObjectRenderer.vue
+++ b/packages/vue-vuetify/src/complex/ObjectRenderer.vue
@@ -3,6 +3,7 @@
diff --git a/packages/vue-vuetify/src/complex/OneOfTabRenderer.vue b/packages/vue-vuetify/src/complex/OneOfTabRenderer.vue
index 33fa515c9..cd9d88489 100644
--- a/packages/vue-vuetify/src/complex/OneOfTabRenderer.vue
+++ b/packages/vue-vuetify/src/complex/OneOfTabRenderer.vue
@@ -10,7 +10,7 @@
@@ -90,7 +91,11 @@ import {
VWindow,
VWindowItem,
} from 'vuetify/components';
-import { useCombinatorTranslations, useVuetifyControl } from '../util';
+import {
+ isControlEditable,
+ useCombinatorTranslations,
+ useVuetifyControl,
+} from '../util';
import { CombinatorProperties } from './components';
const controlRenderer = defineComponent({
@@ -124,6 +129,7 @@ const controlRenderer = defineComponent({
return {
...useCombinatorTranslations(useVuetifyControl(input)),
+ isControlEditable,
selectedIndex,
selectIndex,
dialog,
diff --git a/packages/vue-vuetify/src/complex/components/AdditionalProperties.vue b/packages/vue-vuetify/src/complex/components/AdditionalProperties.vue
index 07ff51869..f97782b9b 100644
--- a/packages/vue-vuetify/src/complex/components/AdditionalProperties.vue
+++ b/packages/vue-vuetify/src/complex/components/AdditionalProperties.vue
@@ -20,7 +20,7 @@
:renderers="control.renderers"
:cells="control.cells"
:config="control.config"
- :readonly="!control.enabled"
+ :readonly="!isControlEditable(control)"
:validation-mode="validationMode"
:i18n="i18n"
:ajv="ajv"
@@ -60,6 +60,7 @@
:uischema="element.uischema"
:path="element.path"
:enabled="control.enabled"
+ :readonly="control.readonly"
:renderers="control.renderers"
:cells="control.cells"
/>
@@ -142,6 +143,7 @@ import { DisabledIconFocus } from '../../controls/directives';
import { useStyles } from '../../styles';
import {
useControlAppliedOptions,
+ isControlEditable,
useIcons,
useJsonForms,
useTranslator,
@@ -440,6 +442,7 @@ export default defineComponent({
newPropertyErrors,
additionalErrors,
icons,
+ isControlEditable,
propertyNameSchema,
translations,
};
@@ -448,7 +451,7 @@ export default defineComponent({
addPropertyDisabled(): boolean {
return (
// add is disabled because the overall control is disabled
- !this.control.enabled ||
+ !this.isControlEditable(this.control) ||
// add is disabled because of contraints
(this.appliedOptions.restrict && this.maxPropertiesReached) ||
// add is disabled because there are errors for the new property name or it is not specified
@@ -469,7 +472,7 @@ export default defineComponent({
removePropertyDisabled(): boolean {
return (
// add is disabled because the overall control is disabled
- !this.control.enabled ||
+ !this.isControlEditable(this.control) ||
// add is disabled because of contraints
(this.appliedOptions.restrict && this.minPropertiesReached)
);
diff --git a/packages/vue-vuetify/src/controls/AnyOfStringOrEnumControlRenderer.vue b/packages/vue-vuetify/src/controls/AnyOfStringOrEnumControlRenderer.vue
index 8826edae2..93d6c3a60 100644
--- a/packages/vue-vuetify/src/controls/AnyOfStringOrEnumControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/AnyOfStringOrEnumControlRenderer.vue
@@ -10,6 +10,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/BooleanControlRenderer.vue b/packages/vue-vuetify/src/controls/BooleanControlRenderer.vue
index 2ebf4fe47..7ffff26e7 100644
--- a/packages/vue-vuetify/src/controls/BooleanControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/BooleanControlRenderer.vue
@@ -9,6 +9,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/BooleanToggleControlRenderer.vue b/packages/vue-vuetify/src/controls/BooleanToggleControlRenderer.vue
index c64f70769..6d40d85ac 100644
--- a/packages/vue-vuetify/src/controls/BooleanToggleControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/BooleanToggleControlRenderer.vue
@@ -9,6 +9,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/DateControlRenderer.vue b/packages/vue-vuetify/src/controls/DateControlRenderer.vue
index 75ac6ae62..4a1e7c576 100644
--- a/packages/vue-vuetify/src/controls/DateControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/DateControlRenderer.vue
@@ -10,6 +10,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder ?? dateFormat"
:label="computedLabel"
@@ -35,7 +36,7 @@
min-width="290px"
v-bind="vuetifyProps('v-menu')"
activator="parent"
- :disabled="!control.enabled"
+ :disabled="!isControlEditable(control)"
>
{{ pickerIcon }}
@@ -106,6 +107,7 @@ import {
convertDayjsToMaskaFormat,
determineClearValue,
expandLocaleFormat,
+ isControlEditable,
parseDateTime,
useTranslator,
useVuetifyControl,
@@ -261,6 +263,7 @@ const controlRenderer = defineComponent({
t,
adaptValue,
dateFormat,
+ isControlEditable,
options,
useMask,
};
diff --git a/packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue b/packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue
index eda57ba99..76d236788 100644
--- a/packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue
@@ -10,6 +10,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder ?? dateTimeFormat"
:label="computedLabel"
@@ -34,7 +35,7 @@
transition="scale-transition"
:min-width="useTabLayout ? '290px' : '580px'"
v-bind="vuetifyProps('v-menu')"
- :disabled="!control.enabled"
+ :disabled="!isControlEditable(control)"
>
{{ pickerIcon }}
@@ -240,6 +241,7 @@ import {
convertDayjsToMaskaFormat,
determineClearValue,
expandLocaleFormat,
+ isControlEditable,
parseDateTime,
useIcons,
useTranslator,
@@ -340,6 +342,7 @@ const controlRenderer = defineComponent({
mobile,
icons,
dateTimeFormat,
+ isControlEditable,
options,
useMask,
maska,
diff --git a/packages/vue-vuetify/src/controls/EnumControlRenderer.vue b/packages/vue-vuetify/src/controls/EnumControlRenderer.vue
index 7fcd95d1f..5fccaea2f 100644
--- a/packages/vue-vuetify/src/controls/EnumControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/EnumControlRenderer.vue
@@ -10,6 +10,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/IntegerControlRenderer.vue b/packages/vue-vuetify/src/controls/IntegerControlRenderer.vue
index 42b9c380e..71c45b598 100644
--- a/packages/vue-vuetify/src/controls/IntegerControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/IntegerControlRenderer.vue
@@ -11,6 +11,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/MultiStringControlRenderer.vue b/packages/vue-vuetify/src/controls/MultiStringControlRenderer.vue
index 7d57c69f9..2ae8da6ef 100644
--- a/packages/vue-vuetify/src/controls/MultiStringControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/MultiStringControlRenderer.vue
@@ -10,6 +10,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/NumberControlRenderer.vue b/packages/vue-vuetify/src/controls/NumberControlRenderer.vue
index 796f066d3..872a522e3 100644
--- a/packages/vue-vuetify/src/controls/NumberControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/NumberControlRenderer.vue
@@ -12,6 +12,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/OneOfEnumControlRenderer.vue b/packages/vue-vuetify/src/controls/OneOfEnumControlRenderer.vue
index 2dfe9d132..23652c118 100644
--- a/packages/vue-vuetify/src/controls/OneOfEnumControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/OneOfEnumControlRenderer.vue
@@ -10,6 +10,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/OneOfRadioGroupControlRenderer.vue b/packages/vue-vuetify/src/controls/OneOfRadioGroupControlRenderer.vue
index 02fe10608..da4944934 100644
--- a/packages/vue-vuetify/src/controls/OneOfRadioGroupControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/OneOfRadioGroupControlRenderer.vue
@@ -12,6 +12,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:hint="control.description"
diff --git a/packages/vue-vuetify/src/controls/PasswordControlRenderer.vue b/packages/vue-vuetify/src/controls/PasswordControlRenderer.vue
index 593d2a87c..fec3fbe8f 100644
--- a/packages/vue-vuetify/src/controls/PasswordControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/PasswordControlRenderer.vue
@@ -16,6 +16,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/RadioGroupControlRenderer.vue b/packages/vue-vuetify/src/controls/RadioGroupControlRenderer.vue
index b9f03f228..e0e8aa99b 100644
--- a/packages/vue-vuetify/src/controls/RadioGroupControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/RadioGroupControlRenderer.vue
@@ -12,6 +12,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:hint="control.description"
diff --git a/packages/vue-vuetify/src/controls/SliderControlRenderer.vue b/packages/vue-vuetify/src/controls/SliderControlRenderer.vue
index 12be9e3de..d355d8d01 100644
--- a/packages/vue-vuetify/src/controls/SliderControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/SliderControlRenderer.vue
@@ -13,6 +13,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/StringControlRenderer.vue b/packages/vue-vuetify/src/controls/StringControlRenderer.vue
index 334d4ad9b..ddd6b8a1f 100644
--- a/packages/vue-vuetify/src/controls/StringControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/StringControlRenderer.vue
@@ -11,6 +11,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
@@ -48,6 +49,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/StringMaskControlRenderer.vue b/packages/vue-vuetify/src/controls/StringMaskControlRenderer.vue
index 934629fad..fed203876 100644
--- a/packages/vue-vuetify/src/controls/StringMaskControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/StringMaskControlRenderer.vue
@@ -10,6 +10,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder ?? appliedOptions.mask"
:label="computedLabel"
diff --git a/packages/vue-vuetify/src/controls/TimeControlRenderer.vue b/packages/vue-vuetify/src/controls/TimeControlRenderer.vue
index d266f51b1..2e65528e1 100644
--- a/packages/vue-vuetify/src/controls/TimeControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/TimeControlRenderer.vue
@@ -10,6 +10,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder ?? timeFormat"
:label="computedLabel"
@@ -35,7 +36,7 @@
:min-width="ampm && useSeconds ? '340px' : '290px'"
v-bind="vuetifyProps('v-menu')"
activator="parent"
- :disabled="!control.enabled"
+ :disabled="!isControlEditable(control)"
>
{{ pickerIcon }}
@@ -123,6 +124,7 @@ import {
convertDayjsToMaskaFormat,
determineClearValue,
expandLocaleFormat,
+ isControlEditable,
parseDateTime,
useIcons,
useTranslator,
@@ -213,6 +215,7 @@ const controlRenderer = defineComponent({
icons,
ampm,
timeFormat,
+ isControlEditable,
options,
useMask,
maska,
diff --git a/packages/vue-vuetify/src/extended/AutocompleteEnumControlRenderer.vue b/packages/vue-vuetify/src/extended/AutocompleteEnumControlRenderer.vue
index 9608262d7..e77efeb88 100644
--- a/packages/vue-vuetify/src/extended/AutocompleteEnumControlRenderer.vue
+++ b/packages/vue-vuetify/src/extended/AutocompleteEnumControlRenderer.vue
@@ -11,6 +11,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
@@ -18,7 +19,7 @@
:persistent-hint="persistentHint()"
:required="control.required"
:error-messages="control.errors"
- :clearable="control.enabled"
+ :clearable="clearable"
:model-value="control.data"
:items="control.options"
item-title="label"
@@ -34,6 +35,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
@@ -41,7 +43,7 @@
:persistent-hint="persistentHint()"
:required="control.required"
:error-messages="control.errors"
- :clearable="control.enabled"
+ :clearable="clearable"
:model-value="control.data"
:items="control.options"
item-title="label"
diff --git a/packages/vue-vuetify/src/extended/AutocompleteOneOfEnumControlRenderer.vue b/packages/vue-vuetify/src/extended/AutocompleteOneOfEnumControlRenderer.vue
index 03e9ed970..720c583af 100644
--- a/packages/vue-vuetify/src/extended/AutocompleteOneOfEnumControlRenderer.vue
+++ b/packages/vue-vuetify/src/extended/AutocompleteOneOfEnumControlRenderer.vue
@@ -11,6 +11,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
@@ -18,7 +19,7 @@
:persistent-hint="persistentHint()"
:required="control.required"
:error-messages="control.errors"
- :clearable="control.enabled"
+ :clearable="clearable"
:model-value="control.data"
:items="control.options"
item-title="label"
@@ -34,6 +35,7 @@
:id="control.id + '-input'"
:class="styles.control.input"
:disabled="!control.enabled"
+ :readonly="control.readonly"
:autofocus="appliedOptions.focus"
:placeholder="appliedOptions.placeholder"
:label="computedLabel"
@@ -41,7 +43,7 @@
:persistent-hint="persistentHint()"
:required="control.required"
:error-messages="control.errors"
- :clearable="control.enabled"
+ :clearable="clearable"
:model-value="control.data"
:items="control.options"
item-title="label"
diff --git a/packages/vue-vuetify/src/layouts/ArrayLayoutRenderer.vue b/packages/vue-vuetify/src/layouts/ArrayLayoutRenderer.vue
index fb5c1b6ad..1c8d19593 100644
--- a/packages/vue-vuetify/src/layouts/ArrayLayoutRenderer.vue
+++ b/packages/vue-vuetify/src/layouts/ArrayLayoutRenderer.vue
@@ -119,7 +119,9 @@
small
class="v-expansion-panel-title__icon"
:aria-label="control.translations.upAriaLabel"
- :disabled="index <= 0 || !control.enabled"
+ :disabled="
+ index <= 0 || !isControlEditable(control)
+ "
:class="styles.arrayList.itemMoveUp"
@click="moveUpClick($event, index)"
>
@@ -146,7 +148,8 @@
class="v-expansion-panel-title__icon"
:aria-label="control.translations.downAriaLabel"
:disabled="
- index >= dataLength - 1 || !control.enabled
+ index >= dataLength - 1 ||
+ !isControlEditable(control)
"
:class="styles.arrayList.itemMoveDown"
@click="moveDownClick($event, index)"
@@ -172,7 +175,7 @@
:aria-label="control.translations.removeAriaLabel"
:class="styles.arrayList.itemDelete"
:disabled="
- !control.enabled ||
+ !isControlEditable(control) ||
(appliedOptions.restrict &&
control.arraySchema !== undefined &&
control.arraySchema.minItems !== undefined &&
@@ -197,6 +200,7 @@
:uischema="foundUISchema"
:path="composePaths(control.path, `${index}`)"
:enabled="control.enabled"
+ :readonly="control.readonly"
:renderers="control.renderers"
:cells="control.cells"
/>
@@ -305,7 +309,12 @@ import {
VTooltip,
} from 'vuetify/components';
import { ValidationBadge, ValidationIcon } from '../controls/components/index';
-import { useIcons, useNested, useVuetifyArrayControl } from '../util';
+import {
+ isControlEditable,
+ useIcons,
+ useNested,
+ useVuetifyArrayControl,
+} from '../util';
const controlRenderer = defineComponent({
name: 'array-layout-renderer',
@@ -358,13 +367,14 @@ const controlRenderer = defineComponent({
currentlyExpanded,
expansionPanelsProps,
suggestToDelete,
+ isControlEditable,
icons,
};
},
computed: {
addDisabled(): boolean {
return (
- !this.control.enabled ||
+ !this.isControlEditable(this.control) ||
(this.appliedOptions.restrict &&
this.control.arraySchema !== undefined &&
this.control.arraySchema.maxItems !== undefined &&
diff --git a/packages/vue-vuetify/src/layouts/CategorizationRenderer.vue b/packages/vue-vuetify/src/layouts/CategorizationRenderer.vue
index 809b7cf60..728804ec3 100644
--- a/packages/vue-vuetify/src/layouts/CategorizationRenderer.vue
+++ b/packages/vue-vuetify/src/layouts/CategorizationRenderer.vue
@@ -36,6 +36,7 @@
:uischema="element.value.uischema"
:path="layout.path"
:enabled="layout.enabled"
+ :readonly="layout.readonly"
:renderers="layout.renderers"
:cells="layout.cells"
/>
@@ -63,6 +64,7 @@
:uischema="element.value.uischema"
:path="layout.path"
:enabled="layout.enabled"
+ :readonly="layout.readonly"
:renderers="layout.renderers"
:cells="layout.cells"
/>
diff --git a/packages/vue-vuetify/src/layouts/CategorizationStepperRenderer.vue b/packages/vue-vuetify/src/layouts/CategorizationStepperRenderer.vue
index a3f62d3a1..085a33a40 100644
--- a/packages/vue-vuetify/src/layouts/CategorizationStepperRenderer.vue
+++ b/packages/vue-vuetify/src/layouts/CategorizationStepperRenderer.vue
@@ -20,6 +20,7 @@
:uischema="element.value.uischema"
:path="layout.path"
:enabled="layout.enabled"
+ :readonly="layout.readonly"
:renderers="layout.renderers"
:cells="layout.cells"
/>
@@ -60,6 +61,7 @@
:uischema="element.value.uischema"
:path="layout.path"
:enabled="layout.enabled"
+ :readonly="layout.readonly"
:renderers="layout.renderers"
:cells="layout.cells"
/>
diff --git a/packages/vue-vuetify/src/layouts/GroupRenderer.vue b/packages/vue-vuetify/src/layouts/GroupRenderer.vue
index c65bd1b14..71a475507 100644
--- a/packages/vue-vuetify/src/layouts/GroupRenderer.vue
+++ b/packages/vue-vuetify/src/layouts/GroupRenderer.vue
@@ -24,6 +24,7 @@
:uischema="element"
:path="layout.path"
:enabled="layout.enabled"
+ :readonly="layout.readonly"
:renderers="layout.renderers"
:cells="layout.cells"
/>
diff --git a/packages/vue-vuetify/src/layouts/HorizontalLayoutRenderer.vue b/packages/vue-vuetify/src/layouts/HorizontalLayoutRenderer.vue
index 666cfa72c..0d286fe9b 100644
--- a/packages/vue-vuetify/src/layouts/HorizontalLayoutRenderer.vue
+++ b/packages/vue-vuetify/src/layouts/HorizontalLayoutRenderer.vue
@@ -17,6 +17,7 @@
:uischema="element"
:path="layout.path"
:enabled="layout.enabled"
+ :readonly="layout.readonly"
:renderers="layout.renderers"
:cells="layout.cells"
/>
diff --git a/packages/vue-vuetify/src/layouts/VerticalLayoutRenderer.vue b/packages/vue-vuetify/src/layouts/VerticalLayoutRenderer.vue
index c8059fccb..f91d8ed62 100644
--- a/packages/vue-vuetify/src/layouts/VerticalLayoutRenderer.vue
+++ b/packages/vue-vuetify/src/layouts/VerticalLayoutRenderer.vue
@@ -20,6 +20,7 @@
:uischema="element"
:path="layout.path"
:enabled="layout.enabled"
+ :readonly="layout.readonly"
:renderers="layout.renderers"
:cells="layout.cells"
/>
diff --git a/packages/vue-vuetify/src/util/composition.ts b/packages/vue-vuetify/src/util/composition.ts
index 62bc432e3..ca7bf0a4f 100644
--- a/packages/vue-vuetify/src/util/composition.ts
+++ b/packages/vue-vuetify/src/util/composition.ts
@@ -95,6 +95,11 @@ export const useComputedLabel = <
});
};
+export const isControlEditable = (control: {
+ enabled: boolean;
+ readonly: boolean;
+}) => control.enabled && !control.readonly;
+
/**
* Adds styles, appliedOptions and vuetifyProps
*/
@@ -146,6 +151,7 @@ export const useVuetifyControl = <
id: string;
visible: boolean;
enabled: boolean;
+ readonly: boolean;
},
I extends {
control: ComputedRef;
@@ -265,7 +271,7 @@ export const useVuetifyControl = <
const clearable = computed(() => {
return appliedOptions.value.clearable !== undefined
? appliedOptions.value.clearable
- : input.control.value.enabled;
+ : isControlEditable(input.control.value);
});
return {
diff --git a/packages/vue/src/jsonFormsCompositions.ts b/packages/vue/src/jsonFormsCompositions.ts
index 1ac967aab..fb519e6f1 100644
--- a/packages/vue/src/jsonFormsCompositions.ts
+++ b/packages/vue/src/jsonFormsCompositions.ts
@@ -77,6 +77,11 @@ export const rendererProps = () => ({
type: Boolean,
default: undefined,
},
+ readonly: {
+ required: false as const,
+ type: Boolean,
+ default: undefined,
+ },
renderers: {
required: false,
type: Array as PropType,
@@ -132,6 +137,7 @@ export interface RendererProps {
uischema: U;
path: string;
enabled?: boolean;
+ readonly?: boolean;
renderers?: JsonFormsRendererRegistryEntry[];
cells?: JsonFormsCellRendererRegistryEntry[];
config?: any;
From effb45cdbc9b8a8a5dfba490572262f9d7bb61ee Mon Sep 17 00:00:00 2001
From: Stefan Dirix
Date: Thu, 12 Mar 2026 11:07:22 +0000
Subject: [PATCH 15/29] docs: add UI testing guide to CLAUDE.md, align dev
scripts
- Add documentation for running example apps and combined examples-app
for UI testing with Playwright MCP
- Rename "serve" to "dev" in vue and vue-vanilla packages for
consistency across all renderer sets
- Update README.md to reflect the vue-vanilla script rename
- Add .pnpm-store and .playwright-mcp to .gitignore
---
.gitignore | 4 ++-
CLAUDE.md | 52 ++++++++++++++++++++++++++++++-
README.md | 2 +-
packages/vue-vanilla/package.json | 2 +-
packages/vue/package.json | 2 +-
5 files changed, 57 insertions(+), 5 deletions(-)
diff --git a/.gitignore b/.gitignore
index 658b9f0e0..6671705a7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,4 +15,6 @@ stats.html
.coveralls.yml
packages/examples-react/build
-**/.angular/cache
\ No newline at end of file
+**/.angular/cache
+.pnpm-store
+.playwright-mcp
diff --git a/CLAUDE.md b/CLAUDE.md
index ac282ada9..609c4adf2 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -38,4 +38,54 @@ pnpm lerna run test --scope=@jsonforms/core
### Build Order Dependencies
-`core` → `react`/`angular`/`vue` → renderer packages
+`core` → `react`/`angular`/`vue` → renderer packages.
+Lerna automatically respects the build order dependencies.
+
+## Running Example Applications for UI Testing
+
+Each renderer set has its own example application with a dev server. Before starting any dev server, you **must** first install dependencies and build all packages:
+
+```bash
+pnpm install # Install dependencies (run from repo root)
+pnpm run build # Build all packages (required before dev servers work)
+```
+
+All renderer sets share the same set of examples from `packages/examples/`.
+
+### Individual Dev Servers
+
+Start dev servers from the **repo root** using `cd` into the package directory.
+Each renderer set example application can be started by executing `pnpm run dev`.
+
+### Combined Examples App (All Renderer Sets)
+
+The combined examples app aggregates all 5 renderer sets into a single static app at `packages/examples-app/dist/`.
+It has an index page with links to each renderer set's sub-app.
+
+**Full build (first time or after `clean`):**
+
+```bash
+pnpm install # Install dependencies
+pnpm run build # Build all packages (required first)
+pnpm run build:examples-app # Build all example bundles + aggregate into dist
+```
+
+**Rebuild after code changes to a specific renderer set:**
+
+```bash
+# 1. Rebuild the changed package (and any dependencies that changed)
+pnpm lerna run build --scope=@jsonforms/material-renderers
+
+# 2. Rebuild only that renderer set's example bundle
+pnpm lerna run build:examples-app --scope=@jsonforms/material-renderers
+
+# 3. Re-aggregate into the combined app
+node packages/examples-app/prepare-examples-app.js
+```
+
+**Serving the combined app:**
+
+```bash
+# No built-in serve script exists - use any static file server:
+python3 -m http.server 9090 --directory packages/examples-app/dist
+```
diff --git a/README.md b/README.md
index 31741d36b..2917ddb30 100644
--- a/README.md
+++ b/README.md
@@ -67,7 +67,7 @@ In this case, you can try to clean the repository with `git clean -dfx`. Beware
- Run React Vanilla examples: `cd packages/vanilla-renderers && pnpm run dev`
- Run React Material examples: `cd packages/material-renderers && pnpm run dev`
- Run Angular Material examples: `cd packages/angular-material && pnpm run dev`
-- Run Vue Vanilla dev setup: `cd packages/vue-vanilla && pnpm run serve`
+- Run Vue Vanilla dev setup: `cd packages/vue-vanilla && pnpm run dev`
- Run Vue Vuetify dev setup: `cd packages/vue-vuetify && pnpm run dev`
### Dependency & Release management
diff --git a/packages/vue-vanilla/package.json b/packages/vue-vanilla/package.json
index 1c51f084f..57882f7b6 100644
--- a/packages/vue-vanilla/package.json
+++ b/packages/vue-vanilla/package.json
@@ -43,7 +43,7 @@
"vanilla.css"
],
"scripts": {
- "serve": "vue-cli-service serve dev/serve.ts",
+ "dev": "vue-cli-service serve dev/serve.ts",
"build": "cross-env NODE_ENV=production rollup --config rollup.config.js",
"build:examples-app": "rollup -c rollup.example.config.js",
"clean": "rimraf lib example/dist",
diff --git a/packages/vue/package.json b/packages/vue/package.json
index ad259fcf1..e3b1d62e8 100644
--- a/packages/vue/package.json
+++ b/packages/vue/package.json
@@ -39,7 +39,7 @@
"src/*"
],
"scripts": {
- "serve": "vue-cli-service serve dev/serve.ts",
+ "dev": "vue-cli-service serve dev/serve.ts",
"build": "cross-env NODE_ENV=production rollup --config rollup.config.js",
"clean": "rimraf lib",
"lint": "eslint .",
From 75994176292ab4d5720a8485f647d9b0dae801bd Mon Sep 17 00:00:00 2001
From: Alexander
Date: Mon, 6 Apr 2026 23:35:32 +0200
Subject: [PATCH 16/29] fix: flicker when quickly changing between vue-vuetify
inputs
---
packages/vue-vuetify/src/util/composition.ts | 3 +++
1 file changed, 3 insertions(+)
diff --git a/packages/vue-vuetify/src/util/composition.ts b/packages/vue-vuetify/src/util/composition.ts
index ca7bf0a4f..443c6a117 100644
--- a/packages/vue-vuetify/src/util/composition.ts
+++ b/packages/vue-vuetify/src/util/composition.ts
@@ -185,6 +185,9 @@ export const useVuetifyControl = <
const handleBlur = () => {
touched.value = true;
isFocused.value = false;
+ if (changeEmitter && (changeEmitter as any).flush) {
+ (changeEmitter as any).flush();
+ }
};
const jsonforms = useJsonForms();
From 39406f11f49ae7280acc5cc5922cba2b5a16b0b5 Mon Sep 17 00:00:00 2001
From: Lucas Koehler
Date: Mon, 16 Mar 2026 17:37:51 +0100
Subject: [PATCH 17/29] deps: remove hammerjs dependency from angular-material
package
fixes #2524
---
MIGRATION.md | 8 ++++++++
packages/angular-material/angular.json | 2 +-
packages/angular-material/ng-package.json | 3 +--
packages/angular-material/package.json | 1 -
packages/angular-material/src/library/index.ts | 1 -
pnpm-lock.yaml | 13 ++-----------
6 files changed, 12 insertions(+), 16 deletions(-)
diff --git a/MIGRATION.md b/MIGRATION.md
index 796a3a8dc..c61fbadf6 100644
--- a/MIGRATION.md
+++ b/MIGRATION.md
@@ -1,5 +1,13 @@
# Migration guide
+## Migrating to JSON Forms 3.8
+
+### Angular material removes hammerjs
+
+The angular material package no longer depends or imports the `hammerjs` package.
+`hammerjs` is a deprecated package for touch gesture support that was last updated 10 years ago.
+Thus, it is not expected to be in use. However, if you notice sudden failures in reaction to touch gestures, check if you are still using this.
+
## Migrating to JSON Forms 3.7
### Angular support now targets Angular 19 to 21
diff --git a/packages/angular-material/angular.json b/packages/angular-material/angular.json
index 25c165d09..68afbd313 100644
--- a/packages/angular-material/angular.json
+++ b/packages/angular-material/angular.json
@@ -28,7 +28,7 @@
"./node_modules/@angular/material/prebuilt-themes/indigo-pink.css"
],
"scripts": [],
- "allowedCommonJsDependencies": ["lodash", "hammerjs"],
+ "allowedCommonJsDependencies": ["lodash"],
"optimization": false,
"buildOptimizer": false
}
diff --git a/packages/angular-material/ng-package.json b/packages/angular-material/ng-package.json
index e13258f5d..d4652c309 100644
--- a/packages/angular-material/ng-package.json
+++ b/packages/angular-material/ng-package.json
@@ -4,7 +4,6 @@
"allowedNonPeerDependencies": [
"@jsonforms/angular",
"@jsonforms/core",
- "hammerjs",
"lodash"
]
-}
\ No newline at end of file
+}
diff --git a/packages/angular-material/package.json b/packages/angular-material/package.json
index 13e12f641..0bebcdd2f 100644
--- a/packages/angular-material/package.json
+++ b/packages/angular-material/package.json
@@ -78,7 +78,6 @@
"rxjs": "^6.6.0 || ^7.4.0"
},
"dependencies": {
- "hammerjs": "2.0.8",
"lodash": "^4.17.21"
},
"devDependencies": {
diff --git a/packages/angular-material/src/library/index.ts b/packages/angular-material/src/library/index.ts
index 64c286e7d..1e8f6e5ec 100644
--- a/packages/angular-material/src/library/index.ts
+++ b/packages/angular-material/src/library/index.ts
@@ -22,7 +22,6 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
-import 'hammerjs';
import { RankedTester } from '@jsonforms/core';
export * from './module';
import {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5d0477d39..16809f769 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -171,9 +171,6 @@ importers:
packages/angular-material:
dependencies:
- hammerjs:
- specifier: 2.0.8
- version: 2.0.8
lodash:
specifier: ^4.17.21
version: 4.17.23
@@ -9034,10 +9031,6 @@ packages:
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
engines: {node: '>=10'}
- hammerjs@2.0.8:
- resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==}
- engines: {node: '>=0.8.0'}
-
handle-thing@2.0.1:
resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
@@ -14784,7 +14777,7 @@ snapshots:
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1902.17(chokidar@4.0.1)
- '@angular-devkit/build-webpack': 0.1902.17(chokidar@4.0.1)(webpack-dev-server@5.2.2(webpack@5.98.0(esbuild@0.25.4)))(webpack@5.98.0(esbuild@0.25.4))
+ '@angular-devkit/build-webpack': 0.1902.17(chokidar@4.0.1)(webpack-dev-server@5.2.2(webpack@5.91.0))(webpack@5.98.0(esbuild@0.25.4))
'@angular-devkit/core': 19.2.17(chokidar@4.0.1)
'@angular/build': 19.2.17(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(@angular/compiler@19.2.19)(@types/node@22.13.8)(chokidar@4.0.1)(jiti@1.21.0)(karma@6.4.3)(less@4.2.2)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(postcss@8.5.2)(stylus@0.57.0)(terser@5.39.0)(typescript@5.5.4)(yaml@2.8.1)
'@angular/compiler-cli': 19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4)
@@ -14869,7 +14862,7 @@ snapshots:
- webpack-cli
- yaml
- '@angular-devkit/build-webpack@0.1902.17(chokidar@4.0.1)(webpack-dev-server@5.2.2(webpack@5.98.0(esbuild@0.25.4)))(webpack@5.98.0(esbuild@0.25.4))':
+ '@angular-devkit/build-webpack@0.1902.17(chokidar@4.0.1)(webpack-dev-server@5.2.2(webpack@5.91.0))(webpack@5.98.0(esbuild@0.25.4))':
dependencies:
'@angular-devkit/architect': 0.1902.17(chokidar@4.0.1)
rxjs: 7.8.1
@@ -23971,8 +23964,6 @@ snapshots:
dependencies:
duplexer: 0.1.2
- hammerjs@2.0.8: {}
-
handle-thing@2.0.1: {}
handlebars@4.7.8:
From 9fb248ff85d8c61e1eddb4c14ae551966714a18b Mon Sep 17 00:00:00 2001
From: Lucas Koehler
Date: Fri, 20 Mar 2026 10:11:35 +0100
Subject: [PATCH 18/29] deps: Bump angular dev deps to latest 19.2.x
---
pnpm-lock.yaml | 318 ++++++++++++++++++++++++-------------------------
1 file changed, 159 insertions(+), 159 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 16809f769..2553f8264 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -104,16 +104,16 @@ importers:
version: 19.8.1(eslint@8.57.0)(typescript@5.5.4)
'@angular/compiler':
specifier: ^19.0.0
- version: 19.2.19
+ version: 19.2.20
'@angular/compiler-cli':
specifier: ^19.0.0
- version: 19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4)
+ version: 19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4)
'@angular/core':
specifier: ^19.0.0
- version: 19.2.19(rxjs@6.6.7)(zone.js@0.15.1)
+ version: 19.2.20(rxjs@6.6.7)(zone.js@0.15.1)
'@angular/forms':
specifier: ^19.0.0
- version: 19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)
+ version: 19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)
'@jsonforms/core':
specifier: workspace:*
version: link:../core
@@ -143,7 +143,7 @@ importers:
version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8)
ng-packagr:
specifier: ^19.0.0
- version: 19.2.2(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4)
+ version: 19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4)
nyc:
specifier: ^15.1.0
version: 15.1.0
@@ -177,7 +177,7 @@ importers:
devDependencies:
'@angular-devkit/build-angular':
specifier: ^19.0.0
- version: 19.2.17(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(@angular/compiler@19.2.19)(@types/node@22.13.8)(chokidar@4.0.1)(html-webpack-plugin@5.6.0(webpack@5.91.0))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(jiti@1.21.0)(karma@6.4.3)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(protractor@7.0.0)(stylus@0.57.0)(typescript@5.5.4)(vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))(yaml@2.8.1)
+ version: 19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@22.13.8)(chokidar@4.0.1)(html-webpack-plugin@5.6.0(webpack@5.91.0))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(jiti@1.21.0)(karma@6.4.3)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(protractor@7.0.0)(stylus@0.57.0)(typescript@5.5.4)(vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))(yaml@2.8.1)
'@angular-devkit/core':
specifier: ^19.0.0
version: 19.2.17(chokidar@4.0.1)
@@ -195,40 +195,40 @@ importers:
version: 19.8.1(eslint@8.57.0)(typescript@5.5.4)
'@angular/animations':
specifier: ^19.0.0
- version: 19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))
+ version: 19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))
'@angular/cdk':
specifier: ^19.0.0
- version: 19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
+ version: 19.2.19(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
'@angular/cli':
specifier: ^19.0.0
version: 19.2.22(@types/node@22.13.8)(chokidar@4.0.1)
'@angular/common':
specifier: ^19.0.0
- version: 19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
+ version: 19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
'@angular/compiler':
specifier: ^19.0.0
- version: 19.2.19
+ version: 19.2.20
'@angular/compiler-cli':
specifier: ^19.0.0
- version: 19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4)
+ version: 19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4)
'@angular/core':
specifier: ^19.0.0
- version: 19.2.19(rxjs@6.6.7)(zone.js@0.15.1)
+ version: 19.2.20(rxjs@6.6.7)(zone.js@0.15.1)
'@angular/forms':
specifier: ^19.0.0
- version: 19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)
+ version: 19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)
'@angular/material':
specifier: ^19.0.0
- version: 19.2.19(a80ce6d7281a075e658958710ba8f0f7)
+ version: 19.2.19(9337b90db4d65d2a1b8e3d03a944b420)
'@angular/platform-browser':
specifier: ^19.0.0
- version: 19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))
+ version: 19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))
'@angular/platform-browser-dynamic':
specifier: ^19.0.0
- version: 19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/compiler@19.2.19)(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))
+ version: 19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/compiler@19.2.20)(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))
'@angular/router':
specifier: ^19.0.0
- version: 19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)
+ version: 19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)
'@babel/plugin-proposal-nullish-coalescing-operator':
specifier: ^7.16.5
version: 7.18.6(@babel/core@7.26.10)
@@ -246,7 +246,7 @@ importers:
version: link:../examples
'@ngtools/webpack':
specifier: ^19.0.0
- version: 19.2.17(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.91.0)
+ version: 19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.91.0)
'@types/jasmine':
specifier: ~3.8.0
version: 3.8.2
@@ -318,7 +318,7 @@ importers:
version: 5.0.1(webpack@5.91.0)
ng-packagr:
specifier: ^19.0.0
- version: 19.2.2(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4)
+ version: 19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4)
null-loader:
specifier: ^0.1.1
version: 0.1.1
@@ -1280,10 +1280,10 @@ importers:
version: 2.2.6
'@vitejs/plugin-vue':
specifier: ^5.0.4
- version: 5.1.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))(vue@3.5.17(typescript@5.5.4))
+ version: 5.1.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))
'@vitest/coverage-v8':
specifier: ^1.6.0
- version: 1.6.0(vitest@1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))
+ version: 1.6.0(vitest@1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
'@vue/eslint-config-prettier':
specifier: ^9.0.0
version: 9.0.0(@types/eslint@8.56.10)(eslint@8.57.0)(prettier@3.3.3)
@@ -1361,22 +1361,22 @@ importers:
version: 5.5.4
vite:
specifier: ^5.4.21
- version: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
+ version: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
vite-plugin-dts:
specifier: ^3.9.1
- version: 3.9.1(@types/node@22.13.8)(rollup@4.59.0)(typescript@5.5.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))
+ version: 3.9.1(@types/node@22.13.8)(rollup@4.59.0)(typescript@5.5.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
vite-plugin-node-polyfills:
specifier: ^0.21.0
- version: 0.21.0(rollup@4.59.0)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))
+ version: 0.21.0(rollup@4.59.0)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
vite-plugin-static-copy:
specifier: ^2.3.2
- version: 2.3.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))
+ version: 2.3.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
vite-plugin-vuetify:
specifier: ^2.1.1
- version: 2.1.1(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0)
+ version: 2.1.1(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0)
vitest:
specifier: ^1.4.0
- version: 1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
+ version: 1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
vue:
specifier: ^3.5.17
version: 3.5.17(typescript@5.5.4)
@@ -1523,12 +1523,12 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '*'
- '@angular/animations@19.2.19':
- resolution: {integrity: sha512-XGChk+26XZpcwzIQUVjgLxGVC//m5TaDrogseQNIGs2Chzv6KYbo91HftL69fTiM5udRYjg6IV7XEzDNF/GVUw==}
+ '@angular/animations@19.2.20':
+ resolution: {integrity: sha512-TQ4OCazTRAge45FIp3bzO/chImObmasPzprgEzKSDckjGbshAWlYXeCe3U8YaGNaWnkzByyIRNV4P4aHe63M0w==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
- '@angular/common': 19.2.19
- '@angular/core': 19.2.19
+ '@angular/common': 19.2.20
+ '@angular/core': 19.2.20
'@angular/build@19.2.17':
resolution: {integrity: sha512-JrF9dSrsMip2xJzSz3zNoozBXu/OYg0bHuKfuPA/usPhz5AomJ2SQ2unvl6sDF00pTlgJohJMQ6SUHjylybn2g==}
@@ -1578,39 +1578,39 @@ packages:
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
hasBin: true
- '@angular/common@19.2.19':
- resolution: {integrity: sha512-/JYo8jJZ6BAgw3IVYJpinAfGb+RbaZubrElFvaq450BWxDPInv7Z99HKEQ3qEBRsBeIAQ/WrKXDxoJSjy7QMNQ==}
+ '@angular/common@19.2.20':
+ resolution: {integrity: sha512-1M3W3FjUUbVKXDMs+yQpBhnkD/pCe0Jn79rPE5W+EGWWxFoLSyGX+fhnRO5m4c9k66p3nvYrikWQ0ZzMv3M5tw==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
- '@angular/core': 19.2.19
+ '@angular/core': 19.2.20
rxjs: ^6.5.3 || ^7.4.0
- '@angular/compiler-cli@19.2.19':
- resolution: {integrity: sha512-vdMJX9E7wePN41T+6BYRQBA+XiR9a5DBhs20dqtv8YVireQktH6mxLZIg1pVxkL/gnao2gpl/lOvp0xmC7UN/Q==}
+ '@angular/compiler-cli@19.2.20':
+ resolution: {integrity: sha512-tYYQk8AUz2sEkVl0a3uebduDUXPuKiGEKl2Jryrbn0xh9i1EsxoCjt1VvHnGnksGp3mz4DQihFVEnte0KeVQ5g==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
hasBin: true
peerDependencies:
- '@angular/compiler': 19.2.19
+ '@angular/compiler': 19.2.20
typescript: '>=5.5 <5.9'
- '@angular/compiler@19.2.19':
- resolution: {integrity: sha512-kWlqFW7ExvAqKv+X/6ZsWVW7YTmI1/3VUvADLC/6bkLTdKrHS8OtBHfsklXmHMNVbbFopTvoTeKkoqLGrW2lwg==}
+ '@angular/compiler@19.2.20':
+ resolution: {integrity: sha512-LvjE8W58EACgTFaAoqmNe7FRsbvoQ0GvCB/rmm6AEMWx/0W/JBvWkQTrOQlwpoeYOHcMZRGdmPcZoUDwU3JySQ==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
- '@angular/core@19.2.19':
- resolution: {integrity: sha512-VZAzpxBoQgyy7AOlhxbAHxPQWo0nk8xsnrD36PLCZeTZA/5GNzO3lLVaX2N5BCUgpgiCBjNBKq9kVo6ZkAls9g==}
+ '@angular/core@19.2.20':
+ resolution: {integrity: sha512-pxzQh8ouqfE57lJlXjIzXFuRETwkfMVwS+NFCfv2yh01Qtx+vymO8ZClcJMgLPfBYinhBYX+hrRYVSa1nzlkRQ==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
rxjs: ^6.5.3 || ^7.4.0
zone.js: ~0.15.0
- '@angular/forms@19.2.19':
- resolution: {integrity: sha512-J09++utTVaPs962y/adeDjIgqyhzNpnzAS7Nex+HNy/LnWPcTNW781cOh1EGS1X/+CmgnI8HWs5z4KGeBeU1aA==}
+ '@angular/forms@19.2.20':
+ resolution: {integrity: sha512-agi7InbMzop1jrud6L7SlNwnZk3iNolORcFIwBQMvKxLkcJ+ttbSYuM0KAw56IundWHf4dL9GP4cSygm4kUeFA==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
- '@angular/common': 19.2.19
- '@angular/core': 19.2.19
- '@angular/platform-browser': 19.2.19
+ '@angular/common': 19.2.20
+ '@angular/core': 19.2.20
+ '@angular/platform-browser': 19.2.20
rxjs: ^6.5.3 || ^7.4.0
'@angular/material@19.2.19':
@@ -1623,33 +1623,33 @@ packages:
'@angular/platform-browser': ^19.0.0 || ^20.0.0
rxjs: ^6.5.3 || ^7.4.0
- '@angular/platform-browser-dynamic@19.2.19':
- resolution: {integrity: sha512-u8aYmIRGtx4yOXhmqgiRIm+DyH+05bAkzMHr6RE0JV/wxVJmAIKZnquHM6ItFvF0eV0pfMTPwArmRuHVWu7tQg==}
+ '@angular/platform-browser-dynamic@19.2.20':
+ resolution: {integrity: sha512-bNuykQy/MrDeARqvDPf6bqx+m1Qqanep7FhDy9QYWxfqz7D++/phqT9l8Ubj88juFCSDfR5ktUWdpnDz3/BCfA==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
- '@angular/common': 19.2.19
- '@angular/compiler': 19.2.19
- '@angular/core': 19.2.19
- '@angular/platform-browser': 19.2.19
+ '@angular/common': 19.2.20
+ '@angular/compiler': 19.2.20
+ '@angular/core': 19.2.20
+ '@angular/platform-browser': 19.2.20
- '@angular/platform-browser@19.2.19':
- resolution: {integrity: sha512-bnQSmoJNI1LQxJnHnB01XQXqgOdgAtLAOsa24ZT6b2pWV3Vw0/7+V2dZsNZX/TJtejunvSgSDCEqgJhIQ5vBVg==}
+ '@angular/platform-browser@19.2.20':
+ resolution: {integrity: sha512-O9ZoQKILPC1T2c64OASS75XlOLBxY81m5AAgsBKhwiFWq+V28RsO0cnwpi1YSh/z4ryH8Fe7IUFz8jGrsJi3hQ==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
- '@angular/animations': 19.2.19
- '@angular/common': 19.2.19
- '@angular/core': 19.2.19
+ '@angular/animations': 19.2.20
+ '@angular/common': 19.2.20
+ '@angular/core': 19.2.20
peerDependenciesMeta:
'@angular/animations':
optional: true
- '@angular/router@19.2.19':
- resolution: {integrity: sha512-zh40ihKgYOM5pjgUOLlUKdWYsGgEj7MQHgzdV1E9Zz6LBrQTp/PGS/UdCQn88H6KAshR0uXrkc/vP+tnB2jqdg==}
+ '@angular/router@19.2.20':
+ resolution: {integrity: sha512-y0fyKycxJHr82kxXKE50Vac5hPn5Kx3gw9CfqyEuwJ9VQzEixDljU+chrQK4Wods14jJn9Tt2ncNPGH1rLya3Q==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
- '@angular/common': 19.2.19
- '@angular/core': 19.2.19
- '@angular/platform-browser': 19.2.19
+ '@angular/common': 19.2.20
+ '@angular/core': 19.2.20
+ '@angular/platform-browser': 19.2.20
rxjs: ^6.5.3 || ^7.4.0
'@asamuzakjp/css-color@4.0.5':
@@ -6587,8 +6587,8 @@ packages:
resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==}
engines: {node: ^4.5.0 || >= 5.9}
- baseline-browser-mapping@2.10.0:
- resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==}
+ baseline-browser-mapping@2.10.9:
+ resolution: {integrity: sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -6840,8 +6840,8 @@ packages:
caniuse-lite@1.0.30001748:
resolution: {integrity: sha512-5P5UgAr0+aBmNiplks08JLw+AW/XG/SurlgZLgB1dDLfAw7EfRGxIwzPHxdSCGY/BTKDqIVyJL87cCN6s0ZR0w==}
- caniuse-lite@1.0.30001776:
- resolution: {integrity: sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw==}
+ caniuse-lite@1.0.30001780:
+ resolution: {integrity: sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==}
case-sensitive-paths-webpack-plugin@2.4.0:
resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==}
@@ -8075,8 +8075,8 @@ packages:
electron-to-chromium@1.5.232:
resolution: {integrity: sha512-ENirSe7wf8WzyPCibqKUG1Cg43cPaxH4wRR7AJsX7MCABCHBIOFqvaYODSLKUuZdraxUTHRE/0A2Aq8BYKEHOg==}
- electron-to-chromium@1.5.307:
- resolution: {integrity: sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==}
+ electron-to-chromium@1.5.321:
+ resolution: {integrity: sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==}
electron-to-chromium@1.5.67:
resolution: {integrity: sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==}
@@ -8138,8 +8138,8 @@ packages:
resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
engines: {node: '>=10.13.0'}
- enhanced-resolve@5.20.0:
- resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==}
+ enhanced-resolve@5.20.1:
+ resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==}
engines: {node: '>=10.13.0'}
enquirer@2.3.6:
@@ -8948,16 +8948,16 @@ packages:
glob@7.1.6:
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
- deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
+ deprecated: Glob versions prior to v9 are no longer supported
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
+ deprecated: Glob versions prior to v9 are no longer supported
glob@8.1.0:
resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
engines: {node: '>=12'}
- deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
+ deprecated: Glob versions prior to v9 are no longer supported
glob@9.3.5:
resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==}
@@ -13389,8 +13389,8 @@ packages:
uglify-js:
optional: true
- terser-webpack-plugin@5.3.17:
- resolution: {integrity: sha512-YR7PtUp6GMU91BgSJmlaX/rS2lGDbAF7D+Wtq7hRO+MiljNmodYvqslzCFiYVAgW+Qoaaia/QUIP4lGXufjdZw==}
+ terser-webpack-plugin@5.4.0:
+ resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==}
engines: {node: '>= 10.13.0'}
peerDependencies:
'@swc/core': '*'
@@ -13420,8 +13420,8 @@ packages:
engines: {node: '>=10'}
hasBin: true
- terser@5.46.0:
- resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==}
+ terser@5.46.1:
+ resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==}
engines: {node: '>=10'}
hasBin: true
@@ -14773,14 +14773,14 @@ snapshots:
transitivePeerDependencies:
- chokidar
- '@angular-devkit/build-angular@19.2.17(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(@angular/compiler@19.2.19)(@types/node@22.13.8)(chokidar@4.0.1)(html-webpack-plugin@5.6.0(webpack@5.91.0))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(jiti@1.21.0)(karma@6.4.3)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(protractor@7.0.0)(stylus@0.57.0)(typescript@5.5.4)(vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))(yaml@2.8.1)':
+ '@angular-devkit/build-angular@19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@22.13.8)(chokidar@4.0.1)(html-webpack-plugin@5.6.0(webpack@5.91.0))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(jiti@1.21.0)(karma@6.4.3)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(protractor@7.0.0)(stylus@0.57.0)(typescript@5.5.4)(vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))(yaml@2.8.1)':
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1902.17(chokidar@4.0.1)
'@angular-devkit/build-webpack': 0.1902.17(chokidar@4.0.1)(webpack-dev-server@5.2.2(webpack@5.91.0))(webpack@5.98.0(esbuild@0.25.4))
'@angular-devkit/core': 19.2.17(chokidar@4.0.1)
- '@angular/build': 19.2.17(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(@angular/compiler@19.2.19)(@types/node@22.13.8)(chokidar@4.0.1)(jiti@1.21.0)(karma@6.4.3)(less@4.2.2)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(postcss@8.5.2)(stylus@0.57.0)(terser@5.39.0)(typescript@5.5.4)(yaml@2.8.1)
- '@angular/compiler-cli': 19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4)
+ '@angular/build': 19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@22.13.8)(chokidar@4.0.1)(jiti@1.21.0)(karma@6.4.3)(less@4.2.2)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(postcss@8.5.2)(stylus@0.57.0)(terser@5.39.0)(typescript@5.5.4)(yaml@2.8.1)
+ '@angular/compiler-cli': 19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4)
'@babel/core': 7.26.10
'@babel/generator': 7.26.10
'@babel/helper-annotate-as-pure': 7.25.9
@@ -14791,7 +14791,7 @@ snapshots:
'@babel/preset-env': 7.26.9(@babel/core@7.26.10)
'@babel/runtime': 7.26.10
'@discoveryjs/json-ext': 0.6.3
- '@ngtools/webpack': 19.2.17(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.98.0(esbuild@0.25.4))
+ '@ngtools/webpack': 19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.98.0(esbuild@0.25.4))
'@vitejs/plugin-basic-ssl': 1.2.0(vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))
ansi-colors: 4.1.3
autoprefixer: 10.4.20(postcss@8.5.2)
@@ -14837,7 +14837,7 @@ snapshots:
jest: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
jest-environment-jsdom: 29.7.0
karma: 6.4.3
- ng-packagr: 19.2.2(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4)
+ ng-packagr: 19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4)
protractor: 7.0.0
transitivePeerDependencies:
- '@angular/compiler'
@@ -14966,18 +14966,18 @@ snapshots:
eslint: 8.57.0
typescript: 5.5.4
- '@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))':
+ '@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))':
dependencies:
- '@angular/common': 19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
- '@angular/core': 19.2.19(rxjs@6.6.7)(zone.js@0.15.1)
+ '@angular/common': 19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
+ '@angular/core': 19.2.20(rxjs@6.6.7)(zone.js@0.15.1)
tslib: 2.6.3
- '@angular/build@19.2.17(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(@angular/compiler@19.2.19)(@types/node@22.13.8)(chokidar@4.0.1)(jiti@1.21.0)(karma@6.4.3)(less@4.2.2)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(postcss@8.5.2)(stylus@0.57.0)(terser@5.39.0)(typescript@5.5.4)(yaml@2.8.1)':
+ '@angular/build@19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@22.13.8)(chokidar@4.0.1)(jiti@1.21.0)(karma@6.4.3)(less@4.2.2)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(postcss@8.5.2)(stylus@0.57.0)(terser@5.39.0)(typescript@5.5.4)(yaml@2.8.1)':
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1902.17(chokidar@4.0.1)
- '@angular/compiler': 19.2.19
- '@angular/compiler-cli': 19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4)
+ '@angular/compiler': 19.2.20
+ '@angular/compiler-cli': 19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4)
'@babel/core': 7.26.10
'@babel/helper-annotate-as-pure': 7.25.9
'@babel/helper-split-export-declaration': 7.24.7
@@ -15007,7 +15007,7 @@ snapshots:
karma: 6.4.3
less: 4.2.2
lmdb: 3.2.6
- ng-packagr: 19.2.2(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4)
+ ng-packagr: 19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4)
postcss: 8.5.2
transitivePeerDependencies:
- '@types/node'
@@ -15022,10 +15022,10 @@ snapshots:
- tsx
- yaml
- '@angular/cdk@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)':
+ '@angular/cdk@19.2.19(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)':
dependencies:
- '@angular/common': 19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
- '@angular/core': 19.2.19(rxjs@6.6.7)(zone.js@0.15.1)
+ '@angular/common': 19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
+ '@angular/core': 19.2.20(rxjs@6.6.7)(zone.js@0.15.1)
parse5: 7.1.2
rxjs: 6.6.7
tslib: 2.6.3
@@ -15054,15 +15054,15 @@ snapshots:
- chokidar
- supports-color
- '@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)':
+ '@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)':
dependencies:
- '@angular/core': 19.2.19(rxjs@6.6.7)(zone.js@0.15.1)
+ '@angular/core': 19.2.20(rxjs@6.6.7)(zone.js@0.15.1)
rxjs: 6.6.7
tslib: 2.6.3
- '@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4)':
+ '@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4)':
dependencies:
- '@angular/compiler': 19.2.19
+ '@angular/compiler': 19.2.20
'@babel/core': 7.26.9
'@jridgewell/sourcemap-codec': 1.5.0
chokidar: 4.0.1
@@ -15075,55 +15075,55 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@angular/compiler@19.2.19':
+ '@angular/compiler@19.2.20':
dependencies:
tslib: 2.6.3
- '@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)':
+ '@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)':
dependencies:
rxjs: 6.6.7
tslib: 2.6.3
zone.js: 0.15.1
- '@angular/forms@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)':
+ '@angular/forms@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)':
dependencies:
- '@angular/common': 19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
- '@angular/core': 19.2.19(rxjs@6.6.7)(zone.js@0.15.1)
- '@angular/platform-browser': 19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))
+ '@angular/common': 19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
+ '@angular/core': 19.2.20(rxjs@6.6.7)(zone.js@0.15.1)
+ '@angular/platform-browser': 19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))
rxjs: 6.6.7
tslib: 2.6.3
- '@angular/material@19.2.19(a80ce6d7281a075e658958710ba8f0f7)':
+ '@angular/material@19.2.19(9337b90db4d65d2a1b8e3d03a944b420)':
dependencies:
- '@angular/cdk': 19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
- '@angular/common': 19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
- '@angular/core': 19.2.19(rxjs@6.6.7)(zone.js@0.15.1)
- '@angular/forms': 19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)
- '@angular/platform-browser': 19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))
+ '@angular/cdk': 19.2.19(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
+ '@angular/common': 19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
+ '@angular/core': 19.2.20(rxjs@6.6.7)(zone.js@0.15.1)
+ '@angular/forms': 19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)
+ '@angular/platform-browser': 19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))
rxjs: 6.6.7
tslib: 2.6.3
- '@angular/platform-browser-dynamic@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/compiler@19.2.19)(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))':
+ '@angular/platform-browser-dynamic@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/compiler@19.2.20)(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))':
dependencies:
- '@angular/common': 19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
- '@angular/compiler': 19.2.19
- '@angular/core': 19.2.19(rxjs@6.6.7)(zone.js@0.15.1)
- '@angular/platform-browser': 19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))
+ '@angular/common': 19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
+ '@angular/compiler': 19.2.20
+ '@angular/core': 19.2.20(rxjs@6.6.7)(zone.js@0.15.1)
+ '@angular/platform-browser': 19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))
tslib: 2.6.3
- '@angular/platform-browser@19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))':
+ '@angular/platform-browser@19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))':
dependencies:
- '@angular/common': 19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
- '@angular/core': 19.2.19(rxjs@6.6.7)(zone.js@0.15.1)
+ '@angular/common': 19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
+ '@angular/core': 19.2.20(rxjs@6.6.7)(zone.js@0.15.1)
tslib: 2.6.3
optionalDependencies:
- '@angular/animations': 19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))
+ '@angular/animations': 19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))
- '@angular/router@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)':
+ '@angular/router@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(@angular/platform-browser@19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(rxjs@6.6.7)':
dependencies:
- '@angular/common': 19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
- '@angular/core': 19.2.19(rxjs@6.6.7)(zone.js@0.15.1)
- '@angular/platform-browser': 19.2.19(@angular/animations@19.2.19(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.19(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.19(rxjs@6.6.7)(zone.js@0.15.1))
+ '@angular/common': 19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
+ '@angular/core': 19.2.20(rxjs@6.6.7)(zone.js@0.15.1)
+ '@angular/platform-browser': 19.2.20(@angular/animations@19.2.20(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1)))(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))
rxjs: 6.6.7
tslib: 2.6.3
@@ -18185,15 +18185,15 @@ snapshots:
'@emnapi/runtime': 1.7.1
'@tybys/wasm-util': 0.9.0
- '@ngtools/webpack@19.2.17(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.91.0)':
+ '@ngtools/webpack@19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.91.0)':
dependencies:
- '@angular/compiler-cli': 19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4)
+ '@angular/compiler-cli': 19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4)
typescript: 5.5.4
webpack: 5.91.0(webpack-cli@5.1.4)
- '@ngtools/webpack@19.2.17(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.98.0(esbuild@0.25.4))':
+ '@ngtools/webpack@19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.98.0(esbuild@0.25.4))':
dependencies:
- '@angular/compiler-cli': 19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4)
+ '@angular/compiler-cli': 19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4)
typescript: 5.5.4
webpack: 5.98.0(esbuild@0.25.4)
@@ -19501,12 +19501,12 @@ snapshots:
dependencies:
vite: 6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1)
- '@vitejs/plugin-vue@5.1.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))(vue@3.5.17(typescript@5.5.4))':
+ '@vitejs/plugin-vue@5.1.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))':
dependencies:
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
+ vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
vue: 3.5.17(typescript@5.5.4)
- '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))':
+ '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))':
dependencies:
'@ampproject/remapping': 2.3.0
'@bcoe/v8-coverage': 0.2.3
@@ -19521,7 +19521,7 @@ snapshots:
std-env: 3.7.0
strip-literal: 2.1.0
test-exclude: 6.0.0
- vitest: 1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
+ vitest: 1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
transitivePeerDependencies:
- supports-color
@@ -21008,7 +21008,7 @@ snapshots:
base64id@2.0.0: {}
- baseline-browser-mapping@2.10.0: {}
+ baseline-browser-mapping@2.10.9: {}
baseline-browser-mapping@2.8.12: {}
@@ -21209,9 +21209,9 @@ snapshots:
browserslist@4.28.1:
dependencies:
- baseline-browser-mapping: 2.10.0
- caniuse-lite: 1.0.30001776
- electron-to-chromium: 1.5.307
+ baseline-browser-mapping: 2.10.9
+ caniuse-lite: 1.0.30001780
+ electron-to-chromium: 1.5.321
node-releases: 2.0.36
update-browserslist-db: 1.2.3(browserslist@4.28.1)
@@ -21360,7 +21360,7 @@ snapshots:
caniuse-lite@1.0.30001748: {}
- caniuse-lite@1.0.30001776: {}
+ caniuse-lite@1.0.30001780: {}
case-sensitive-paths-webpack-plugin@2.4.0: {}
@@ -22592,7 +22592,7 @@ snapshots:
electron-to-chromium@1.5.232: {}
- electron-to-chromium@1.5.307: {}
+ electron-to-chromium@1.5.321: {}
electron-to-chromium@1.5.67: {}
@@ -22662,7 +22662,7 @@ snapshots:
graceful-fs: 4.2.11
tapable: 2.2.1
- enhanced-resolve@5.20.0:
+ enhanced-resolve@5.20.1:
dependencies:
graceful-fs: 4.2.11
tapable: 2.3.0
@@ -26372,9 +26372,9 @@ snapshots:
neo-async@2.6.2: {}
- ng-packagr@19.2.2(@angular/compiler-cli@19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4):
+ ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4):
dependencies:
- '@angular/compiler-cli': 19.2.19(@angular/compiler@19.2.19)(typescript@5.5.4)
+ '@angular/compiler-cli': 19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4)
'@rollup/plugin-json': 6.1.0(rollup@4.52.4)
'@rollup/wasm-node': 4.52.4
ajv: 8.17.1
@@ -29398,12 +29398,12 @@ snapshots:
optionalDependencies:
esbuild: 0.25.4
- terser-webpack-plugin@5.3.17(webpack@5.105.4):
+ terser-webpack-plugin@5.4.0(webpack@5.105.4):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
schema-utils: 4.3.3
- terser: 5.46.0
+ terser: 5.46.1
webpack: 5.105.4
terser@5.31.0:
@@ -29427,7 +29427,7 @@ snapshots:
commander: 2.20.3
source-map-support: 0.5.21
- terser@5.46.0:
+ terser@5.46.1:
dependencies:
'@jridgewell/source-map': 0.3.11
acorn: 8.16.0
@@ -29985,13 +29985,13 @@ snapshots:
remove-trailing-separator: 1.1.0
replace-ext: 1.0.1
- vite-node@1.6.0(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0):
+ vite-node@1.6.0(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1):
dependencies:
cac: 6.7.14
debug: 4.3.7
pathe: 1.1.2
picocolors: 1.1.1
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
+ vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
transitivePeerDependencies:
- '@types/node'
- less
@@ -30003,7 +30003,7 @@ snapshots:
- supports-color
- terser
- vite-plugin-dts@3.9.1(@types/node@22.13.8)(rollup@4.59.0)(typescript@5.5.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)):
+ vite-plugin-dts@3.9.1(@types/node@22.13.8)(rollup@4.59.0)(typescript@5.5.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)):
dependencies:
'@microsoft/api-extractor': 7.43.0(@types/node@22.13.8)
'@rollup/pluginutils': 5.1.0(rollup@4.59.0)
@@ -30014,41 +30014,41 @@ snapshots:
typescript: 5.5.4
vue-tsc: 1.8.27(typescript@5.5.4)
optionalDependencies:
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
+ vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
- vite-plugin-node-polyfills@0.21.0(rollup@4.59.0)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)):
+ vite-plugin-node-polyfills@0.21.0(rollup@4.59.0)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)):
dependencies:
'@rollup/plugin-inject': 5.0.5(rollup@4.59.0)
node-stdlib-browser: 1.2.0
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
+ vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
transitivePeerDependencies:
- rollup
- vite-plugin-static-copy@2.3.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)):
+ vite-plugin-static-copy@2.3.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)):
dependencies:
chokidar: 3.6.0
fast-glob: 3.3.3
fs-extra: 11.3.2
p-map: 7.0.4
picocolors: 1.1.1
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
+ vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
- vite-plugin-vuetify@2.1.1(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0):
+ vite-plugin-vuetify@2.1.1(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0):
dependencies:
'@vuetify/loader-shared': 2.1.0(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0)
debug: 4.3.7
upath: 2.0.1
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
+ vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
vue: 3.5.17(typescript@5.5.4)
vuetify: 3.9.0(typescript@5.5.4)(vite-plugin-vuetify@2.1.1)(vue@3.5.17(typescript@5.5.4))
transitivePeerDependencies:
- supports-color
- vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0):
+ vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1):
dependencies:
esbuild: 0.21.5
postcss: 8.5.6
@@ -30059,7 +30059,7 @@ snapshots:
less: 4.2.2
sass: 1.93.2
stylus: 0.57.0
- terser: 5.46.0
+ terser: 5.46.1
vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1):
dependencies:
@@ -30079,7 +30079,7 @@ snapshots:
terser: 5.39.0
yaml: 2.8.1
- vitest@1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0):
+ vitest@1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1):
dependencies:
'@vitest/expect': 1.6.0
'@vitest/runner': 1.6.0
@@ -30098,8 +30098,8 @@ snapshots:
strip-literal: 2.1.0
tinybench: 2.9.0
tinypool: 0.8.4
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
- vite-node: 1.6.0(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0)
+ vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ vite-node: 1.6.0(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 22.13.8
@@ -30265,7 +30265,7 @@ snapshots:
vue: 3.5.17(typescript@5.5.4)
optionalDependencies:
typescript: 5.5.4
- vite-plugin-vuetify: 2.1.1(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.0))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0)
+ vite-plugin-vuetify: 2.1.1(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0)
w3c-hr-time@1.0.2:
dependencies:
@@ -30567,7 +30567,7 @@ snapshots:
acorn-import-phases: 1.0.4(acorn@8.16.0)
browserslist: 4.28.1
chrome-trace-event: 1.0.4
- enhanced-resolve: 5.20.0
+ enhanced-resolve: 5.20.1
es-module-lexer: 2.0.0
eslint-scope: 5.1.1
events: 3.3.0
@@ -30579,7 +30579,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.0
- terser-webpack-plugin: 5.3.17(webpack@5.105.4)
+ terser-webpack-plugin: 5.4.0(webpack@5.105.4)
watchpack: 2.5.1
webpack-sources: 3.3.4
transitivePeerDependencies:
From 2b52d782cd62e99bdac2d4e2860f285836049e61 Mon Sep 17 00:00:00 2001
From: Lucas Koehler
Date: Tue, 10 Mar 2026 12:21:19 +0100
Subject: [PATCH 19/29] vue-vanilla: Fix OneOfRenderer.vue not clearing some
primitive values
Replace isEmpty check with check against undefined because isEmpty always returns true
for boolean values, 0, empty strings and objects without props.
This lead to errors when switching from any of these to an array and trying to add
elements there.
Also adds unit tests for this.
fixes #2506
---
.../vue-vanilla/src/complex/OneOfRenderer.vue | 3 +-
.../tests/unit/complex/OneOfRenderer.spec.ts | 126 ++++++++++++++++++
packages/vue-vanilla/tests/unit/setup.ts | 14 ++
3 files changed, 141 insertions(+), 2 deletions(-)
create mode 100644 packages/vue-vanilla/tests/unit/setup.ts
diff --git a/packages/vue-vanilla/src/complex/OneOfRenderer.vue b/packages/vue-vanilla/src/complex/OneOfRenderer.vue
index b676662bb..4a0379f2b 100644
--- a/packages/vue-vanilla/src/complex/OneOfRenderer.vue
+++ b/packages/vue-vanilla/src/complex/OneOfRenderer.vue
@@ -88,7 +88,6 @@ import {
RendererProps,
useJsonFormsOneOfControl,
} from '@jsonforms/vue';
-import isEmpty from 'lodash/isEmpty';
import { defineComponent, inject, nextTick, ref } from 'vue';
import { useVanillaControl } from '../util';
import { ControlWrapper } from '../controls';
@@ -158,7 +157,7 @@ const controlRenderer = defineComponent({
const target = event.target as any;
this.selectIndex = target.value;
- if (this.control.enabled && !isEmpty(this.control.data)) {
+ if (this.control.enabled && this.control.data !== undefined) {
this.showDialog();
nextTick(() => {
this.newSelectedIndex = this.selectIndex;
diff --git a/packages/vue-vanilla/tests/unit/complex/OneOfRenderer.spec.ts b/packages/vue-vanilla/tests/unit/complex/OneOfRenderer.spec.ts
index d1bb27878..045a0f537 100644
--- a/packages/vue-vanilla/tests/unit/complex/OneOfRenderer.spec.ts
+++ b/packages/vue-vanilla/tests/unit/complex/OneOfRenderer.spec.ts
@@ -1,6 +1,43 @@
import { expect } from 'chai';
+import '../setup';
import { mountJsonForms } from '../util';
+const schemaWithVariousTypes = {
+ type: 'object',
+ properties: {
+ oneOfProp: {
+ title: 'Boolean or Array',
+ oneOf: [
+ {
+ title: 'Boolean',
+ type: 'boolean',
+ },
+ {
+ title: 'Array',
+ type: 'array',
+ items: {
+ type: 'string',
+ },
+ },
+ {
+ title: 'Object',
+ type: 'object',
+ properties: {
+ name: {
+ type: 'string',
+ },
+ },
+ },
+ ],
+ },
+ },
+};
+
+const uischemaWithVariousTypes = {
+ type: 'Control',
+ scope: '#/properties/oneOfProp',
+};
+
const schema = {
title: 'My Object',
oneOf: [
@@ -34,6 +71,95 @@ const uischema = {
};
describe('OneOfRenderer.vue', () => {
+ it('shows confirmation dialog when switching from boolean true to array', async () => {
+ const wrapper = mountJsonForms(
+ { oneOfProp: true },
+ schemaWithVariousTypes,
+ uischemaWithVariousTypes
+ );
+ const oneOfSelect = wrapper.find('select');
+ const dialog = wrapper.find('dialog');
+
+ expect(oneOfSelect.element.value).to.equal('0');
+ expect(dialog.element.open).to.be.false;
+
+ await oneOfSelect.setValue('1');
+
+ expect(dialog.element.open).to.be.true;
+ });
+
+ it('shows confirmation dialog when switching from boolean false to array', async () => {
+ const wrapper = mountJsonForms(
+ { oneOfProp: false },
+ schemaWithVariousTypes,
+ uischemaWithVariousTypes
+ );
+ const oneOfSelect = wrapper.find('select');
+ const dialog = wrapper.find('dialog');
+
+ expect(oneOfSelect.element.value).to.equal('0');
+ expect(dialog.element.open).to.be.false;
+
+ await oneOfSelect.setValue('1');
+
+ expect(dialog.element.open).to.be.true;
+ });
+
+ it('allows adding items after switching from boolean to array', async () => {
+ const wrapper = mountJsonForms(
+ { oneOfProp: true },
+ schemaWithVariousTypes,
+ uischemaWithVariousTypes
+ );
+ const oneOfSelect = wrapper.find('select');
+
+ await oneOfSelect.setValue('1');
+
+ const confirmButton = wrapper.find('dialog button:last-child');
+ await confirmButton.trigger('click');
+
+ const addButton = wrapper.find('.array-list-add');
+ await addButton.trigger('click');
+
+ expect(wrapper.vm.data).to.deep.equal({ oneOfProp: [''] });
+ });
+
+ it('does not show confirmation dialog when switching from undefined to array', async () => {
+ const wrapper = mountJsonForms(
+ {},
+ schemaWithVariousTypes,
+ uischemaWithVariousTypes
+ );
+ const oneOfSelect = wrapper.find('select');
+ const dialog = wrapper.find('dialog');
+
+ await oneOfSelect.setValue('1');
+
+ expect(dialog.element.open).to.be.false;
+ expect(wrapper.vm.data).to.deep.equal({});
+ });
+
+ it('allows adding items after switching from object to array', async () => {
+ const wrapper = mountJsonForms(
+ { oneOfProp: { name: 'test' } },
+ schemaWithVariousTypes,
+ uischemaWithVariousTypes
+ );
+ const oneOfSelect = wrapper.find('select');
+
+ expect(oneOfSelect.element.value).to.equal('2');
+
+ await oneOfSelect.setValue('1');
+
+ const confirmButton = wrapper.find('dialog button:last-child');
+ await confirmButton.trigger('click');
+
+ const addButton = wrapper.find('.array-list-add');
+ await addButton.trigger('click');
+
+ expect(wrapper.vm.data).to.deep.equal({ oneOfProp: [''] });
+ });
+
it('render has a class', () => {
const wrapper = mountJsonForms({ variant: 'b', b: 'b' }, schema, uischema);
expect(wrapper.find('div.one-of').exists()).to.be.true;
diff --git a/packages/vue-vanilla/tests/unit/setup.ts b/packages/vue-vanilla/tests/unit/setup.ts
new file mode 100644
index 000000000..be8bced71
--- /dev/null
+++ b/packages/vue-vanilla/tests/unit/setup.ts
@@ -0,0 +1,14 @@
+// JSDOM doesn't support HTMLDialogElement.showModal() and close(), so we need to polyfill/mock them
+// Also see https://github.com/jsdom/jsdom/issues/3294
+if (typeof HTMLDialogElement !== 'undefined') {
+ HTMLDialogElement.prototype.showModal =
+ HTMLDialogElement.prototype.showModal ||
+ function (this: HTMLDialogElement) {
+ this.setAttribute('open', '');
+ };
+ HTMLDialogElement.prototype.close =
+ HTMLDialogElement.prototype.close ||
+ function (this: HTMLDialogElement) {
+ this.removeAttribute('open');
+ };
+}
From 15831c319bfc591665bba8c9da8abd5a5d779e93 Mon Sep 17 00:00:00 2001
From: Lucas Koehler
Date: Tue, 10 Mar 2026 12:22:53 +0100
Subject: [PATCH 20/29] vue-vuetify: Fix oneOf renderers not clearing some
primitive values
Replace isEmpty check with check against undefined because isEmpty always returns true
for boolean values, 0, empty strings and objects without props.
This could lead to errors when switching from any of these to an array and trying to add
elements there.
---
packages/vue-vuetify/src/complex/OneOfRenderer.vue | 5 ++---
packages/vue-vuetify/src/complex/OneOfTabRenderer.vue | 3 +--
2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/packages/vue-vuetify/src/complex/OneOfRenderer.vue b/packages/vue-vuetify/src/complex/OneOfRenderer.vue
index e687ffc30..8ec2d19ce 100644
--- a/packages/vue-vuetify/src/complex/OneOfRenderer.vue
+++ b/packages/vue-vuetify/src/complex/OneOfRenderer.vue
@@ -90,7 +90,6 @@ import {
type RendererProps,
useJsonFormsOneOfControl,
} from '@jsonforms/vue';
-import isEmpty from 'lodash/isEmpty';
import { defineComponent, ref } from 'vue';
import {
VBtn,
@@ -138,7 +137,7 @@ const controlRenderer = defineComponent({
control.indexOfFittingSchema != null &&
control.indexOfFittingSchema != undefined // use the fitting schema if found
? control.indexOfFittingSchema
- : !isEmpty(input.control.value.data)
+ : input.control.value.data !== undefined
? 0 // uses the first schema and report errors if not empty
: null,
);
@@ -176,7 +175,7 @@ const controlRenderer = defineComponent({
handleSelectChange(selectIndex: number | null): void {
this.newSelectedIndex = selectIndex;
- if (isEmpty(this.control.data)) {
+ if (this.control.data === undefined) {
this.openNewTab(this.newSelectedIndex);
} else {
this.dialog = true;
diff --git a/packages/vue-vuetify/src/complex/OneOfTabRenderer.vue b/packages/vue-vuetify/src/complex/OneOfTabRenderer.vue
index cd9d88489..083a63802 100644
--- a/packages/vue-vuetify/src/complex/OneOfTabRenderer.vue
+++ b/packages/vue-vuetify/src/complex/OneOfTabRenderer.vue
@@ -76,7 +76,6 @@ import {
type RendererProps,
useJsonFormsOneOfControl,
} from '@jsonforms/vue';
-import isEmpty from 'lodash/isEmpty';
import { defineComponent, ref } from 'vue';
import {
VBtn,
@@ -156,7 +155,7 @@ const controlRenderer = defineComponent({
// revert back to the orginal value until the dialog is done
this.selectIndex = this.selectedIndex;
- if (isEmpty(this.control.data)) {
+ if (this.control.data === undefined) {
this.openNewTab(this.newSelectedIndex);
} else {
this.dialog = true;
From 574e2d15ad079039a17886e39eea3d51e9e68880 Mon Sep 17 00:00:00 2001
From: Lucas Koehler
Date: Tue, 10 Mar 2026 12:21:56 +0100
Subject: [PATCH 21/29] react-material: Fix oneOf renderer not clearing some
primitive values
Replace isEmpty check with check against undefined because isEmpty always returns true
for boolean values, 0, empty strings and objects without props.
This could lead to errors when switching from any of these to an array and trying to add
elements there.
---
.../material-renderers/src/complex/MaterialOneOfRenderer.tsx | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/packages/material-renderers/src/complex/MaterialOneOfRenderer.tsx b/packages/material-renderers/src/complex/MaterialOneOfRenderer.tsx
index ac6aad523..4dd8ffd75 100644
--- a/packages/material-renderers/src/complex/MaterialOneOfRenderer.tsx
+++ b/packages/material-renderers/src/complex/MaterialOneOfRenderer.tsx
@@ -23,7 +23,6 @@
THE SOFTWARE.
*/
import React, { useCallback, useMemo, useState } from 'react';
-import isEmpty from 'lodash/isEmpty';
import { TabSwitchConfirmDialog } from './TabSwitchConfirmDialog';
@@ -98,7 +97,7 @@ export const MaterialOneOfRenderer = ({
const handleTabChange = useCallback(
(_event: any, newOneOfIndex: number) => {
setNewSelectedIndex(newOneOfIndex);
- if (isEmpty(data)) {
+ if (data === undefined) {
openNewTab(newOneOfIndex);
} else {
setConfirmDialogOpen(true);
From 4c27a535ccef8fcf2a2484eacec7a3d008550f12 Mon Sep 17 00:00:00 2001
From: Lucas Koehler
Date: Tue, 7 Apr 2026 10:17:12 +0200
Subject: [PATCH 22/29] fix(core): Fix validation errors for nested props of
same name (#2531)
- Remove obsolete safeguard against adding a property name a second time to a validation error's control path.
- Add comment in errors.ts to clarify behavior
- Add unit tests for getControlPath and errorAt
- Add example for nested required property of same name
fixes #2521
---
packages/core/src/util/errors.ts | 13 +-
packages/core/test/reducers/core.test.ts | 429 ++++++++++++++++++
.../examples/validation-nested-same-name.ts | 69 +++
packages/examples/src/index.ts | 2 +
4 files changed, 511 insertions(+), 2 deletions(-)
create mode 100644 packages/examples/src/examples/validation-nested-same-name.ts
diff --git a/packages/core/src/util/errors.ts b/packages/core/src/util/errors.ts
index 42cd384b8..e7fa68fe4 100644
--- a/packages/core/src/util/errors.ts
+++ b/packages/core/src/util/errors.ts
@@ -30,6 +30,15 @@ import { isOneOfEnumSchema } from './schema';
import filter from 'lodash/filter';
import isEqual from 'lodash/isEqual';
+/**
+ * Checks for an additionally specified property that the error relates to.
+ * This may be added to an error's instancePath to show it at the violating property's control.
+ * For example, for required property errors, the instancePath points to the object containing the required property.
+ * The missing property's name is specified in the error's params.missingProperty field and returned by this function.
+ *
+ * @param error The ErrorObject to check for an additionally specified property that the error relates to
+ * @returns The invalid property name if present, otherwise undefined
+ */
const getInvalidProperty = (error: ErrorObject): string | undefined => {
switch (error.keyword) {
case 'required':
@@ -51,12 +60,12 @@ export const getControlPath = (error: ErrorObject) => {
controlPath = controlPath.replace(/\//g, '.');
const invalidProperty = getInvalidProperty(error);
- if (invalidProperty !== undefined && !controlPath.endsWith(invalidProperty)) {
+ if (invalidProperty !== undefined) {
controlPath = `${controlPath}.${invalidProperty}`;
}
// remove '.' chars at the beginning of paths
- controlPath = controlPath.replace(/^./, '');
+ controlPath = controlPath.replace(/^\./, '');
// decode JSON Pointer escape sequences
controlPath = decode(controlPath);
diff --git a/packages/core/test/reducers/core.test.ts b/packages/core/test/reducers/core.test.ts
index c6e70dbaf..df5e9a51e 100644
--- a/packages/core/test/reducers/core.test.ts
+++ b/packages/core/test/reducers/core.test.ts
@@ -1870,3 +1870,432 @@ test('core reducer helpers - getControlPath - decodes JSON Pointer escape sequen
const controlPath = getControlPath(errorObject);
t.is(controlPath, '~group./name');
});
+
+test('errorAt filters required with nested same-named properties', (t) => {
+ const ajv = createAjv();
+ const schema: JsonSchema = {
+ type: 'object',
+ properties: {
+ name: {
+ type: 'object',
+ properties: {
+ name: {
+ type: 'string',
+ },
+ },
+ required: ['name'],
+ },
+ },
+ };
+ const data = { name: {} };
+ const v = ajv.compile(schema);
+ const errors = validate(v, data);
+
+ const state: JsonFormsCore = {
+ data,
+ schema,
+ uischema: undefined,
+ errors,
+ };
+ const filtered = errorAt(
+ 'name.name',
+ (schema.properties.name as JsonSchema).properties.name
+ )(state);
+ t.is(filtered.length, 1);
+ t.is(filtered[0].keyword, 'required');
+ t.is(filtered[0].params.missingProperty, 'name');
+});
+
+test('errorAt filters triple-nested same-named properties', (t) => {
+ const ajv = createAjv();
+ const schema: JsonSchema = {
+ type: 'object',
+ properties: {
+ foo: {
+ type: 'object',
+ properties: {
+ foo: {
+ type: 'object',
+ properties: {
+ foo: {
+ type: 'string',
+ },
+ },
+ required: ['foo'],
+ },
+ },
+ },
+ },
+ };
+ const data = { foo: { foo: {} } };
+ const v = ajv.compile(schema);
+ const errors = validate(v, data);
+
+ const state: JsonFormsCore = {
+ data,
+ schema,
+ uischema: undefined,
+ errors,
+ };
+ const filtered = errorAt(
+ 'foo.foo.foo',
+ ((schema.properties.foo as JsonSchema).properties.foo as JsonSchema)
+ .properties.foo
+ )(state);
+ t.is(filtered.length, 1);
+ t.is(filtered[0].keyword, 'required');
+ t.is(filtered[0].params.missingProperty, 'foo');
+});
+
+test('errorAt filters parent-child with different names', (t) => {
+ const ajv = createAjv();
+ const schema: JsonSchema = {
+ type: 'object',
+ properties: {
+ parent: {
+ type: 'object',
+ properties: {
+ child: {
+ type: 'string',
+ },
+ },
+ required: ['child'],
+ },
+ },
+ };
+ const data = { parent: {} };
+ const v = ajv.compile(schema);
+ const errors = validate(v, data);
+
+ const state: JsonFormsCore = {
+ data,
+ schema,
+ uischema: undefined,
+ errors,
+ };
+ const filtered = errorAt(
+ 'parent.child',
+ (schema.properties.parent as JsonSchema).properties.child
+ )(state);
+ t.is(filtered.length, 1);
+ t.is(filtered[0].keyword, 'required');
+ t.is(filtered[0].params.missingProperty, 'child');
+});
+
+test('errorAt filters substring property names edge case', (t) => {
+ const ajv = createAjv();
+ const schema: JsonSchema = {
+ type: 'object',
+ properties: {
+ username: {
+ type: 'object',
+ properties: {
+ name: {
+ type: 'string',
+ },
+ },
+ required: ['name'],
+ },
+ },
+ };
+ const data = { username: {} };
+ const v = ajv.compile(schema);
+ const errors = validate(v, data);
+
+ const state: JsonFormsCore = {
+ data,
+ schema,
+ uischema: undefined,
+ errors,
+ };
+ const filtered = errorAt(
+ 'username.name',
+ (schema.properties.username as JsonSchema).properties.name
+ )(state);
+ t.is(filtered.length, 1);
+ t.is(filtered[0].keyword, 'required');
+ t.is(filtered[0].params.missingProperty, 'name');
+});
+
+test('errorAt filters root-level required errors', (t) => {
+ const ajv = createAjv();
+ const schema: JsonSchema = {
+ type: 'object',
+ properties: {
+ name: {
+ type: 'string',
+ },
+ age: {
+ type: 'number',
+ },
+ },
+ required: ['name', 'age'],
+ };
+ const data = {};
+ const v = ajv.compile(schema);
+ const errors = validate(v, data);
+
+ const state: JsonFormsCore = {
+ data,
+ schema,
+ uischema: undefined,
+ errors,
+ };
+ const filteredName = errorAt('name', schema.properties.name)(state);
+ t.is(filteredName.length, 1);
+ t.is(filteredName[0].keyword, 'required');
+ t.is(filteredName[0].params.missingProperty, 'name');
+
+ const filteredAge = errorAt('age', schema.properties.age)(state);
+ t.is(filteredAge.length, 1);
+ t.is(filteredAge[0].keyword, 'required');
+ t.is(filteredAge[0].params.missingProperty, 'age');
+});
+
+test('errorAt filters array of objects with nested same-named properties', (t) => {
+ const ajv = createAjv();
+ const schema: JsonSchema = {
+ type: 'object',
+ properties: {
+ items: {
+ type: 'array',
+ items: {
+ type: 'object',
+ properties: {
+ item: {
+ type: 'object',
+ properties: {
+ item: {
+ type: 'string',
+ },
+ },
+ required: ['item'],
+ },
+ },
+ },
+ },
+ },
+ };
+ const data = { items: [{ item: {} }] };
+ const v = ajv.compile(schema);
+ const errors = validate(v, data);
+
+ const state: JsonFormsCore = {
+ data,
+ schema,
+ uischema: undefined,
+ errors,
+ };
+ const filtered = errorAt(
+ 'items.0.item.item',
+ ((schema.properties.items as JsonSchema).items as JsonSchema).properties
+ .item.properties.item
+ )(state);
+ t.is(filtered.length, 1);
+ t.is(filtered[0].keyword, 'required');
+ t.is(filtered[0].params.missingProperty, 'item');
+});
+
+test('errorAt does not match wrong paths', (t) => {
+ const ajv = createAjv();
+ const schema: JsonSchema = {
+ type: 'object',
+ properties: {
+ name: {
+ type: 'object',
+ properties: {
+ name: {
+ type: 'string',
+ },
+ },
+ required: ['name'],
+ },
+ },
+ };
+ const data = { name: {} };
+ const v = ajv.compile(schema);
+ const errors = validate(v, data);
+
+ const state: JsonFormsCore = {
+ data,
+ schema,
+ uischema: undefined,
+ errors,
+ };
+ const filteredWrongPath = errorAt('name', schema.properties.name)(state);
+ t.is(filteredWrongPath.length, 0);
+});
+
+test('errorAt filters multiple required errors with mixed naming', (t) => {
+ const ajv = createAjv();
+ const schema: JsonSchema = {
+ type: 'object',
+ properties: {
+ user: {
+ type: 'object',
+ properties: {
+ user: {
+ type: 'string',
+ },
+ name: {
+ type: 'string',
+ },
+ },
+ required: ['user', 'name'],
+ },
+ },
+ };
+ const data = { user: {} };
+ const v = ajv.compile(schema);
+ const errors = validate(v, data);
+
+ const state: JsonFormsCore = {
+ data,
+ schema,
+ uischema: undefined,
+ errors,
+ };
+ const filteredUser = errorAt(
+ 'user.user',
+ (schema.properties.user as JsonSchema).properties.user
+ )(state);
+ t.is(filteredUser.length, 1);
+ t.is(filteredUser[0].keyword, 'required');
+ t.is(filteredUser[0].params.missingProperty, 'user');
+
+ const filteredName = errorAt(
+ 'user.name',
+ (schema.properties.user as JsonSchema).properties.name
+ )(state);
+ t.is(filteredName.length, 1);
+ t.is(filteredName[0].keyword, 'required');
+ t.is(filteredName[0].params.missingProperty, 'name');
+});
+
+// ============================================================================
+// Additional getControlPath Edge Case Tests
+// ============================================================================
+
+// Dummy path to ensure ErrorObject is valid
+const DUMMY_SCHEMA_PATH = '';
+
+test('getControlPath - root-level required property', (t) => {
+ const errorObject = {
+ instancePath: '',
+ keyword: 'required',
+ params: { missingProperty: 'foo' },
+ schemaPath: DUMMY_SCHEMA_PATH,
+ } as ErrorObject;
+ const controlPath = getControlPath(errorObject);
+ t.is(controlPath, 'foo');
+});
+
+test('getControlPath - nested required property', (t) => {
+ const errorObject = {
+ instancePath: '/parent',
+ keyword: 'required',
+ params: { missingProperty: 'child' },
+ schemaPath: DUMMY_SCHEMA_PATH,
+ } as ErrorObject;
+ const controlPath = getControlPath(errorObject);
+ t.is(controlPath, 'parent.child');
+});
+
+test('getControlPath - same-named nested properties in different parent', (t) => {
+ const errorObject = {
+ instancePath: '/parent/child',
+ keyword: 'required',
+ params: { missingProperty: 'child' },
+ schemaPath: DUMMY_SCHEMA_PATH,
+ } as ErrorObject;
+ const controlPath = getControlPath(errorObject);
+ t.is(controlPath, 'parent.child.child');
+});
+
+test('getControlPath - same-named nested properties (name -> name.name)', (t) => {
+ const errorObject = {
+ instancePath: '/name',
+ keyword: 'required',
+ params: { missingProperty: 'name' },
+ schemaPath: DUMMY_SCHEMA_PATH,
+ } as ErrorObject;
+ const controlPath = getControlPath(errorObject);
+ t.is(controlPath, 'name.name');
+});
+
+test('getControlPath - deeply nested same-named properties (foo.foo -> foo.foo.foo)', (t) => {
+ const errorObject = {
+ instancePath: '/foo/foo',
+ keyword: 'required',
+ params: { missingProperty: 'foo' },
+ schemaPath: DUMMY_SCHEMA_PATH,
+ } as ErrorObject;
+ const controlPath = getControlPath(errorObject);
+ t.is(controlPath, 'foo.foo.foo');
+});
+
+test('getControlPath - additionalProperties keyword handling', (t) => {
+ const errorObject = {
+ instancePath: '/parent',
+ keyword: 'additionalProperties',
+ params: { additionalProperty: 'extra' },
+ schemaPath: DUMMY_SCHEMA_PATH,
+ } as ErrorObject;
+ const controlPath = getControlPath(errorObject);
+ t.is(controlPath, 'parent.extra');
+});
+
+test('getControlPath - dependencies keyword handling', (t) => {
+ const errorObject = {
+ instancePath: '/parent',
+ keyword: 'dependencies',
+ params: { missingProperty: 'dependent' },
+ schemaPath: DUMMY_SCHEMA_PATH,
+ } as ErrorObject;
+ const controlPath = getControlPath(errorObject);
+ t.is(controlPath, 'parent.dependent');
+});
+
+test('getControlPath - property names as substrings (username.name not confused)', (t) => {
+ const errorObject = {
+ instancePath: '/username',
+ keyword: 'required',
+ params: { missingProperty: 'name' },
+ schemaPath: DUMMY_SCHEMA_PATH,
+ } as ErrorObject;
+ const controlPath = getControlPath(errorObject);
+ t.is(controlPath, 'username.name');
+});
+
+test('getControlPath - array indices in paths', (t) => {
+ const errorObject = {
+ instancePath: '/items/0',
+ keyword: 'required',
+ params: { missingProperty: 'id' },
+ schemaPath: DUMMY_SCHEMA_PATH,
+ } as ErrorObject;
+ const controlPath = getControlPath(errorObject);
+ t.is(controlPath, 'items.0.id');
+});
+
+test('getControlPath - non-required keywords do not append property', (t) => {
+ const errorObject = {
+ instancePath: '/foo',
+ keyword: 'type',
+ params: { type: 'string' },
+ schemaPath: DUMMY_SCHEMA_PATH,
+ } as ErrorObject;
+ const controlPath = getControlPath(errorObject);
+ t.is(controlPath, 'foo');
+});
+
+test('getControlPath - enum keyword does not append property', (t) => {
+ const errorObject = {
+ instancePath: '/status',
+ keyword: 'enum',
+ params: { allowedValues: ['active', 'inactive'] },
+ schemaPath: DUMMY_SCHEMA_PATH,
+ } as ErrorObject;
+ const controlPath = getControlPath(errorObject);
+ t.is(controlPath, 'status');
+});
diff --git a/packages/examples/src/examples/validation-nested-same-name.ts b/packages/examples/src/examples/validation-nested-same-name.ts
new file mode 100644
index 000000000..d35ec762b
--- /dev/null
+++ b/packages/examples/src/examples/validation-nested-same-name.ts
@@ -0,0 +1,69 @@
+/*
+ The MIT License
+
+ Copyright (c) 2026 EclipseSource Munich
+ https://github.com/eclipsesource/jsonforms
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+*/
+import { UISchemaElement } from '@jsonforms/core';
+import { registerExamples } from '../register';
+
+export const schema = {
+ type: 'object',
+ properties: {
+ name: {
+ type: 'object',
+ properties: {
+ name: {
+ type: 'object',
+ properties: {
+ name: {
+ type: 'string',
+ },
+ },
+ required: ['name'],
+ },
+ },
+ required: ['name'],
+ },
+ },
+};
+
+export const uischema: UISchemaElement = {
+ type: 'Control',
+ scope: '#/properties/name/properties/name/properties/name',
+ label: 'Name',
+};
+
+export const data = {
+ name: {
+ name: {},
+ },
+};
+
+registerExamples([
+ {
+ name: 'validation-nested-same-name',
+ label: 'Validation - 3x nested properties with same name',
+ data,
+ schema,
+ uischema,
+ },
+]);
diff --git a/packages/examples/src/index.ts b/packages/examples/src/index.ts
index 34adc0330..f8fdc044d 100644
--- a/packages/examples/src/index.ts
+++ b/packages/examples/src/index.ts
@@ -80,6 +80,7 @@ import * as mixed from './examples/mixed';
import * as mixedObject from './examples/mixed-object';
import * as string from './examples/string';
import * as prependAppendSlots from './examples/prepend-append-slots';
+import * as validationNestedSameName from './examples/validation-nested-same-name';
export * from './register';
export * from './example';
@@ -149,4 +150,5 @@ export {
arrayWithDefaults,
string,
prependAppendSlots,
+ validationNestedSameName,
};
From 207fb1ba6d2c61b69ef2bf771abaea8fc052359a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 7 Apr 2026 16:17:53 +0200
Subject: [PATCH 23/29] deps: bump lodash from 4.17.23 to 4.18.1 (#2564)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)
---
updated-dependencies:
- dependency-name: lodash
dependency-version: 4.18.1
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pnpm-lock.yaml | 170 +++++++++++++++++++++++++------------------------
1 file changed, 88 insertions(+), 82 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2553f8264..2066080e3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -88,7 +88,7 @@ importers:
dependencies:
lodash:
specifier: ^4.17.21
- version: 4.17.23
+ version: 4.18.1
devDependencies:
'@angular-eslint/eslint-plugin':
specifier: ^19.0.0
@@ -173,7 +173,7 @@ importers:
dependencies:
lodash:
specifier: ^4.17.21
- version: 4.17.23
+ version: 4.18.1
devDependencies:
'@angular-devkit/build-angular':
specifier: ^19.0.0
@@ -372,7 +372,7 @@ importers:
version: 2.1.1(ajv@8.18.0)
lodash:
specifier: ^4.17.21
- version: 4.17.23
+ version: 4.18.1
devDependencies:
'@istanbuljs/nyc-config-typescript':
specifier: ^1.0.2
@@ -457,7 +457,7 @@ importers:
version: 4.2.0(ajv@8.18.0)
lodash:
specifier: ^4.17.21
- version: 4.17.23
+ version: 4.18.1
devDependencies:
'@jsonforms/core':
specifier: workspace:*
@@ -548,7 +548,7 @@ importers:
version: 3.0.15
lodash:
specifier: ^4.17.21
- version: 4.17.23
+ version: 4.18.1
react:
specifier: ^17.0.2
version: 17.0.2
@@ -606,7 +606,7 @@ importers:
version: 1.10.7
lodash:
specifier: ^4.17.21
- version: 4.17.23
+ version: 4.18.1
devDependencies:
'@emotion/react':
specifier: ^11.5.0
@@ -757,7 +757,7 @@ importers:
dependencies:
lodash:
specifier: ^4.17.21
- version: 4.17.23
+ version: 4.18.1
devDependencies:
'@jsonforms/core':
specifier: workspace:*
@@ -869,7 +869,7 @@ importers:
dependencies:
lodash:
specifier: ^4.17.21
- version: 4.17.23
+ version: 4.18.1
devDependencies:
'@istanbuljs/nyc-config-typescript':
specifier: ^1.0.2
@@ -1005,7 +1005,7 @@ importers:
dependencies:
lodash:
specifier: ^4.17.21
- version: 4.17.23
+ version: 4.18.1
devDependencies:
'@babel/core':
specifier: ^7.16.0
@@ -1036,13 +1036,13 @@ importers:
version: 5.62.0(eslint@8.57.0)(typescript@5.5.4)
'@vue/cli-plugin-babel':
specifier: ~5.0.8
- version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(core-js@3.37.1)(encoding@0.1.13)(vue@3.5.17(typescript@5.5.4))
+ version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(core-js@3.37.1)(encoding@0.1.13)(vue@3.5.17(typescript@5.5.4))
'@vue/cli-plugin-typescript':
specifier: ~5.0.8
- version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))
+ version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))
'@vue/cli-service':
specifier: ~5.0.8
- version: 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
+ version: 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
'@vue/eslint-config-typescript':
specifier: ^11.0.2
version: 11.0.3(eslint-plugin-vue@9.26.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.4)
@@ -1123,7 +1123,7 @@ importers:
dependencies:
lodash:
specifier: ^4.17.21
- version: 4.17.23
+ version: 4.18.1
devDependencies:
'@babel/core':
specifier: ^7.9.0
@@ -1160,16 +1160,16 @@ importers:
version: 5.62.0(eslint@8.57.0)(typescript@5.5.4)
'@vue/cli-plugin-babel':
specifier: ~5.0.8
- version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(core-js@3.37.1)(encoding@0.1.13)(vue@3.5.17(typescript@5.5.4))
+ version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(core-js@3.37.1)(encoding@0.1.13)(vue@3.5.17(typescript@5.5.4))
'@vue/cli-plugin-typescript':
specifier: ~5.0.8
- version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))
+ version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))
'@vue/cli-plugin-unit-mocha':
specifier: ~5.0.8
- version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)(webpack@5.105.4)
+ version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)(webpack@5.105.4)
'@vue/cli-service':
specifier: ~5.0.8
- version: 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
+ version: 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
'@vue/eslint-config-typescript':
specifier: ^11.0.2
version: 11.0.3(eslint-plugin-vue@9.26.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.4)
@@ -1328,7 +1328,7 @@ importers:
version: 3.0.15
lodash:
specifier: ^4.17.21
- version: 4.17.23
+ version: 4.18.1
maska:
specifier: ^2.1.11
version: 2.1.11
@@ -3991,6 +3991,7 @@ packages:
'@lerna/create@9.0.1':
resolution: {integrity: sha512-xkZhQ+d7IsLzL5+1G+rKtH3b9aKRyBQ9yaz1VwPTfkD2nUAyaco97BRN9YRJgJrSHY/SI265RaD1D2rt00Jjkg==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ deprecated: This package is an implementation detail of Lerna and is no longer published separately.
'@listr2/prompt-adapter-inquirer@2.0.18':
resolution: {integrity: sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q==}
@@ -6587,8 +6588,8 @@ packages:
resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==}
engines: {node: ^4.5.0 || >= 5.9}
- baseline-browser-mapping@2.10.9:
- resolution: {integrity: sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==}
+ baseline-browser-mapping@2.10.16:
+ resolution: {integrity: sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -6724,8 +6725,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
- browserslist@4.28.1:
- resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
+ browserslist@4.28.2:
+ resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
@@ -6840,8 +6841,8 @@ packages:
caniuse-lite@1.0.30001748:
resolution: {integrity: sha512-5P5UgAr0+aBmNiplks08JLw+AW/XG/SurlgZLgB1dDLfAw7EfRGxIwzPHxdSCGY/BTKDqIVyJL87cCN6s0ZR0w==}
- caniuse-lite@1.0.30001780:
- resolution: {integrity: sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==}
+ caniuse-lite@1.0.30001786:
+ resolution: {integrity: sha512-4oxTZEvqmLLrERwxO76yfKM7acZo310U+v4kqexI2TL1DkkUEMT8UijrxxcnVdxR3qkVf5awGRX+4Z6aPHVKrA==}
case-sensitive-paths-webpack-plugin@2.4.0:
resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==}
@@ -8075,8 +8076,8 @@ packages:
electron-to-chromium@1.5.232:
resolution: {integrity: sha512-ENirSe7wf8WzyPCibqKUG1Cg43cPaxH4wRR7AJsX7MCABCHBIOFqvaYODSLKUuZdraxUTHRE/0A2Aq8BYKEHOg==}
- electron-to-chromium@1.5.321:
- resolution: {integrity: sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==}
+ electron-to-chromium@1.5.332:
+ resolution: {integrity: sha512-7OOtytmh/rINMLwaFTbcMVvYXO3AUm029X0LcyfYk0B557RlPkdpTpnH9+htMlfu5dKwOmT0+Zs2Aw+lnn6TeQ==}
electron-to-chromium@1.5.67:
resolution: {integrity: sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==}
@@ -8948,16 +8949,16 @@ packages:
glob@7.1.6:
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
- deprecated: Glob versions prior to v9 are no longer supported
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
glob@8.1.0:
resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
engines: {node: '>=12'}
- deprecated: Glob versions prior to v9 are no longer supported
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
glob@9.3.5:
resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==}
@@ -10484,6 +10485,9 @@ packages:
lodash@4.17.23:
resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
+ lodash@4.18.1:
+ resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
+
log-driver@1.2.7:
resolution: {integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==}
engines: {node: '>=0.8.6'}
@@ -11048,8 +11052,8 @@ packages:
node-releases@2.0.23:
resolution: {integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==}
- node-releases@2.0.36:
- resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==}
+ node-releases@2.0.37:
+ resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==}
node-stdlib-browser@1.2.0:
resolution: {integrity: sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==}
@@ -13331,8 +13335,8 @@ packages:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
- tapable@2.3.0:
- resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
+ tapable@2.3.2:
+ resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==}
engines: {node: '>=6'}
tar-stream@2.2.0:
@@ -19696,11 +19700,11 @@ snapshots:
'@vue/cli-overlay@5.0.8': {}
- '@vue/cli-plugin-babel@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(core-js@3.37.1)(encoding@0.1.13)(vue@3.5.17(typescript@5.5.4))':
+ '@vue/cli-plugin-babel@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(core-js@3.37.1)(encoding@0.1.13)(vue@3.5.17(typescript@5.5.4))':
dependencies:
'@babel/core': 7.24.5
'@vue/babel-preset-app': 5.0.8(@babel/core@7.24.5)(core-js@3.37.1)(vue@3.5.17(typescript@5.5.4))
- '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
+ '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
'@vue/cli-shared-utils': 5.0.8(encoding@0.1.13)
babel-loader: 8.3.0(@babel/core@7.24.5)(webpack@5.91.0)
thread-loader: 3.0.4(webpack@5.91.0)
@@ -19715,18 +19719,18 @@ snapshots:
- vue
- webpack-cli
- '@vue/cli-plugin-router@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)':
+ '@vue/cli-plugin-router@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)':
dependencies:
- '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
+ '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
'@vue/cli-shared-utils': 5.0.8(encoding@0.1.13)
transitivePeerDependencies:
- encoding
- '@vue/cli-plugin-typescript@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))':
+ '@vue/cli-plugin-typescript@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))':
dependencies:
'@babel/core': 7.24.5
'@types/webpack-env': 1.18.5
- '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
+ '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
'@vue/cli-shared-utils': 5.0.8(encoding@0.1.13)
babel-loader: 8.3.0(@babel/core@7.24.5)(webpack@5.91.0)
fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(webpack@5.91.0)
@@ -19747,9 +19751,9 @@ snapshots:
- uglify-js
- webpack-cli
- '@vue/cli-plugin-unit-mocha@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)(webpack@5.105.4)':
+ '@vue/cli-plugin-unit-mocha@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)(webpack@5.105.4)':
dependencies:
- '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
+ '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
'@vue/cli-shared-utils': 5.0.8(encoding@0.1.13)
jsdom: 18.1.1
jsdom-global: 3.0.2(jsdom@18.1.1)
@@ -19763,22 +19767,22 @@ snapshots:
- utf-8-validate
- webpack
- '@vue/cli-plugin-vuex@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))':
+ '@vue/cli-plugin-vuex@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))':
dependencies:
- '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
+ '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)
- '@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)':
+ '@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4)':
dependencies:
'@babel/helper-compilation-targets': 7.23.6
'@soda/friendly-errors-webpack-plugin': 1.8.1(webpack@5.91.0)
'@soda/get-current-script': 1.0.2
'@types/minimist': 1.2.5
'@vue/cli-overlay': 5.0.8
- '@vue/cli-plugin-router': 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)
- '@vue/cli-plugin-vuex': 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))
+ '@vue/cli-plugin-router': 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))(encoding@0.1.13)
+ '@vue/cli-plugin-vuex': 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.17)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.5.17(typescript@5.5.4))(webpack-sources@3.3.4))
'@vue/cli-shared-utils': 5.0.8(encoding@0.1.13)
- '@vue/component-compiler-utils': 3.3.0(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.23)
- '@vue/vue-loader-v15': vue-loader@15.11.1(@vue/compiler-sfc@3.5.17)(css-loader@6.11.0(webpack@5.91.0))(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(webpack@5.91.0)
+ '@vue/component-compiler-utils': 3.3.0(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.18.1)
+ '@vue/vue-loader-v15': vue-loader@15.11.1(@vue/compiler-sfc@3.5.17)(css-loader@6.11.0(webpack@5.91.0))(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(webpack@5.91.0)
'@vue/web-component-wrapper': 1.3.0
acorn: 8.11.3
acorn-walk: 8.3.2
@@ -19987,9 +19991,9 @@ snapshots:
de-indent: 1.0.2
he: 1.2.0
- '@vue/component-compiler-utils@3.3.0(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.23)':
+ '@vue/component-compiler-utils@3.3.0(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.18.1)':
dependencies:
- consolidate: 0.15.1(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.23)
+ consolidate: 0.15.1(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.18.1)
hash-sum: 1.0.2
lru-cache: 4.1.5
merge-source-map: 1.1.0
@@ -20738,7 +20742,7 @@ snapshots:
async@2.6.4:
dependencies:
- lodash: 4.17.23
+ lodash: 4.18.1
async@3.2.5: {}
@@ -21008,7 +21012,7 @@ snapshots:
base64id@2.0.0: {}
- baseline-browser-mapping@2.10.9: {}
+ baseline-browser-mapping@2.10.16: {}
baseline-browser-mapping@2.8.12: {}
@@ -21207,13 +21211,13 @@ snapshots:
node-releases: 2.0.23
update-browserslist-db: 1.1.3(browserslist@4.26.3)
- browserslist@4.28.1:
+ browserslist@4.28.2:
dependencies:
- baseline-browser-mapping: 2.10.9
- caniuse-lite: 1.0.30001780
- electron-to-chromium: 1.5.321
- node-releases: 2.0.36
- update-browserslist-db: 1.2.3(browserslist@4.28.1)
+ baseline-browser-mapping: 2.10.16
+ caniuse-lite: 1.0.30001786
+ electron-to-chromium: 1.5.332
+ node-releases: 2.0.37
+ update-browserslist-db: 1.2.3(browserslist@4.28.2)
browserstack@1.6.1:
dependencies:
@@ -21360,7 +21364,7 @@ snapshots:
caniuse-lite@1.0.30001748: {}
- caniuse-lite@1.0.30001780: {}
+ caniuse-lite@1.0.30001786: {}
case-sensitive-paths-webpack-plugin@2.4.0: {}
@@ -21708,7 +21712,7 @@ snapshots:
esutils: 2.0.3
fast-diff: 1.3.0
js-string-escape: 1.0.1
- lodash: 4.17.23
+ lodash: 4.18.1
md5-hex: 3.0.1
semver: 7.6.2
well-known-symbols: 2.0.0
@@ -21735,13 +21739,13 @@ snapshots:
console-control-strings@1.1.0: {}
- consolidate@0.15.1(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.23):
+ consolidate@0.15.1(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.18.1):
dependencies:
bluebird: 3.7.2
optionalDependencies:
ejs: 3.1.10
handlebars: 4.7.8
- lodash: 4.17.23
+ lodash: 4.18.1
constants-browserify@1.0.0: {}
@@ -22592,7 +22596,7 @@ snapshots:
electron-to-chromium@1.5.232: {}
- electron-to-chromium@1.5.321: {}
+ electron-to-chromium@1.5.332: {}
electron-to-chromium@1.5.67: {}
@@ -22665,7 +22669,7 @@ snapshots:
enhanced-resolve@5.20.1:
dependencies:
graceful-fs: 4.2.11
- tapable: 2.3.0
+ tapable: 2.3.2
enquirer@2.3.6:
dependencies:
@@ -23070,7 +23074,7 @@ snapshots:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
eslint: 8.57.0
eslint-compat-utils: 0.5.1(eslint@8.57.0)
- lodash: 4.17.23
+ lodash: 4.18.1
postcss: 8.4.38
postcss-safe-parser: 6.0.0(postcss@8.4.38)
postcss-scss: 4.0.9(postcss@8.4.38)
@@ -23953,7 +23957,7 @@ snapshots:
graphlib@2.1.8:
dependencies:
- lodash: 4.17.23
+ lodash: 4.18.1
growl@1.10.5: {}
@@ -24133,7 +24137,7 @@ snapshots:
dependencies:
'@types/html-minifier-terser': 6.1.0
html-minifier-terser: 6.1.0
- lodash: 4.17.23
+ lodash: 4.18.1
pretty-error: 4.0.0
tapable: 2.2.1
optionalDependencies:
@@ -25357,7 +25361,7 @@ snapshots:
commander: 4.1.1
graphlib: 2.1.8
js-yaml: 3.14.1
- lodash: 4.17.23
+ lodash: 4.18.1
native-promise-only: 0.8.1
path-loader: 1.0.12
slash: 3.0.0
@@ -25486,7 +25490,7 @@ snapshots:
graceful-fs: 4.2.11
http-proxy: 1.18.1
isbinaryfile: 4.0.10
- lodash: 4.17.23
+ lodash: 4.18.1
log4js: 6.9.1
mime: 2.6.0
minimatch: 3.1.2
@@ -25825,6 +25829,8 @@ snapshots:
lodash@4.17.23: {}
+ lodash@4.18.1: {}
+
log-driver@1.2.7: {}
log-symbols@4.0.0:
@@ -26256,7 +26262,7 @@ snapshots:
interpret: 1.4.0
is-glob: 4.0.3
loader-utils: 1.4.2
- lodash: 4.17.23
+ lodash: 4.18.1
memory-fs: 0.4.1
minimatch: 3.1.2
mocha: 8.4.0
@@ -26471,7 +26477,7 @@ snapshots:
node-releases@2.0.23: {}
- node-releases@2.0.36: {}
+ node-releases@2.0.37: {}
node-stdlib-browser@1.2.0:
dependencies:
@@ -27768,7 +27774,7 @@ snapshots:
pretty-error@4.0.0:
dependencies:
- lodash: 4.17.23
+ lodash: 4.18.1
renderkid: 3.0.0
pretty-format@29.7.0:
@@ -28213,7 +28219,7 @@ snapshots:
css-select: 4.3.0
dom-converter: 0.2.0
htmlparser2: 6.1.0
- lodash: 4.17.23
+ lodash: 4.18.1
strip-ansi: 6.0.1
replace-ext@1.0.1: {}
@@ -29347,7 +29353,7 @@ snapshots:
tapable@2.2.1: {}
- tapable@2.3.0: {}
+ tapable@2.3.2: {}
tar-stream@2.2.0:
dependencies:
@@ -29871,9 +29877,9 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
- update-browserslist-db@1.2.3(browserslist@4.28.1):
+ update-browserslist-db@1.2.3(browserslist@4.28.2):
dependencies:
- browserslist: 4.28.1
+ browserslist: 4.28.2
escalade: 3.2.0
picocolors: 1.1.1
@@ -30134,16 +30140,16 @@ snapshots:
eslint-visitor-keys: 3.4.3
espree: 9.6.1
esquery: 1.5.0
- lodash: 4.17.23
+ lodash: 4.18.1
semver: 7.6.2
transitivePeerDependencies:
- supports-color
vue-hot-reload-api@2.3.4: {}
- vue-loader@15.11.1(@vue/compiler-sfc@3.5.17)(css-loader@6.11.0(webpack@5.91.0))(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.23)(prettier@2.8.8)(vue-template-compiler@2.7.16)(webpack@5.91.0):
+ vue-loader@15.11.1(@vue/compiler-sfc@3.5.17)(css-loader@6.11.0(webpack@5.91.0))(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(webpack@5.91.0):
dependencies:
- '@vue/component-compiler-utils': 3.3.0(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.23)
+ '@vue/component-compiler-utils': 3.3.0(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.18.1)
css-loader: 6.11.0(webpack@5.91.0)
hash-sum: 1.0.2
loader-utils: 1.4.2
@@ -30528,7 +30534,7 @@ snapshots:
webpack-merge@4.2.2:
dependencies:
- lodash: 4.17.23
+ lodash: 4.18.1
webpack-merge@5.10.0:
dependencies:
@@ -30565,7 +30571,7 @@ snapshots:
'@webassemblyjs/wasm-parser': 1.14.1
acorn: 8.16.0
acorn-import-phases: 1.0.4(acorn@8.16.0)
- browserslist: 4.28.1
+ browserslist: 4.28.2
chrome-trace-event: 1.0.4
enhanced-resolve: 5.20.1
es-module-lexer: 2.0.0
@@ -30578,7 +30584,7 @@ snapshots:
mime-types: 2.1.35
neo-async: 2.6.2
schema-utils: 4.3.3
- tapable: 2.3.0
+ tapable: 2.3.2
terser-webpack-plugin: 5.4.0(webpack@5.105.4)
watchpack: 2.5.1
webpack-sources: 3.3.4
From 31b9a7aaf5e2193bdd33dd4cb023bd43613f18d2 Mon Sep 17 00:00:00 2001
From: Lucas Koehler
Date: Thu, 9 Apr 2026 16:16:11 +0200
Subject: [PATCH 24/29] core: improve Translator type for strict TypeScript
compatibility (#2562)
Fix #2528
- Replace overloaded Translator type with a generic conditional type
- Add createTranslator helper to allow implementation without type
assertions under strictFunctionTypes and strictNullChecks.
- createTranslator always returns default value for undefined translation
---
MIGRATION.md | 38 +++++++++++++++++++
packages/core/src/i18n/i18nUtil.ts | 23 +++++++++--
packages/core/src/store/i18nTypes.ts | 10 ++---
...ys-with-translated-custom-element-label.ts | 6 +--
packages/examples/src/examples/arraysI18n.ts | 10 +++--
.../examples/src/examples/categorization.ts | 6 +--
packages/examples/src/examples/enumI18n.ts | 9 ++---
packages/examples/src/examples/i18n.ts | 5 ++-
.../material-renderers/test/renderers/util.ts | 5 ++-
.../src/controls/DateControlRenderer.vue | 4 +-
.../src/controls/DateTimeControlRenderer.vue | 4 +-
.../src/controls/TimeControlRenderer.vue | 6 +--
.../additional/ListWithDetailRenderer.spec.ts | 6 +--
.../unit/complex/ArrayControlRenderer.spec.ts | 6 +--
.../tests/unit/complex/OneOfRenderer.spec.ts | 6 +--
.../unit/layout/ArrayLayoutRenderer.spec.ts | 6 +--
16 files changed, 104 insertions(+), 46 deletions(-)
diff --git a/MIGRATION.md b/MIGRATION.md
index c61fbadf6..92b02a763 100644
--- a/MIGRATION.md
+++ b/MIGRATION.md
@@ -2,6 +2,44 @@
## Migrating to JSON Forms 3.8
+### `Translator` type changed from overloaded signatures to a generic conditional type
+
+The `Translator` type was changed to improve compatibility with TypeScript's `strictFunctionTypes` and `strictNullChecks` compiler options (see [#2528](https://github.com/eclipsesource/jsonforms/issues/2528)).
+
+If you were previously assigning a function directly to the `Translator` type, this may no longer compile:
+
+```ts
+// No longer compiles
+const t: Translator = (id, defaultMessage) => defaultMessage ?? id;
+```
+
+Use the new `createTranslator` helper instead:
+
+```ts
+import { createTranslator } from '@jsonforms/core';
+
+const t = createTranslator((id, defaultMessage) => defaultMessage ?? id);
+```
+
+This also replaces the `as Translator` workaround that was previously needed under strict TypeScript settings.
+
+#### Vue: `Translator` return type in Options API
+
+If you have custom Vue renderers that access a `Translator` via `this` (Options API), the return type may no longer narrow to `string` even when a `defaultMessage` is provided.
+This is because Vue's ref unwrapping loses the generic parameter of the new conditional type.
+
+To fix this, use `as string` when you know a default message is always provided:
+
+```ts
+// Before (may now return string | undefined)
+return this.t(label, label);
+
+// After
+return this.t(label, label) as string;
+```
+
+This does not affect the Composition API where `Translator` is accessed directly from a `ComputedRef`.
+
### Angular material removes hammerjs
The angular material package no longer depends or imports the `hammerjs` package.
diff --git a/packages/core/src/i18n/i18nUtil.ts b/packages/core/src/i18n/i18nUtil.ts
index bcef4e5a1..e51eece97 100644
--- a/packages/core/src/i18n/i18nUtil.ts
+++ b/packages/core/src/i18n/i18nUtil.ts
@@ -65,10 +65,25 @@ export const addI18nKeyToPrefix = (
return `${i18nKeyPrefix}.${key}`;
};
-export const defaultTranslator: Translator = (
- _id: string,
- defaultMessage: string | undefined
-) => defaultMessage;
+export const createTranslator =
+ (
+ fn: (
+ id: string,
+ defaultMessage: string | undefined,
+ values?: any
+ ) => string | undefined
+ ): Translator =>
+ (id: string, defaultMessage?: string, values?: any) => {
+ const translation = fn(id, defaultMessage, values);
+ if (translation === undefined) {
+ return defaultMessage;
+ }
+ return translation;
+ };
+
+export const defaultTranslator: Translator = createTranslator(
+ (_id, defaultMessage) => defaultMessage
+);
export const defaultErrorTranslator: ErrorTranslator = (error, t, uischema) => {
// check whether there is a special keyword message
diff --git a/packages/core/src/store/i18nTypes.ts b/packages/core/src/store/i18nTypes.ts
index 64002f393..f4a68e6dd 100644
--- a/packages/core/src/store/i18nTypes.ts
+++ b/packages/core/src/store/i18nTypes.ts
@@ -1,11 +1,11 @@
import type { ErrorObject } from 'ajv';
import type { JsonSchema, UISchemaElement } from '../models';
-export type Translator = {
- (id: string, defaultMessage: string, values?: any): string;
- (id: string, defaultMessage: undefined, values?: any): string | undefined;
- (id: string, defaultMessage?: string, values?: any): string | undefined;
-};
+export type Translator = (
+ id: string,
+ defaultMessage?: D,
+ values?: any
+) => D extends string ? string : string | undefined;
export type ErrorTranslator = (
error: ErrorObject,
diff --git a/packages/examples/src/examples/arrays-with-translated-custom-element-label.ts b/packages/examples/src/examples/arrays-with-translated-custom-element-label.ts
index efd39f0ed..d4a06f841 100644
--- a/packages/examples/src/examples/arrays-with-translated-custom-element-label.ts
+++ b/packages/examples/src/examples/arrays-with-translated-custom-element-label.ts
@@ -23,7 +23,7 @@
THE SOFTWARE.
*/
import { registerExamples } from '../register';
-import { JsonSchema7, Translator } from '@jsonforms/core';
+import { createTranslator, JsonSchema7, Translator } from '@jsonforms/core';
export const data = {
article: {
@@ -265,9 +265,9 @@ export const uischema = {
],
};
-export const translate: Translator = (key: string) => {
+export const translate: Translator = createTranslator((key) => {
return 'translator.' + key;
-};
+});
registerExamples([
{
diff --git a/packages/examples/src/examples/arraysI18n.ts b/packages/examples/src/examples/arraysI18n.ts
index 8b1733930..4a0e074ef 100644
--- a/packages/examples/src/examples/arraysI18n.ts
+++ b/packages/examples/src/examples/arraysI18n.ts
@@ -23,7 +23,11 @@
THE SOFTWARE.
*/
import { registerExamples } from '../register';
-import { ArrayTranslationEnum, Translator } from '@jsonforms/core';
+import {
+ ArrayTranslationEnum,
+ createTranslator,
+ Translator,
+} from '@jsonforms/core';
import get from 'lodash/get';
export const schema = {
@@ -88,9 +92,9 @@ export const translations = {
'Are you sure you want to delete this comment?',
},
};
-export const translate: Translator = (key: string, defaultMessage: string) => {
+export const translate: Translator = createTranslator((key, defaultMessage) => {
return get(translations, key) ?? defaultMessage;
-};
+});
registerExamples([
{
diff --git a/packages/examples/src/examples/categorization.ts b/packages/examples/src/examples/categorization.ts
index 63a83e521..6b70ba2fa 100644
--- a/packages/examples/src/examples/categorization.ts
+++ b/packages/examples/src/examples/categorization.ts
@@ -22,7 +22,7 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
-import { Translator } from '@jsonforms/core';
+import { createTranslator, Translator } from '@jsonforms/core';
import get from 'lodash/get';
import { registerExamples } from '../register';
@@ -292,9 +292,9 @@ export const translations = {
label: 'Address',
},
};
-export const translate: Translator = (key: string, defaultMessage: string) => {
+export const translate: Translator = createTranslator((key, defaultMessage) => {
return get(translations, key) ?? defaultMessage;
-};
+});
registerExamples([
{
diff --git a/packages/examples/src/examples/enumI18n.ts b/packages/examples/src/examples/enumI18n.ts
index fdfdf733a..66f0044fd 100644
--- a/packages/examples/src/examples/enumI18n.ts
+++ b/packages/examples/src/examples/enumI18n.ts
@@ -23,7 +23,7 @@
THE SOFTWARE.
*/
import { registerExamples } from '../register';
-import { Translator } from '@jsonforms/core';
+import { createTranslator, Translator } from '@jsonforms/core';
import get from 'lodash/get';
export const schema = {
@@ -116,12 +116,9 @@ export const translations: Record = {
'status.rejected': 'Declined',
};
-export const translate: Translator = (
- key: string,
- defaultMessage: string | undefined
-) => {
+export const translate: Translator = createTranslator((key, defaultMessage) => {
return get(translations, key) ?? defaultMessage;
-};
+});
registerExamples([
{
diff --git a/packages/examples/src/examples/i18n.ts b/packages/examples/src/examples/i18n.ts
index 43f7ccf47..c2c67850c 100644
--- a/packages/examples/src/examples/i18n.ts
+++ b/packages/examples/src/examples/i18n.ts
@@ -30,6 +30,7 @@ import {
AnyAction,
Dispatch,
Translator,
+ createTranslator,
} from '@jsonforms/core';
import get from 'lodash/get';
import localize from 'ajv-i18n/localize';
@@ -99,9 +100,9 @@ export const translations = {
},
additionalInformationLabel: 'Additional Information',
};
-export const translate: Translator = (key: string, defaultMessage: string) => {
+export const translate: Translator = createTranslator((key, defaultMessage) => {
return get(translations, key) ?? defaultMessage;
-};
+});
registerExamples([
{
diff --git a/packages/material-renderers/test/renderers/util.ts b/packages/material-renderers/test/renderers/util.ts
index 9b2092d79..c97b3bd9d 100644
--- a/packages/material-renderers/test/renderers/util.ts
+++ b/packages/material-renderers/test/renderers/util.ts
@@ -28,6 +28,7 @@ import {
JsonFormsCore,
JsonSchema,
TesterContext,
+ createTranslator,
Translator,
UISchemaElement,
} from '@jsonforms/core';
@@ -58,4 +59,6 @@ export const createTesterContext = (
return { rootSchema, config };
};
-export const testTranslator: Translator = (key: string) => 'translator.' + key;
+export const testTranslator: Translator = createTranslator(
+ (key) => 'translator.' + key
+);
diff --git a/packages/vue-vuetify/src/controls/DateControlRenderer.vue b/packages/vue-vuetify/src/controls/DateControlRenderer.vue
index 4a1e7c576..0581413a2 100644
--- a/packages/vue-vuetify/src/controls/DateControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/DateControlRenderer.vue
@@ -384,14 +384,14 @@ const controlRenderer = defineComponent({
? this.appliedOptions.cancelLabel
: 'Cancel';
- return this.t(label, label);
+ return this.t(label, label) as string;
},
okLabel(): string {
const label =
typeof this.appliedOptions.okLabel == 'string'
? this.appliedOptions.okLabel
: 'OK';
- return this.t(label, label);
+ return this.t(label, label) as string;
},
showActions(): boolean {
return this.appliedOptions.showActions === true;
diff --git a/packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue b/packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue
index 76d236788..5dfaf3918 100644
--- a/packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue
@@ -584,14 +584,14 @@ const controlRenderer = defineComponent({
? this.appliedOptions.cancelLabel
: 'Cancel';
- return this.t(label, label);
+ return this.t(label, label) as string;
},
okLabel(): string {
const label =
typeof this.appliedOptions.okLabel == 'string'
? this.appliedOptions.okLabel
: 'OK';
- return this.t(label, label);
+ return this.t(label, label) as string;
},
showActions(): boolean {
return this.appliedOptions.showActions === true;
diff --git a/packages/vue-vuetify/src/controls/TimeControlRenderer.vue b/packages/vue-vuetify/src/controls/TimeControlRenderer.vue
index 2e65528e1..ebc4faaae 100644
--- a/packages/vue-vuetify/src/controls/TimeControlRenderer.vue
+++ b/packages/vue-vuetify/src/controls/TimeControlRenderer.vue
@@ -365,7 +365,7 @@ const controlRenderer = defineComponent({
? this.appliedOptions.clearLabel
: 'Clear';
- return this.t(label, label);
+ return this.t(label, label) as string;
},
cancelLabel(): string {
const label =
@@ -373,14 +373,14 @@ const controlRenderer = defineComponent({
? this.appliedOptions.cancelLabel
: 'Cancel';
- return this.t(label, label);
+ return this.t(label, label) as string;
},
okLabel(): string {
const label =
typeof this.appliedOptions.okLabel == 'string'
? this.appliedOptions.okLabel
: 'OK';
- return this.t(label, label);
+ return this.t(label, label) as string;
},
showActions(): boolean {
return this.appliedOptions.showActions === true;
diff --git a/packages/vue-vuetify/tests/unit/additional/ListWithDetailRenderer.spec.ts b/packages/vue-vuetify/tests/unit/additional/ListWithDetailRenderer.spec.ts
index 190b5ff49..52dc80cab 100644
--- a/packages/vue-vuetify/tests/unit/additional/ListWithDetailRenderer.spec.ts
+++ b/packages/vue-vuetify/tests/unit/additional/ListWithDetailRenderer.spec.ts
@@ -1,5 +1,5 @@
import { describe, it, expect, beforeEach } from 'vitest';
-import { clearAllIds, type Translator } from '@jsonforms/core';
+import { clearAllIds, createTranslator } from '@jsonforms/core';
import ListWithDetailRenderer from '../../../src/additional/ListWithDetailRenderer.vue';
import { entry as listWithDetailRendererEntry } from '../../../src/additional/ListWithDetailRenderer.entry';
import { mountJsonForms } from '../util';
@@ -30,12 +30,12 @@ describe('ListWithDetailRenderer.vue', () => {
// clear all ids to guarantee that the snapshots will always be generated with the same ids
clearAllIds();
wrapper = mountJsonForms(data, schema, renderers, uischema, undefined, {
- translate: ((id, defaultMessage) => {
+ translate: createTranslator((id, defaultMessage) => {
if (id.endsWith('addAriaLabel')) {
return 'MyAdd';
}
return defaultMessage;
- }) as Translator,
+ }),
});
});
diff --git a/packages/vue-vuetify/tests/unit/complex/ArrayControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/complex/ArrayControlRenderer.spec.ts
index 0422ca64f..d5ce02ebe 100644
--- a/packages/vue-vuetify/tests/unit/complex/ArrayControlRenderer.spec.ts
+++ b/packages/vue-vuetify/tests/unit/complex/ArrayControlRenderer.spec.ts
@@ -1,5 +1,5 @@
import { describe, it, expect, beforeEach } from 'vitest';
-import { clearAllIds, type Translator } from '@jsonforms/core';
+import { clearAllIds, createTranslator } from '@jsonforms/core';
import ArrayControlRenderer from '../../../src/complex/ArrayControlRenderer.vue';
import { entry as arrayControlRendererEntry } from '../../../src/complex/ArrayControlRenderer.entry';
import { mountJsonForms } from '../util';
@@ -29,12 +29,12 @@ describe('ArrayControlRenderer.vue', () => {
// clear all ids to guarantee that the snapshots will always be generated with the same ids
clearAllIds();
wrapper = mountJsonForms(data, schema, renderers, uischema, undefined, {
- translate: ((id, defaultMessage) => {
+ translate: createTranslator((id, defaultMessage) => {
if (id.endsWith('addAriaLabel')) {
return 'MyAdd';
}
return defaultMessage;
- }) as Translator,
+ }),
});
});
diff --git a/packages/vue-vuetify/tests/unit/complex/OneOfRenderer.spec.ts b/packages/vue-vuetify/tests/unit/complex/OneOfRenderer.spec.ts
index 30027fdb2..ab49545c0 100644
--- a/packages/vue-vuetify/tests/unit/complex/OneOfRenderer.spec.ts
+++ b/packages/vue-vuetify/tests/unit/complex/OneOfRenderer.spec.ts
@@ -1,5 +1,5 @@
import { describe, it, expect, beforeEach } from 'vitest';
-import { clearAllIds, type Translator } from '@jsonforms/core';
+import { clearAllIds, createTranslator } from '@jsonforms/core';
import OneOfControlRenderer from '../../../src/complex/OneOfRenderer.vue';
import { entry as oneOfControlRendererEntry } from '../../../src/complex/OneOfRenderer.entry';
import { mountJsonForms } from '../util';
@@ -40,12 +40,12 @@ describe('OneOfRenderer.vue', () => {
// clear all ids to guarantee that the snapshots will always be generated with the same ids
clearAllIds();
wrapper = mountJsonForms(data, schema, renderers, uischema, undefined, {
- translate: ((id, defaultMessage) => {
+ translate: createTranslator((id, defaultMessage) => {
if (id.endsWith('clearDialogAccept')) {
return 'Do the clear!';
}
return defaultMessage;
- }) as Translator,
+ }),
});
});
diff --git a/packages/vue-vuetify/tests/unit/layout/ArrayLayoutRenderer.spec.ts b/packages/vue-vuetify/tests/unit/layout/ArrayLayoutRenderer.spec.ts
index ba8a591c5..d573121b5 100644
--- a/packages/vue-vuetify/tests/unit/layout/ArrayLayoutRenderer.spec.ts
+++ b/packages/vue-vuetify/tests/unit/layout/ArrayLayoutRenderer.spec.ts
@@ -1,5 +1,5 @@
import { describe, it, expect, beforeEach } from 'vitest';
-import { clearAllIds, type Translator } from '@jsonforms/core';
+import { clearAllIds, createTranslator } from '@jsonforms/core';
import ArrayLayoutRenderer from '../../../src/layouts/ArrayLayoutRenderer.vue';
import { entry as arrayLayoutRendererEntry } from '../../../src/layouts/ArrayLayoutRenderer.entry';
import { mountJsonForms } from '../util';
@@ -30,12 +30,12 @@ describe('ArrayLayoutRenderer.vue', () => {
// clear all ids to guarantee that the snapshots will always be generated with the same ids
clearAllIds();
wrapper = mountJsonForms(data, schema, renderers, uischema, undefined, {
- translate: ((id, defaultMessage) => {
+ translate: createTranslator((id, defaultMessage) => {
if (id.endsWith('addAriaLabel')) {
return 'MyAdd';
}
return defaultMessage;
- }) as Translator,
+ }),
});
});
From 0202cc720908f5310f1389464f3423e61c2933f7 Mon Sep 17 00:00:00 2001
From: Lucas Koehler
Date: Tue, 7 Apr 2026 18:17:16 +0200
Subject: [PATCH 25/29] dev: Update to Node 24 and pnpm 10.33.0 and update GH
actions
- Update node to ^24
- Update pnpm corepack version to 10.33.0
- Update @types/node dependency to 24 and update lockfile
- Update GitHub Actions to actions/checkout@v6, actions/setup-node@v6,
and pnpm/action-setup v5.0.0
- Remove now obsolete npm update step from publish workflow
---
.devcontainer/Dockerfile | 4 +-
.github/workflows/ci.yaml | 8 +-
.github/workflows/publish.yaml | 12 +-
.nvmrc | 2 +-
README.md | 4 +-
package.json | 6 +-
packages/angular-material/package.json | 2 +-
packages/examples/package.json | 2 +-
packages/vue-vanilla/package.json | 2 +-
packages/vue-vuetify/package.json | 2 +-
packages/vue/package.json | 2 +-
pnpm-lock.yaml | 647 +++++++++++++------------
12 files changed, 370 insertions(+), 323 deletions(-)
diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index fcd373223..2c810860f 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -1,7 +1,7 @@
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.191.1/containers/javascript-node/.devcontainer/base.Dockerfile
-# [Choice] Node.js version: 22
-ARG VARIANT="22"
+# [Choice] Node.js version: 24
+ARG VARIANT="24"
FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:1-${VARIANT}
# Install chromium and point the CHROME_BIN environment variable to it
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 4e4a8440a..fb2ce8d6b 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -21,14 +21,14 @@ jobs:
- windows-latest
name: Run on ${{ matrix.os }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Setup node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
- node-version: 22
+ node-version: 24
- - uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
name: Install pnpm
id: pnpm-install
with:
diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml
index 969912743..97f6536e2 100644
--- a/.github/workflows/publish.yaml
+++ b/.github/workflows/publish.yaml
@@ -27,7 +27,7 @@ jobs:
id-token: 'write' # Required for npm OIDC
runs-on: 'ubuntu-latest'
steps:
- - uses: 'actions/checkout@v4'
+ - uses: 'actions/checkout@v6'
with:
token: '${{ secrets.JSONFORMS_PUBLISH_PAT }}'
@@ -36,22 +36,18 @@ jobs:
git config user.name "jsonforms-publish[bot]"
git config user.email "jsonforms-publish@eclipsesource.com"
- - uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
name: Install pnpm
id: pnpm-install
with:
run_install: false
- name: 'Setup node'
- uses: 'actions/setup-node@v4'
+ uses: 'actions/setup-node@v6'
with:
- node-version: '22'
+ node-version: '24'
registry-url: 'https://registry.npmjs.org'
- # Ensure npm 11.5.1 or later for trusted publishing
- - name: Update npm
- run: npm install -g npm@latest
-
- name: 'Install Packages'
run: 'pnpm i --frozen-lockfile'
diff --git a/.nvmrc b/.nvmrc
index 2bd5a0a98..a45fd52cc 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-22
+24
diff --git a/README.md b/README.md
index 2917ddb30..9517ca381 100644
--- a/README.md
+++ b/README.md
@@ -43,8 +43,8 @@ Independently of the assigned milestone, contributions are always accepted and a
### First time setup
-- Install [node.js](https://nodejs.org/) (only Node v22+ < 23 is currently supported)
-- Install pnpm: (use pnpm 10.4.1+) or use [corepack](https://nodejs.org/docs/latest-v18.x/api/corepack.html) to enable the recommended version
+- Install [node.js](https://nodejs.org/) (only Node v24+ < 25 is currently supported)
+- Install pnpm: (use pnpm 10.33.0+) or use [corepack](https://nodejs.org/docs/latest-v18.x/api/corepack.html) to enable the recommended version
- Clone this repository
- Install dependencies: `pnpm i --frozen-lockfile`
diff --git a/package.json b/package.json
index a665c3a12..6702e8aed 100644
--- a/package.json
+++ b/package.json
@@ -1,10 +1,10 @@
{
"name": "jsonforms-monorepo",
"engines": {
- "node": "^22",
- "pnpm": "^10.4.1"
+ "node": "^24",
+ "pnpm": "^10.33.0"
},
- "packageManager": "pnpm@10.22.0+sha512.bf049efe995b28f527fd2b41ae0474ce29186f7edcb3bf545087bd61fbbebb2bf75362d1307fda09c2d288e1e499787ac12d4fcb617a974718a6051f2eee741c",
+ "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319",
"scripts": {
"lerna": "lerna",
"preparePublish": "git clean -dfx && pnpm i --frozen-lockfile && pnpm run clean && pnpm run build && pnpm run doc && pnpm run test",
diff --git a/packages/angular-material/package.json b/packages/angular-material/package.json
index 0bebcdd2f..f04b4581f 100644
--- a/packages/angular-material/package.json
+++ b/packages/angular-material/package.json
@@ -107,7 +107,7 @@
"@ngtools/webpack": "^19.0.0",
"@types/jasmine": "~3.8.0",
"@types/lodash": "4.14.149",
- "@types/node": "^22.13.8",
+ "@types/node": "^24.12.2",
"@typescript-eslint/eslint-plugin": "^5.54.1",
"@typescript-eslint/parser": "^5.54.1",
"babel-loader": "^8.0.6",
diff --git a/packages/examples/package.json b/packages/examples/package.json
index 1906bcefb..c9f4df08b 100644
--- a/packages/examples/package.json
+++ b/packages/examples/package.json
@@ -55,7 +55,7 @@
},
"devDependencies": {
"@jsonforms/core": "workspace:*",
- "@types/node": "^22.13.8",
+ "@types/node": "^24.12.2",
"@typescript-eslint/eslint-plugin": "^5.54.1",
"@typescript-eslint/parser": "^5.54.1",
"eslint": "^8.56.0",
diff --git a/packages/vue-vanilla/package.json b/packages/vue-vanilla/package.json
index 57882f7b6..fc68a41e1 100644
--- a/packages/vue-vanilla/package.json
+++ b/packages/vue-vanilla/package.json
@@ -64,7 +64,7 @@
"@types/chai": "^4.2.11",
"@types/jest": "^29.5.14",
"@types/mocha": "^5.2.4",
- "@types/node": "^22.13.8",
+ "@types/node": "^24.12.2",
"@typescript-eslint/eslint-plugin": "^5.54.1",
"@typescript-eslint/parser": "^5.54.1",
"@vue/cli-plugin-babel": "~5.0.8",
diff --git a/packages/vue-vuetify/package.json b/packages/vue-vuetify/package.json
index cad8b0eee..936093f30 100644
--- a/packages/vue-vuetify/package.json
+++ b/packages/vue-vuetify/package.json
@@ -81,7 +81,7 @@
"@tsconfig/node20": "^20.1.4",
"@types/jsdom": "^21.1.6",
"@types/lodash": "^4.14.172",
- "@types/node": "^22.13.8",
+ "@types/node": "^24.12.2",
"@types/splitpanes": "^2.2.6",
"@vitejs/plugin-vue": "^5.0.4",
"@vitest/coverage-v8": "^1.6.0",
diff --git a/packages/vue/package.json b/packages/vue/package.json
index e3b1d62e8..483c510d8 100644
--- a/packages/vue/package.json
+++ b/packages/vue/package.json
@@ -57,7 +57,7 @@
"@jsonforms/core": "workspace:*",
"@rollup/plugin-alias": "^3.1.8",
"@types/jest": "^29.5.14",
- "@types/node": "^22.13.8",
+ "@types/node": "^24.12.2",
"@typescript-eslint/eslint-plugin": "^5.54.1",
"@typescript-eslint/parser": "^5.54.1",
"@vue/cli-plugin-babel": "~5.0.8",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2066080e3..5e193a6bd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -49,7 +49,7 @@ importers:
version: 3.3.0
lerna:
specifier: ^9.0.1
- version: 9.0.1(@types/node@22.13.8)(babel-plugin-macros@3.1.0)
+ version: 9.0.1(@types/node@24.12.2)(babel-plugin-macros@3.1.0)
nan:
specifier: ^2.14.2
version: 2.19.0
@@ -70,7 +70,7 @@ importers:
version: 9.5.1(typescript@5.5.4)(webpack@5.91.0)
ts-node:
specifier: ^10.4.0
- version: 10.9.2(@types/node@22.13.8)(typescript@5.5.4)
+ version: 10.9.2(@types/node@24.12.2)(typescript@5.5.4)
tslib:
specifier: ^2.5.0
version: 2.6.2
@@ -177,7 +177,7 @@ importers:
devDependencies:
'@angular-devkit/build-angular':
specifier: ^19.0.0
- version: 19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@22.13.8)(chokidar@4.0.1)(html-webpack-plugin@5.6.0(webpack@5.91.0))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(jiti@1.21.0)(karma@6.4.3)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(protractor@7.0.0)(stylus@0.57.0)(typescript@5.5.4)(vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))(yaml@2.8.1)
+ version: 19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@24.12.2)(chokidar@4.0.1)(html-webpack-plugin@5.6.0(webpack@5.91.0))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)))(jiti@1.21.0)(karma@6.4.3)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(protractor@7.0.0)(stylus@0.57.0)(typescript@5.5.4)(vite@6.3.6(@types/node@24.12.2)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))(yaml@2.8.1)
'@angular-devkit/core':
specifier: ^19.0.0
version: 19.2.17(chokidar@4.0.1)
@@ -201,7 +201,7 @@ importers:
version: 19.2.19(@angular/common@19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7))(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
'@angular/cli':
specifier: ^19.0.0
- version: 19.2.22(@types/node@22.13.8)(chokidar@4.0.1)
+ version: 19.2.22(@types/node@24.12.2)(chokidar@4.0.1)
'@angular/common':
specifier: ^19.0.0
version: 19.2.20(@angular/core@19.2.20(rxjs@6.6.7)(zone.js@0.15.1))(rxjs@6.6.7)
@@ -254,8 +254,8 @@ importers:
specifier: 4.14.149
version: 4.14.149
'@types/node':
- specifier: ^22.13.8
- version: 22.13.8
+ specifier: ^24.12.2
+ version: 24.12.2
'@typescript-eslint/eslint-plugin':
specifier: ^5.54.1
version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)
@@ -439,7 +439,7 @@ importers:
version: 0.5.21
ts-node:
specifier: ^10.4.0
- version: 10.9.2(@types/node@22.13.8)(typescript@5.5.4)
+ version: 10.9.2(@types/node@24.12.2)(typescript@5.5.4)
tslib:
specifier: ^2.5.0
version: 2.6.2
@@ -463,8 +463,8 @@ importers:
specifier: workspace:*
version: link:../core
'@types/node':
- specifier: ^22.13.8
- version: 22.13.8
+ specifier: ^24.12.2
+ version: 24.12.2
'@typescript-eslint/eslint-plugin':
specifier: ^5.54.1
version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)
@@ -685,7 +685,7 @@ importers:
version: 7.34.1(eslint@8.57.0)
jest:
specifier: ^29.7.0
- version: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ version: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
jest-environment-jsdom:
specifier: 29.7.0
version: 29.7.0
@@ -730,7 +730,7 @@ importers:
version: 0.2.4
ts-jest:
specifier: ^29.4.5
- version: 29.4.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4)
+ version: 29.4.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest-util@29.7.0)(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)))(typescript@5.5.4)
ts-loader:
specifier: ^9.5.1
version: 9.5.1(typescript@5.5.4)(webpack@5.91.0)
@@ -812,7 +812,7 @@ importers:
version: 7.34.1(eslint@8.57.0)
jest:
specifier: ^29.7.0
- version: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ version: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
jsdom:
specifier: ^27.2.0
version: 27.2.0
@@ -854,7 +854,7 @@ importers:
version: 5.12.0(rollup@2.80.0)
ts-jest:
specifier: ^29.4.5
- version: 29.4.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4)
+ version: 29.4.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest-util@29.7.0)(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)))(typescript@5.5.4)
tslib:
specifier: ^2.5.0
version: 2.6.2
@@ -933,7 +933,7 @@ importers:
version: 7.34.1(eslint@8.57.0)
jest:
specifier: ^29.7.0
- version: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ version: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
jest-environment-jsdom:
specifier: 29.7.0
version: 29.7.0
@@ -978,13 +978,13 @@ importers:
version: 0.2.4
ts-jest:
specifier: ^29.4.5
- version: 29.4.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4)
+ version: 29.4.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest-util@29.7.0)(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)))(typescript@5.5.4)
ts-loader:
specifier: ^9.5.1
version: 9.5.1(typescript@5.5.4)(webpack@5.91.0)
ts-node:
specifier: ^10.4.0
- version: 10.9.2(@types/node@22.13.8)(typescript@5.5.4)
+ version: 10.9.2(@types/node@24.12.2)(typescript@5.5.4)
tslib:
specifier: ^2.5.0
version: 2.6.2
@@ -1026,8 +1026,8 @@ importers:
specifier: ^29.5.14
version: 29.5.14
'@types/node':
- specifier: ^22.13.8
- version: 22.13.8
+ specifier: ^24.12.2
+ version: 24.12.2
'@typescript-eslint/eslint-plugin':
specifier: ^5.54.1
version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)
@@ -1051,7 +1051,7 @@ importers:
version: 2.4.6
'@vue/vue3-jest':
specifier: ^29.2.6
- version: 29.2.6(@babel/core@7.24.5)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4)(vue@3.5.17(typescript@5.5.4))
+ version: 29.2.6(@babel/core@7.24.5)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)))(typescript@5.5.4)(vue@3.5.17(typescript@5.5.4))
core-js:
specifier: ^3.9.1
version: 3.37.1
@@ -1075,7 +1075,7 @@ importers:
version: 9.26.0(eslint@8.57.0)
jest:
specifier: ^29.7.0
- version: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ version: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
jest-environment-jsdom:
specifier: 29.7.0
version: 29.7.0
@@ -1105,7 +1105,7 @@ importers:
version: 6.0.0(@vue/compiler-sfc@3.5.17)
ts-jest:
specifier: ^29.4.5
- version: 29.4.5(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4)
+ version: 29.4.5(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)))(typescript@5.5.4)
tslib:
specifier: ^2.5.0
version: 2.6.2
@@ -1150,8 +1150,8 @@ importers:
specifier: ^5.2.4
version: 5.2.7
'@types/node':
- specifier: ^22.13.8
- version: 22.13.8
+ specifier: ^24.12.2
+ version: 24.12.2
'@typescript-eslint/eslint-plugin':
specifier: ^5.54.1
version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)
@@ -1178,7 +1178,7 @@ importers:
version: 2.4.6
'@vue/vue3-jest':
specifier: ^29.2.6
- version: 29.2.6(@babel/core@7.24.5)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4)(vue@3.5.17(typescript@5.5.4))
+ version: 29.2.6(@babel/core@7.24.5)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)))(typescript@5.5.4)(vue@3.5.17(typescript@5.5.4))
chai:
specifier: ^4.1.2
version: 4.4.1
@@ -1273,17 +1273,17 @@ importers:
specifier: ^4.14.172
version: 4.17.7
'@types/node':
- specifier: ^22.13.8
- version: 22.13.8
+ specifier: ^24.12.2
+ version: 24.12.2
'@types/splitpanes':
specifier: ^2.2.6
version: 2.2.6
'@vitejs/plugin-vue':
specifier: ^5.0.4
- version: 5.1.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))
+ version: 5.1.2(vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))
'@vitest/coverage-v8':
specifier: ^1.6.0
- version: 1.6.0(vitest@1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
+ version: 1.6.0(vitest@1.6.0(@types/node@24.12.2)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
'@vue/eslint-config-prettier':
specifier: ^9.0.0
version: 9.0.0(@types/eslint@8.56.10)(eslint@8.57.0)(prettier@3.3.3)
@@ -1349,7 +1349,7 @@ importers:
version: 6.1.0
rollup-plugin-postcss:
specifier: ^4.0.2
- version: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ version: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
splitpanes:
specifier: ^3.1.5
version: 3.1.5
@@ -1361,22 +1361,22 @@ importers:
version: 5.5.4
vite:
specifier: ^5.4.21
- version: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ version: 5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
vite-plugin-dts:
specifier: ^3.9.1
- version: 3.9.1(@types/node@22.13.8)(rollup@4.59.0)(typescript@5.5.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
+ version: 3.9.1(@types/node@24.12.2)(rollup@4.59.0)(typescript@5.5.4)(vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
vite-plugin-node-polyfills:
specifier: ^0.21.0
- version: 0.21.0(rollup@4.59.0)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
+ version: 0.21.0(rollup@4.59.0)(vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
vite-plugin-static-copy:
specifier: ^2.3.2
- version: 2.3.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
+ version: 2.3.2(vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))
vite-plugin-vuetify:
specifier: ^2.1.1
- version: 2.1.1(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0)
+ version: 2.1.1(vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0)
vitest:
specifier: ^1.4.0
- version: 1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ version: 1.6.0(@types/node@24.12.2)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
vue:
specifier: ^3.5.17
version: 3.5.17(typescript@5.5.4)
@@ -4272,42 +4272,49 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@napi-rs/nice-linux-arm64-musl@1.1.1':
resolution: {integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@napi-rs/nice-linux-ppc64-gnu@1.1.1':
resolution: {integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==}
engines: {node: '>= 10'}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@napi-rs/nice-linux-riscv64-gnu@1.1.1':
resolution: {integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==}
engines: {node: '>= 10'}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@napi-rs/nice-linux-s390x-gnu@1.1.1':
resolution: {integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==}
engines: {node: '>= 10'}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@napi-rs/nice-linux-x64-gnu@1.1.1':
resolution: {integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@napi-rs/nice-linux-x64-musl@1.1.1':
resolution: {integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@napi-rs/nice-openharmony-arm64@1.1.1':
resolution: {integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==}
@@ -4484,21 +4491,25 @@ packages:
resolution: {integrity: sha512-2jvS8MYYOI8eUBRTmE8HKm5mRVLqS5Cvlj06tEAjxrmH5d7Bv8BG5Ps9yZzT0qswfVKChpzIliwPZomUjLTxmA==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@nx/nx-linux-arm64-musl@22.0.4':
resolution: {integrity: sha512-IK9gf8/AOtTW6rZajmGAFCN7EBzjmkIevt9MtOehQGlNXlMXydvUYKE5VU7d4oglvYs8aJJyayihfiZbFnTS8g==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@nx/nx-linux-x64-gnu@22.0.4':
resolution: {integrity: sha512-CdALjMqqNgiffQQIlyxx6mrxJCOqDzmN6BW3w9msCPHVSPOPp4AenlT0kpC7ALvmNEUm0lC4r093QbN2t6a/wA==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@nx/nx-linux-x64-musl@22.0.4':
resolution: {integrity: sha512-2GPy+mAQo4JnfjTtsgGrHhZbTmmGy4RqaGowe0qMYCMuBME33ChG9iiRmArYmVtCAhYZVn26rK76/Vn3tK7fgg==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@nx/nx-win32-arm64-msvc@22.0.4':
resolution: {integrity: sha512-jnZCCnTXoqOIrH0L31+qHVHmJuDYPoN6sl37/S1epP9n4fhcy9tjSx4xvx/WQSd417lU9saC+g7Glx2uFdgcTw==}
@@ -4597,36 +4608,42 @@ packages:
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-arm-musl@2.5.1':
resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@parcel/watcher-linux-arm64-glibc@2.5.1':
resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-arm64-musl@2.5.1':
resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@parcel/watcher-linux-x64-glibc@2.5.1':
resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-x64-musl@2.5.1':
resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@parcel/watcher-win32-arm64@2.5.1':
resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
@@ -4831,171 +4848,205 @@ packages:
resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm-gnueabihf@4.52.4':
resolution: {integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm-gnueabihf@4.59.0':
resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.34.8':
resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm-musleabihf@4.52.4':
resolution: {integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm-musleabihf@4.59.0':
resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.34.8':
resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm64-gnu@4.52.4':
resolution: {integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm64-gnu@4.59.0':
resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.34.8':
resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm64-musl@4.52.4':
resolution: {integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm64-musl@4.59.0':
resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-loong64-gnu@4.52.4':
resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==}
cpu: [loong64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-loong64-gnu@4.59.0':
resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==}
cpu: [loong64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-loong64-musl@4.59.0':
resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==}
cpu: [loong64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-loongarch64-gnu@4.34.8':
resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==}
cpu: [loong64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-powerpc64le-gnu@4.34.8':
resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-ppc64-gnu@4.52.4':
resolution: {integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-ppc64-gnu@4.59.0':
resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-ppc64-musl@4.59.0':
resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==}
cpu: [ppc64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-riscv64-gnu@4.34.8':
resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.52.4':
resolution: {integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.59.0':
resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.52.4':
resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==}
cpu: [riscv64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-riscv64-musl@4.59.0':
resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==}
cpu: [riscv64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.34.8':
resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-s390x-gnu@4.52.4':
resolution: {integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-s390x-gnu@4.59.0':
resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.34.8':
resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.52.4':
resolution: {integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.59.0':
resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.34.8':
resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-x64-musl@4.52.4':
resolution: {integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-x64-musl@4.59.0':
resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-openbsd-x64@4.59.0':
resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==}
@@ -5365,8 +5416,8 @@ packages:
'@types/node-forge@1.3.11':
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
- '@types/node@22.13.8':
- resolution: {integrity: sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==}
+ '@types/node@24.12.2':
+ resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==}
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
@@ -13792,8 +13843,8 @@ packages:
resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==}
engines: {node: '>=0.10.0'}
- undici-types@6.20.0:
- resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
+ undici-types@7.16.0:
+ resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
unicode-canonical-property-names-ecmascript@2.0.0:
resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
@@ -14777,13 +14828,13 @@ snapshots:
transitivePeerDependencies:
- chokidar
- '@angular-devkit/build-angular@19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@22.13.8)(chokidar@4.0.1)(html-webpack-plugin@5.6.0(webpack@5.91.0))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(jiti@1.21.0)(karma@6.4.3)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(protractor@7.0.0)(stylus@0.57.0)(typescript@5.5.4)(vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))(yaml@2.8.1)':
+ '@angular-devkit/build-angular@19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@24.12.2)(chokidar@4.0.1)(html-webpack-plugin@5.6.0(webpack@5.91.0))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)))(jiti@1.21.0)(karma@6.4.3)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(protractor@7.0.0)(stylus@0.57.0)(typescript@5.5.4)(vite@6.3.6(@types/node@24.12.2)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))(yaml@2.8.1)':
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1902.17(chokidar@4.0.1)
'@angular-devkit/build-webpack': 0.1902.17(chokidar@4.0.1)(webpack-dev-server@5.2.2(webpack@5.91.0))(webpack@5.98.0(esbuild@0.25.4))
'@angular-devkit/core': 19.2.17(chokidar@4.0.1)
- '@angular/build': 19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@22.13.8)(chokidar@4.0.1)(jiti@1.21.0)(karma@6.4.3)(less@4.2.2)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(postcss@8.5.2)(stylus@0.57.0)(terser@5.39.0)(typescript@5.5.4)(yaml@2.8.1)
+ '@angular/build': 19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@24.12.2)(chokidar@4.0.1)(jiti@1.21.0)(karma@6.4.3)(less@4.2.2)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(postcss@8.5.2)(stylus@0.57.0)(terser@5.39.0)(typescript@5.5.4)(yaml@2.8.1)
'@angular/compiler-cli': 19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4)
'@babel/core': 7.26.10
'@babel/generator': 7.26.10
@@ -14796,7 +14847,7 @@ snapshots:
'@babel/runtime': 7.26.10
'@discoveryjs/json-ext': 0.6.3
'@ngtools/webpack': 19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.98.0(esbuild@0.25.4))
- '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))
+ '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.3.6(@types/node@24.12.2)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))
ansi-colors: 4.1.3
autoprefixer: 10.4.20(postcss@8.5.2)
babel-loader: 9.2.1(@babel/core@7.26.10)(webpack@5.98.0(esbuild@0.25.4))
@@ -14838,7 +14889,7 @@ snapshots:
webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.0(webpack@5.91.0))(webpack@5.98.0(esbuild@0.25.4))
optionalDependencies:
esbuild: 0.25.4
- jest: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ jest: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
jest-environment-jsdom: 29.7.0
karma: 6.4.3
ng-packagr: 19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4)
@@ -14976,7 +15027,7 @@ snapshots:
'@angular/core': 19.2.20(rxjs@6.6.7)(zone.js@0.15.1)
tslib: 2.6.3
- '@angular/build@19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@22.13.8)(chokidar@4.0.1)(jiti@1.21.0)(karma@6.4.3)(less@4.2.2)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(postcss@8.5.2)(stylus@0.57.0)(terser@5.39.0)(typescript@5.5.4)(yaml@2.8.1)':
+ '@angular/build@19.2.17(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(@angular/compiler@19.2.20)(@types/node@24.12.2)(chokidar@4.0.1)(jiti@1.21.0)(karma@6.4.3)(less@4.2.2)(ng-packagr@19.2.2(@angular/compiler-cli@19.2.20(@angular/compiler@19.2.20)(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(postcss@8.5.2)(stylus@0.57.0)(terser@5.39.0)(typescript@5.5.4)(yaml@2.8.1)':
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1902.17(chokidar@4.0.1)
@@ -14986,8 +15037,8 @@ snapshots:
'@babel/helper-annotate-as-pure': 7.25.9
'@babel/helper-split-export-declaration': 7.24.7
'@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10)
- '@inquirer/confirm': 5.1.6(@types/node@22.13.8)
- '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))
+ '@inquirer/confirm': 5.1.6(@types/node@24.12.2)
+ '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.3.6(@types/node@24.12.2)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))
beasties: 0.3.2
browserslist: 4.24.2
esbuild: 0.25.4
@@ -15005,7 +15056,7 @@ snapshots:
semver: 7.7.1
source-map-support: 0.5.21
typescript: 5.5.4
- vite: 6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.12.2)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1)
watchpack: 2.4.2
optionalDependencies:
karma: 6.4.3
@@ -15034,13 +15085,13 @@ snapshots:
rxjs: 6.6.7
tslib: 2.6.3
- '@angular/cli@19.2.22(@types/node@22.13.8)(chokidar@4.0.1)':
+ '@angular/cli@19.2.22(@types/node@24.12.2)(chokidar@4.0.1)':
dependencies:
'@angular-devkit/architect': 0.1902.22(chokidar@4.0.1)
'@angular-devkit/core': 19.2.22(chokidar@4.0.1)
'@angular-devkit/schematics': 19.2.22(chokidar@4.0.1)
- '@inquirer/prompts': 7.3.2(@types/node@22.13.8)
- '@listr2/prompt-adapter-inquirer': 2.0.18(@inquirer/prompts@7.3.2(@types/node@22.13.8))
+ '@inquirer/prompts': 7.3.2(@types/node@24.12.2)
+ '@listr2/prompt-adapter-inquirer': 2.0.18(@inquirer/prompts@7.3.2(@types/node@24.12.2))
'@schematics/angular': 19.2.22(chokidar@4.0.1)
'@yarnpkg/lockfile': 1.1.0
ini: 5.0.0
@@ -17264,124 +17315,124 @@ snapshots:
'@inquirer/ansi@1.0.2': {}
- '@inquirer/checkbox@4.3.0(@types/node@22.13.8)':
+ '@inquirer/checkbox@4.3.0(@types/node@24.12.2)':
dependencies:
'@inquirer/ansi': 1.0.1
- '@inquirer/core': 10.3.0(@types/node@22.13.8)
+ '@inquirer/core': 10.3.0(@types/node@24.12.2)
'@inquirer/figures': 1.0.14
- '@inquirer/type': 3.0.9(@types/node@22.13.8)
+ '@inquirer/type': 3.0.9(@types/node@24.12.2)
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/checkbox@4.3.2(@types/node@22.13.8)':
+ '@inquirer/checkbox@4.3.2(@types/node@24.12.2)':
dependencies:
'@inquirer/ansi': 1.0.2
- '@inquirer/core': 10.3.2(@types/node@22.13.8)
+ '@inquirer/core': 10.3.2(@types/node@24.12.2)
'@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@22.13.8)
+ '@inquirer/type': 3.0.10(@types/node@24.12.2)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/confirm@5.1.21(@types/node@22.13.8)':
+ '@inquirer/confirm@5.1.21(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@22.13.8)
- '@inquirer/type': 3.0.10(@types/node@22.13.8)
+ '@inquirer/core': 10.3.2(@types/node@24.12.2)
+ '@inquirer/type': 3.0.10(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/confirm@5.1.6(@types/node@22.13.8)':
+ '@inquirer/confirm@5.1.6(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@22.13.8)
- '@inquirer/type': 3.0.8(@types/node@22.13.8)
+ '@inquirer/core': 10.2.2(@types/node@24.12.2)
+ '@inquirer/type': 3.0.8(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/core@10.2.2(@types/node@22.13.8)':
+ '@inquirer/core@10.2.2(@types/node@24.12.2)':
dependencies:
'@inquirer/ansi': 1.0.0
'@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@22.13.8)
+ '@inquirer/type': 3.0.8(@types/node@24.12.2)
cli-width: 4.1.0
mute-stream: 2.0.0
signal-exit: 4.1.0
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/core@10.3.0(@types/node@22.13.8)':
+ '@inquirer/core@10.3.0(@types/node@24.12.2)':
dependencies:
'@inquirer/ansi': 1.0.1
'@inquirer/figures': 1.0.14
- '@inquirer/type': 3.0.9(@types/node@22.13.8)
+ '@inquirer/type': 3.0.9(@types/node@24.12.2)
cli-width: 4.1.0
mute-stream: 2.0.0
signal-exit: 4.1.0
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/core@10.3.2(@types/node@22.13.8)':
+ '@inquirer/core@10.3.2(@types/node@24.12.2)':
dependencies:
'@inquirer/ansi': 1.0.2
'@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@22.13.8)
+ '@inquirer/type': 3.0.10(@types/node@24.12.2)
cli-width: 4.1.0
mute-stream: 2.0.0
signal-exit: 4.1.0
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/editor@4.2.21(@types/node@22.13.8)':
+ '@inquirer/editor@4.2.21(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.0(@types/node@22.13.8)
- '@inquirer/external-editor': 1.0.2(@types/node@22.13.8)
- '@inquirer/type': 3.0.9(@types/node@22.13.8)
+ '@inquirer/core': 10.3.0(@types/node@24.12.2)
+ '@inquirer/external-editor': 1.0.2(@types/node@24.12.2)
+ '@inquirer/type': 3.0.9(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/editor@4.2.23(@types/node@22.13.8)':
+ '@inquirer/editor@4.2.23(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@22.13.8)
- '@inquirer/external-editor': 1.0.3(@types/node@22.13.8)
- '@inquirer/type': 3.0.10(@types/node@22.13.8)
+ '@inquirer/core': 10.3.2(@types/node@24.12.2)
+ '@inquirer/external-editor': 1.0.3(@types/node@24.12.2)
+ '@inquirer/type': 3.0.10(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/expand@4.0.21(@types/node@22.13.8)':
+ '@inquirer/expand@4.0.21(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.0(@types/node@22.13.8)
- '@inquirer/type': 3.0.9(@types/node@22.13.8)
+ '@inquirer/core': 10.3.0(@types/node@24.12.2)
+ '@inquirer/type': 3.0.9(@types/node@24.12.2)
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/expand@4.0.23(@types/node@22.13.8)':
+ '@inquirer/expand@4.0.23(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@22.13.8)
- '@inquirer/type': 3.0.10(@types/node@22.13.8)
+ '@inquirer/core': 10.3.2(@types/node@24.12.2)
+ '@inquirer/type': 3.0.10(@types/node@24.12.2)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/external-editor@1.0.2(@types/node@22.13.8)':
+ '@inquirer/external-editor@1.0.2(@types/node@24.12.2)':
dependencies:
chardet: 2.1.0
iconv-lite: 0.7.0
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/external-editor@1.0.3(@types/node@22.13.8)':
+ '@inquirer/external-editor@1.0.3(@types/node@24.12.2)':
dependencies:
chardet: 2.1.1
iconv-lite: 0.7.0
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@inquirer/figures@1.0.13': {}
@@ -17389,149 +17440,149 @@ snapshots:
'@inquirer/figures@1.0.15': {}
- '@inquirer/input@4.2.5(@types/node@22.13.8)':
+ '@inquirer/input@4.2.5(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.0(@types/node@22.13.8)
- '@inquirer/type': 3.0.9(@types/node@22.13.8)
+ '@inquirer/core': 10.3.0(@types/node@24.12.2)
+ '@inquirer/type': 3.0.9(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/input@4.3.1(@types/node@22.13.8)':
+ '@inquirer/input@4.3.1(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@22.13.8)
- '@inquirer/type': 3.0.10(@types/node@22.13.8)
+ '@inquirer/core': 10.3.2(@types/node@24.12.2)
+ '@inquirer/type': 3.0.10(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/number@3.0.21(@types/node@22.13.8)':
+ '@inquirer/number@3.0.21(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.0(@types/node@22.13.8)
- '@inquirer/type': 3.0.9(@types/node@22.13.8)
+ '@inquirer/core': 10.3.0(@types/node@24.12.2)
+ '@inquirer/type': 3.0.9(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/number@3.0.23(@types/node@22.13.8)':
+ '@inquirer/number@3.0.23(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@22.13.8)
- '@inquirer/type': 3.0.10(@types/node@22.13.8)
+ '@inquirer/core': 10.3.2(@types/node@24.12.2)
+ '@inquirer/type': 3.0.10(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/password@4.0.21(@types/node@22.13.8)':
+ '@inquirer/password@4.0.21(@types/node@24.12.2)':
dependencies:
'@inquirer/ansi': 1.0.1
- '@inquirer/core': 10.3.0(@types/node@22.13.8)
- '@inquirer/type': 3.0.9(@types/node@22.13.8)
+ '@inquirer/core': 10.3.0(@types/node@24.12.2)
+ '@inquirer/type': 3.0.9(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/password@4.0.23(@types/node@22.13.8)':
+ '@inquirer/password@4.0.23(@types/node@24.12.2)':
dependencies:
'@inquirer/ansi': 1.0.2
- '@inquirer/core': 10.3.2(@types/node@22.13.8)
- '@inquirer/type': 3.0.10(@types/node@22.13.8)
+ '@inquirer/core': 10.3.2(@types/node@24.12.2)
+ '@inquirer/type': 3.0.10(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
-
- '@inquirer/prompts@7.10.1(@types/node@22.13.8)':
- dependencies:
- '@inquirer/checkbox': 4.3.2(@types/node@22.13.8)
- '@inquirer/confirm': 5.1.21(@types/node@22.13.8)
- '@inquirer/editor': 4.2.23(@types/node@22.13.8)
- '@inquirer/expand': 4.0.23(@types/node@22.13.8)
- '@inquirer/input': 4.3.1(@types/node@22.13.8)
- '@inquirer/number': 3.0.23(@types/node@22.13.8)
- '@inquirer/password': 4.0.23(@types/node@22.13.8)
- '@inquirer/rawlist': 4.1.11(@types/node@22.13.8)
- '@inquirer/search': 3.2.2(@types/node@22.13.8)
- '@inquirer/select': 4.4.2(@types/node@22.13.8)
+ '@types/node': 24.12.2
+
+ '@inquirer/prompts@7.10.1(@types/node@24.12.2)':
+ dependencies:
+ '@inquirer/checkbox': 4.3.2(@types/node@24.12.2)
+ '@inquirer/confirm': 5.1.21(@types/node@24.12.2)
+ '@inquirer/editor': 4.2.23(@types/node@24.12.2)
+ '@inquirer/expand': 4.0.23(@types/node@24.12.2)
+ '@inquirer/input': 4.3.1(@types/node@24.12.2)
+ '@inquirer/number': 3.0.23(@types/node@24.12.2)
+ '@inquirer/password': 4.0.23(@types/node@24.12.2)
+ '@inquirer/rawlist': 4.1.11(@types/node@24.12.2)
+ '@inquirer/search': 3.2.2(@types/node@24.12.2)
+ '@inquirer/select': 4.4.2(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
-
- '@inquirer/prompts@7.3.2(@types/node@22.13.8)':
- dependencies:
- '@inquirer/checkbox': 4.3.0(@types/node@22.13.8)
- '@inquirer/confirm': 5.1.6(@types/node@22.13.8)
- '@inquirer/editor': 4.2.21(@types/node@22.13.8)
- '@inquirer/expand': 4.0.21(@types/node@22.13.8)
- '@inquirer/input': 4.2.5(@types/node@22.13.8)
- '@inquirer/number': 3.0.21(@types/node@22.13.8)
- '@inquirer/password': 4.0.21(@types/node@22.13.8)
- '@inquirer/rawlist': 4.1.9(@types/node@22.13.8)
- '@inquirer/search': 3.2.0(@types/node@22.13.8)
- '@inquirer/select': 4.4.0(@types/node@22.13.8)
+ '@types/node': 24.12.2
+
+ '@inquirer/prompts@7.3.2(@types/node@24.12.2)':
+ dependencies:
+ '@inquirer/checkbox': 4.3.0(@types/node@24.12.2)
+ '@inquirer/confirm': 5.1.6(@types/node@24.12.2)
+ '@inquirer/editor': 4.2.21(@types/node@24.12.2)
+ '@inquirer/expand': 4.0.21(@types/node@24.12.2)
+ '@inquirer/input': 4.2.5(@types/node@24.12.2)
+ '@inquirer/number': 3.0.21(@types/node@24.12.2)
+ '@inquirer/password': 4.0.21(@types/node@24.12.2)
+ '@inquirer/rawlist': 4.1.9(@types/node@24.12.2)
+ '@inquirer/search': 3.2.0(@types/node@24.12.2)
+ '@inquirer/select': 4.4.0(@types/node@24.12.2)
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/rawlist@4.1.11(@types/node@22.13.8)':
+ '@inquirer/rawlist@4.1.11(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@22.13.8)
- '@inquirer/type': 3.0.10(@types/node@22.13.8)
+ '@inquirer/core': 10.3.2(@types/node@24.12.2)
+ '@inquirer/type': 3.0.10(@types/node@24.12.2)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/rawlist@4.1.9(@types/node@22.13.8)':
+ '@inquirer/rawlist@4.1.9(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.0(@types/node@22.13.8)
- '@inquirer/type': 3.0.9(@types/node@22.13.8)
+ '@inquirer/core': 10.3.0(@types/node@24.12.2)
+ '@inquirer/type': 3.0.9(@types/node@24.12.2)
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/search@3.2.0(@types/node@22.13.8)':
+ '@inquirer/search@3.2.0(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.0(@types/node@22.13.8)
+ '@inquirer/core': 10.3.0(@types/node@24.12.2)
'@inquirer/figures': 1.0.14
- '@inquirer/type': 3.0.9(@types/node@22.13.8)
+ '@inquirer/type': 3.0.9(@types/node@24.12.2)
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/search@3.2.2(@types/node@22.13.8)':
+ '@inquirer/search@3.2.2(@types/node@24.12.2)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@22.13.8)
+ '@inquirer/core': 10.3.2(@types/node@24.12.2)
'@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@22.13.8)
+ '@inquirer/type': 3.0.10(@types/node@24.12.2)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/select@4.4.0(@types/node@22.13.8)':
+ '@inquirer/select@4.4.0(@types/node@24.12.2)':
dependencies:
'@inquirer/ansi': 1.0.1
- '@inquirer/core': 10.3.0(@types/node@22.13.8)
+ '@inquirer/core': 10.3.0(@types/node@24.12.2)
'@inquirer/figures': 1.0.14
- '@inquirer/type': 3.0.9(@types/node@22.13.8)
+ '@inquirer/type': 3.0.9(@types/node@24.12.2)
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/select@4.4.2(@types/node@22.13.8)':
+ '@inquirer/select@4.4.2(@types/node@24.12.2)':
dependencies:
'@inquirer/ansi': 1.0.2
- '@inquirer/core': 10.3.2(@types/node@22.13.8)
+ '@inquirer/core': 10.3.2(@types/node@24.12.2)
'@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@22.13.8)
+ '@inquirer/type': 3.0.10(@types/node@24.12.2)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@inquirer/type@1.5.5':
dependencies:
mute-stream: 1.0.0
- '@inquirer/type@3.0.10(@types/node@22.13.8)':
+ '@inquirer/type@3.0.10(@types/node@24.12.2)':
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/type@3.0.8(@types/node@22.13.8)':
+ '@inquirer/type@3.0.8(@types/node@24.12.2)':
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@inquirer/type@3.0.9(@types/node@22.13.8)':
+ '@inquirer/type@3.0.9(@types/node@24.12.2)':
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@isaacs/balanced-match@4.0.1': {}
@@ -17572,27 +17623,27 @@ snapshots:
'@jest/console@29.7.0':
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
slash: 3.0.0
- '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))':
+ '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0(node-notifier@8.0.2)
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ jest-config: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -17621,7 +17672,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
jest-mock: 29.7.0
'@jest/expect-utils@29.7.0':
@@ -17639,7 +17690,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -17663,7 +17714,7 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.31
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit: 0.1.2
@@ -17739,7 +17790,7 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/yargs': 17.0.35
chalk: 4.1.2
@@ -17805,7 +17856,7 @@ snapshots:
'@leichtgewicht/ip-codec@2.0.5': {}
- '@lerna/create@9.0.1(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(typescript@5.5.4)':
+ '@lerna/create@9.0.1(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(typescript@5.5.4)':
dependencies:
'@npmcli/arborist': 9.1.6
'@npmcli/package-json': 7.0.2
@@ -17832,7 +17883,7 @@ snapshots:
has-unicode: 2.0.1
ini: 1.3.8
init-package-json: 8.2.2
- inquirer: 12.9.6(@types/node@22.13.8)
+ inquirer: 12.9.6(@types/node@24.12.2)
is-ci: 3.0.1
is-stream: 2.0.0
js-yaml: 4.1.0
@@ -17883,9 +17934,9 @@ snapshots:
- supports-color
- typescript
- '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.3.2(@types/node@22.13.8))':
+ '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.3.2(@types/node@24.12.2))':
dependencies:
- '@inquirer/prompts': 7.3.2(@types/node@22.13.8)
+ '@inquirer/prompts': 7.3.2(@types/node@24.12.2)
'@inquirer/type': 1.5.5
'@lmdb/lmdb-darwin-arm64@3.2.6':
@@ -17923,23 +17974,23 @@ snapshots:
'@mdi/font@7.4.47': {}
- '@microsoft/api-extractor-model@7.28.13(@types/node@22.13.8)':
+ '@microsoft/api-extractor-model@7.28.13(@types/node@24.12.2)':
dependencies:
'@microsoft/tsdoc': 0.14.2
'@microsoft/tsdoc-config': 0.16.2
- '@rushstack/node-core-library': 4.0.2(@types/node@22.13.8)
+ '@rushstack/node-core-library': 4.0.2(@types/node@24.12.2)
transitivePeerDependencies:
- '@types/node'
- '@microsoft/api-extractor@7.43.0(@types/node@22.13.8)':
+ '@microsoft/api-extractor@7.43.0(@types/node@24.12.2)':
dependencies:
- '@microsoft/api-extractor-model': 7.28.13(@types/node@22.13.8)
+ '@microsoft/api-extractor-model': 7.28.13(@types/node@24.12.2)
'@microsoft/tsdoc': 0.14.2
'@microsoft/tsdoc-config': 0.16.2
- '@rushstack/node-core-library': 4.0.2(@types/node@22.13.8)
+ '@rushstack/node-core-library': 4.0.2(@types/node@24.12.2)
'@rushstack/rig-package': 0.5.2
- '@rushstack/terminal': 0.10.0(@types/node@22.13.8)
- '@rushstack/ts-command-line': 4.19.1(@types/node@22.13.8)
+ '@rushstack/terminal': 0.10.0(@types/node@24.12.2)
+ '@rushstack/ts-command-line': 4.19.1(@types/node@24.12.2)
lodash: 4.17.23
minimatch: 3.0.5
resolve: 1.22.8
@@ -18859,7 +18910,7 @@ snapshots:
'@rushstack/eslint-patch@1.10.4': {}
- '@rushstack/node-core-library@4.0.2(@types/node@22.13.8)':
+ '@rushstack/node-core-library@4.0.2(@types/node@24.12.2)':
dependencies:
fs-extra: 7.0.1
import-lazy: 4.0.0
@@ -18868,23 +18919,23 @@ snapshots:
semver: 7.5.4
z-schema: 5.0.5
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@rushstack/rig-package@0.5.2':
dependencies:
resolve: 1.22.8
strip-json-comments: 3.1.1
- '@rushstack/terminal@0.10.0(@types/node@22.13.8)':
+ '@rushstack/terminal@0.10.0(@types/node@24.12.2)':
dependencies:
- '@rushstack/node-core-library': 4.0.2(@types/node@22.13.8)
+ '@rushstack/node-core-library': 4.0.2(@types/node@24.12.2)
supports-color: 8.1.1
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@rushstack/ts-command-line@4.19.1(@types/node@22.13.8)':
+ '@rushstack/ts-command-line@4.19.1(@types/node@24.12.2)':
dependencies:
- '@rushstack/terminal': 0.10.0(@types/node@22.13.8)
+ '@rushstack/terminal': 0.10.0(@types/node@24.12.2)
'@types/argparse': 1.0.38
argparse: 1.0.10
string-argv: 0.3.2
@@ -19053,32 +19104,32 @@ snapshots:
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/bonjour@3.5.13':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/chai@4.3.16': {}
'@types/cheerio@0.22.35':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/connect-history-api-fallback@1.5.4':
dependencies:
'@types/express-serve-static-core': 4.19.1
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/connect@3.4.38':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/cookie@0.4.1': {}
'@types/cors@2.8.17':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/enzyme@3.10.18':
dependencies:
@@ -19103,7 +19154,7 @@ snapshots:
'@types/express-serve-static-core@4.19.1':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/qs': 6.9.15
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
@@ -19117,20 +19168,20 @@ snapshots:
'@types/fs-extra@8.1.5':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/fs-extra@9.0.13':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/glob@7.2.0':
dependencies:
'@types/minimatch': 5.1.2
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/graceful-fs@4.1.9':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/hoist-non-react-statics@3.3.5':
dependencies:
@@ -19143,11 +19194,11 @@ snapshots:
'@types/http-proxy@1.17.14':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/http-proxy@1.17.15':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/istanbul-lib-coverage@2.0.6': {}
@@ -19168,13 +19219,13 @@ snapshots:
'@types/jsdom@20.0.1':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/tough-cookie': 4.0.5
parse5: 7.1.2
'@types/jsdom@21.1.7':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/tough-cookie': 4.0.5
parse5: 7.1.2
@@ -19198,11 +19249,11 @@ snapshots:
'@types/node-forge@1.3.11':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
- '@types/node@22.13.8':
+ '@types/node@24.12.2':
dependencies:
- undici-types: 6.20.0
+ undici-types: 7.16.0
'@types/normalize-package-data@2.4.4': {}
@@ -19274,7 +19325,7 @@ snapshots:
'@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/serve-index@1.9.4':
dependencies:
@@ -19283,12 +19334,12 @@ snapshots:
'@types/serve-static@1.15.7':
dependencies:
'@types/http-errors': 2.0.4
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/send': 0.17.4
'@types/sockjs@0.3.36':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/splitpanes@2.2.6':
dependencies:
@@ -19306,7 +19357,7 @@ snapshots:
'@types/ws@8.5.10':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
'@types/yargs-parser@21.0.3': {}
@@ -19501,16 +19552,16 @@ snapshots:
- encoding
- supports-color
- '@vitejs/plugin-basic-ssl@1.2.0(vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))':
+ '@vitejs/plugin-basic-ssl@1.2.0(vite@6.3.6(@types/node@24.12.2)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1))':
dependencies:
- vite: 6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.12.2)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1)
- '@vitejs/plugin-vue@5.1.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))':
+ '@vitejs/plugin-vue@5.1.2(vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))':
dependencies:
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ vite: 5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
vue: 3.5.17(typescript@5.5.4)
- '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))':
+ '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@24.12.2)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))':
dependencies:
'@ampproject/remapping': 2.3.0
'@bcoe/v8-coverage': 0.2.3
@@ -19525,7 +19576,7 @@ snapshots:
std-env: 3.7.0
strip-literal: 2.1.0
test-exclude: 6.0.0
- vitest: 1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ vitest: 1.6.0(@types/node@24.12.2)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
transitivePeerDependencies:
- supports-color
@@ -20151,7 +20202,7 @@ snapshots:
'@vue/tsconfig@0.5.1': {}
- '@vue/vue3-jest@29.2.6(@babel/core@7.24.5)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4)(vue@3.5.17(typescript@5.5.4))':
+ '@vue/vue3-jest@29.2.6(@babel/core@7.24.5)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)))(typescript@5.5.4)(vue@3.5.17(typescript@5.5.4))':
dependencies:
'@babel/core': 7.24.5
'@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.24.5)
@@ -20159,7 +20210,7 @@ snapshots:
chalk: 2.4.2
convert-source-map: 1.9.0
css-tree: 2.3.1
- jest: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ jest: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
source-map: 0.5.6
tsconfig: 7.0.0
vue: 3.5.17(typescript@5.5.4)
@@ -21976,13 +22027,13 @@ snapshots:
safe-buffer: 5.2.1
sha.js: 2.4.11
- create-jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)):
+ create-jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ jest-config: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -22643,7 +22694,7 @@ snapshots:
dependencies:
'@types/cookie': 0.4.1
'@types/cors': 2.8.17
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.4.2
@@ -24431,17 +24482,17 @@ snapshots:
dependencies:
tslib: 2.6.3
- inquirer@12.9.6(@types/node@22.13.8):
+ inquirer@12.9.6(@types/node@24.12.2):
dependencies:
'@inquirer/ansi': 1.0.1
- '@inquirer/core': 10.3.0(@types/node@22.13.8)
- '@inquirer/prompts': 7.10.1(@types/node@22.13.8)
- '@inquirer/type': 3.0.9(@types/node@22.13.8)
+ '@inquirer/core': 10.3.0(@types/node@24.12.2)
+ '@inquirer/prompts': 7.10.1(@types/node@24.12.2)
+ '@inquirer/type': 3.0.9(@types/node@24.12.2)
mute-stream: 2.0.0
run-async: 4.0.6
rxjs: 7.8.2
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
internal-slot@1.0.7:
dependencies:
@@ -24858,7 +24909,7 @@ snapshots:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
chalk: 4.1.2
co: 4.6.0
dedent: 1.5.3(babel-plugin-macros@3.1.0)
@@ -24878,16 +24929,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)):
+ jest-cli@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ create-jest: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
exit: 0.1.2
import-local: 3.1.0
- jest-config: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ jest-config: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -24899,7 +24950,7 @@ snapshots:
- supports-color
- ts-node
- jest-config@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)):
+ jest-config@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)):
dependencies:
'@babel/core': 7.26.10
'@jest/test-sequencer': 29.7.0
@@ -24924,8 +24975,8 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 22.13.8
- ts-node: 10.9.2(@types/node@22.13.8)(typescript@5.5.4)
+ '@types/node': 24.12.2
+ ts-node: 10.9.2(@types/node@24.12.2)(typescript@5.5.4)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -24962,7 +25013,7 @@ snapshots:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/jsdom': 20.0.1
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
jest-mock: 29.7.0
jest-util: 29.7.0
jsdom: 20.0.3
@@ -24976,7 +25027,7 @@ snapshots:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -24986,7 +25037,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -25025,7 +25076,7 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
jest-util: 29.7.0
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@@ -25060,7 +25111,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -25088,7 +25139,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
chalk: 4.1.2
cjs-module-lexer: 1.3.1
collect-v8-coverage: 1.0.2
@@ -25134,7 +25185,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -25153,7 +25204,7 @@ snapshots:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -25162,23 +25213,23 @@ snapshots:
jest-worker@27.5.1:
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
merge-stream: 2.0.0
supports-color: 8.1.1
jest-worker@29.7.0:
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)):
+ jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
'@jest/types': 29.6.3
import-local: 3.1.0
- jest-cli: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ jest-cli: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
optionalDependencies:
node-notifier: 8.0.2
transitivePeerDependencies:
@@ -25547,9 +25598,9 @@ snapshots:
dependencies:
flush-write-stream: 1.1.1
- lerna@9.0.1(@types/node@22.13.8)(babel-plugin-macros@3.1.0):
+ lerna@9.0.1(@types/node@24.12.2)(babel-plugin-macros@3.1.0):
dependencies:
- '@lerna/create': 9.0.1(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(typescript@5.5.4)
+ '@lerna/create': 9.0.1(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(typescript@5.5.4)
'@npmcli/arborist': 9.1.6
'@npmcli/package-json': 7.0.2
'@npmcli/run-script': 10.0.2
@@ -25579,7 +25630,7 @@ snapshots:
import-local: 3.1.0
ini: 1.3.8
init-package-json: 8.2.2
- inquirer: 12.9.6(@types/node@22.13.8)
+ inquirer: 12.9.6(@types/node@24.12.2)
is-ci: 3.0.1
is-stream: 2.0.0
jest-diff: 30.2.0
@@ -27396,13 +27447,13 @@ snapshots:
dependencies:
postcss: 8.5.6
- postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)):
+ postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)):
dependencies:
lilconfig: 2.1.0
yaml: 1.10.2
optionalDependencies:
postcss: 8.5.6
- ts-node: 10.9.2(@types/node@22.13.8)(typescript@5.5.4)
+ ts-node: 10.9.2(@types/node@24.12.2)(typescript@5.5.4)
postcss-loader@6.2.1(postcss@8.4.38)(webpack@5.91.0):
dependencies:
@@ -28379,7 +28430,7 @@ snapshots:
'@rollup/pluginutils': 5.1.0(rollup@2.80.0)
rollup: 2.80.0
- rollup-plugin-postcss@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)):
+ rollup-plugin-postcss@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)):
dependencies:
chalk: 4.1.2
concat-with-sourcemaps: 1.1.0
@@ -28388,7 +28439,7 @@ snapshots:
p-queue: 6.6.2
pify: 5.0.0
postcss: 8.5.6
- postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
postcss-modules: 4.3.1(postcss@8.5.6)
promise.series: 0.2.0
resolve: 1.22.8
@@ -29582,12 +29633,12 @@ snapshots:
dependencies:
typescript: 5.5.4
- ts-jest@29.4.5(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4):
+ ts-jest@29.4.5(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)))(typescript@5.5.4):
dependencies:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
handlebars: 4.7.8
- jest: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ jest: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
json5: 2.2.3
lodash.memoize: 4.1.2
make-error: 1.3.6
@@ -29602,12 +29653,12 @@ snapshots:
babel-jest: 29.7.0(@babel/core@7.24.5)
jest-util: 29.7.0
- ts-jest@29.4.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4):
+ ts-jest@29.4.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest-util@29.7.0)(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4)))(typescript@5.5.4):
dependencies:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
handlebars: 4.7.8
- jest: 29.7.0(@types/node@22.13.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))
+ jest: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4))
json5: 2.2.3
lodash.memoize: 4.1.2
make-error: 1.3.6
@@ -29632,14 +29683,14 @@ snapshots:
typescript: 5.5.4
webpack: 5.91.0(webpack-cli@5.1.4)
- ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4):
+ ts-node@10.9.2(@types/node@24.12.2)(typescript@5.5.4):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
acorn: 8.11.3
acorn-walk: 8.3.2
arg: 4.1.3
@@ -29807,7 +29858,7 @@ snapshots:
unc-path-regex@0.1.2: {}
- undici-types@6.20.0: {}
+ undici-types@7.16.0: {}
unicode-canonical-property-names-ecmascript@2.0.0: {}
@@ -29991,13 +30042,13 @@ snapshots:
remove-trailing-separator: 1.1.0
replace-ext: 1.0.1
- vite-node@1.6.0(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1):
+ vite-node@1.6.0(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1):
dependencies:
cac: 6.7.14
debug: 4.3.7
pathe: 1.1.2
picocolors: 1.1.1
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ vite: 5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
transitivePeerDependencies:
- '@types/node'
- less
@@ -30009,9 +30060,9 @@ snapshots:
- supports-color
- terser
- vite-plugin-dts@3.9.1(@types/node@22.13.8)(rollup@4.59.0)(typescript@5.5.4)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)):
+ vite-plugin-dts@3.9.1(@types/node@24.12.2)(rollup@4.59.0)(typescript@5.5.4)(vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)):
dependencies:
- '@microsoft/api-extractor': 7.43.0(@types/node@22.13.8)
+ '@microsoft/api-extractor': 7.43.0(@types/node@24.12.2)
'@rollup/pluginutils': 5.1.0(rollup@4.59.0)
'@vue/language-core': 1.8.27(typescript@5.5.4)
debug: 4.3.4
@@ -30020,54 +30071,54 @@ snapshots:
typescript: 5.5.4
vue-tsc: 1.8.27(typescript@5.5.4)
optionalDependencies:
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ vite: 5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
- vite-plugin-node-polyfills@0.21.0(rollup@4.59.0)(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)):
+ vite-plugin-node-polyfills@0.21.0(rollup@4.59.0)(vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)):
dependencies:
'@rollup/plugin-inject': 5.0.5(rollup@4.59.0)
node-stdlib-browser: 1.2.0
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ vite: 5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
transitivePeerDependencies:
- rollup
- vite-plugin-static-copy@2.3.2(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)):
+ vite-plugin-static-copy@2.3.2(vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)):
dependencies:
chokidar: 3.6.0
fast-glob: 3.3.3
fs-extra: 11.3.2
p-map: 7.0.4
picocolors: 1.1.1
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ vite: 5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
- vite-plugin-vuetify@2.1.1(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0):
+ vite-plugin-vuetify@2.1.1(vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0):
dependencies:
'@vuetify/loader-shared': 2.1.0(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0)
debug: 4.3.7
upath: 2.0.1
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ vite: 5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
vue: 3.5.17(typescript@5.5.4)
vuetify: 3.9.0(typescript@5.5.4)(vite-plugin-vuetify@2.1.1)(vue@3.5.17(typescript@5.5.4))
transitivePeerDependencies:
- supports-color
- vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1):
+ vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1):
dependencies:
esbuild: 0.21.5
postcss: 8.5.6
rollup: 4.59.0
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
fsevents: 2.3.3
less: 4.2.2
sass: 1.93.2
stylus: 0.57.0
terser: 5.46.1
- vite@6.3.6(@types/node@22.13.8)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1):
+ vite@6.3.6(@types/node@24.12.2)(jiti@1.21.0)(less@4.2.2)(sass@1.85.0)(stylus@0.57.0)(terser@5.39.0)(yaml@2.8.1):
dependencies:
esbuild: 0.25.4
fdir: 6.5.0(picomatch@4.0.2)
@@ -30076,7 +30127,7 @@ snapshots:
rollup: 4.59.0
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
fsevents: 2.3.3
jiti: 1.21.0
less: 4.2.2
@@ -30085,7 +30136,7 @@ snapshots:
terser: 5.39.0
yaml: 2.8.1
- vitest@1.6.0(@types/node@22.13.8)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1):
+ vitest@1.6.0(@types/node@24.12.2)(jsdom@27.2.0)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1):
dependencies:
'@vitest/expect': 1.6.0
'@vitest/runner': 1.6.0
@@ -30104,11 +30155,11 @@ snapshots:
strip-literal: 2.1.0
tinybench: 2.9.0
tinypool: 0.8.4
- vite: 5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
- vite-node: 1.6.0(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ vite: 5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
+ vite-node: 1.6.0(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1)
why-is-node-running: 2.3.0
optionalDependencies:
- '@types/node': 22.13.8
+ '@types/node': 24.12.2
jsdom: 27.2.0
transitivePeerDependencies:
- less
@@ -30271,7 +30322,7 @@ snapshots:
vue: 3.5.17(typescript@5.5.4)
optionalDependencies:
typescript: 5.5.4
- vite-plugin-vuetify: 2.1.1(vite@5.4.21(@types/node@22.13.8)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0)
+ vite-plugin-vuetify: 2.1.1(vite@5.4.21(@types/node@24.12.2)(less@4.2.2)(sass@1.93.2)(stylus@0.57.0)(terser@5.46.1))(vue@3.5.17(typescript@5.5.4))(vuetify@3.9.0)
w3c-hr-time@1.0.2:
dependencies:
From 154369eb68428557d786128e8bb9a747a4ec718b Mon Sep 17 00:00:00 2001
From: Daniel Shuy <17351764+daniel-shuy@users.noreply.github.com>
Date: Tue, 5 May 2026 04:34:05 +0800
Subject: [PATCH 26/29] angular-material: Add OneOfEnumControlRenderer
angular-material: Add OneOfEnumControlRenderer (#2551)
Adds a new OneOfEnumControlRenderer that handles oneOf enum schemas by
mapping `oneOf.const` to the option value and `oneOf.title` to the
displayed label, allowing labels to differ from the underlying values.
Also renames AutocompleteControlRenderer to EnumControlRenderer for
consistency with other renderer sets, retaining the previous component
selector and exporting the old class name as an alias for backwards
compatibility.
---
...ocomplete.renderer.ts => enum.renderer.ts} | 156 +++---
.../src/library/controls/index.ts | 2 +-
.../angular-material/src/library/index.ts | 9 +-
.../angular-material/src/library/module.ts | 11 +-
.../src/library/other/master-detail/master.ts | 2 +-
.../test/array-layout.spec.ts | 12 +-
...e-control.spec.ts => enum-control.spec.ts} | 34 +-
.../test/one-of-enum-control.spec.ts | 506 ++++++++++++++++++
8 files changed, 636 insertions(+), 96 deletions(-)
rename packages/angular-material/src/library/controls/{autocomplete.renderer.ts => enum.renderer.ts} (69%)
rename packages/angular-material/test/{autocomplete-control.spec.ts => enum-control.spec.ts} (93%)
create mode 100644 packages/angular-material/test/one-of-enum-control.spec.ts
diff --git a/packages/angular-material/src/library/controls/autocomplete.renderer.ts b/packages/angular-material/src/library/controls/enum.renderer.ts
similarity index 69%
rename from packages/angular-material/src/library/controls/autocomplete.renderer.ts
rename to packages/angular-material/src/library/controls/enum.renderer.ts
index 32e19437e..e6afa2da7 100644
--- a/packages/angular-material/src/library/controls/autocomplete.renderer.ts
+++ b/packages/angular-material/src/library/controls/enum.renderer.ts
@@ -36,8 +36,10 @@ import {
ControlElement,
EnumOption,
isEnumControl,
+ isOneOfEnumControl,
JsonFormsState,
mapStateToEnumControlProps,
+ mapStateToOneOfEnumControlProps,
OwnPropsOfControl,
OwnPropsOfEnum,
RankedTester,
@@ -52,51 +54,53 @@ import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
-@Component({
- selector: 'AutocompleteControlRenderer',
- template: `
-
- {{ label }}
-
-
- @for (option of filteredOptions | async; track option.value) {
-
- {{ option.label }}
-
- }
-
- {{
- description
- }}
- {{ error }}
-
- `,
- styles: [
- `
- :host {
- display: flex;
- flex-direction: row;
- }
- mat-form-field {
- flex: 1 1 auto;
+const template = `
+
+ {{ label }}
+
+
+ @for (option of filteredOptions | async; track option.value) {
+
+ {{ option.label }}
+
}
- `,
- ],
+
+ {{
+ description
+ }}
+ {{ error }}
+
+`;
+
+const style = `
+ :host {
+ display: flex;
+ flex-direction: row;
+ }
+ mat-form-field {
+ flex: 1 1 auto;
+ }
+`;
+
+@Component({
+ selector: 'OneOfEnumControlRenderer',
+ template,
+ styles: [style],
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [
CommonModule,
@@ -106,11 +110,11 @@ import { MatAutocompleteModule } from '@angular/material/autocomplete';
MatAutocompleteModule,
],
})
-export class AutocompleteControlRenderer
+export class OneOfEnumControlRenderer
extends JsonFormsControl
implements OnInit
{
- @Input() options?: EnumOption[] | string[];
+ @Input() options?: EnumOption[];
valuesToTranslatedOptions?: Map;
filteredOptions: Observable;
shouldFilter: boolean;
@@ -123,7 +127,7 @@ export class AutocompleteControlRenderer
protected override mapToProps(
state: JsonFormsState
): StatePropsOfControl & OwnPropsOfEnum {
- return mapStateToEnumControlProps(state, this.getOwnProps());
+ return mapStateToOneOfEnumControlProps(state, this.getOwnProps());
}
getEventValue = (event: any) => event.target.value;
@@ -209,29 +213,51 @@ export class AutocompleteControlRenderer
protected getOwnProps(): OwnPropsOfControl & OwnPropsOfEnum {
return {
...super.getOwnProps(),
- options: this.stringOptionsToEnumOptions(this.options),
+ options: this.options,
};
}
+}
- /**
- * For {@link options} input backwards compatibility
- */
- protected stringOptionsToEnumOptions(
- options: typeof this.options
- ): EnumOption[] | undefined {
- if (!options) {
- return undefined;
- }
+export const oneOfEnumControlTester: RankedTester = rankWith(
+ 5,
+ isOneOfEnumControl
+);
+
+@Component({
+ selector: 'EnumControlRenderer, AutocompleteControlRenderer',
+ template,
+ styles: [style],
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ imports: [
+ CommonModule,
+ ReactiveFormsModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatAutocompleteModule,
+ ],
+})
+export class EnumControlRenderer extends OneOfEnumControlRenderer {
+ // eslint-disable-next-line @angular-eslint/no-input-rename
+ @Input('options')
+ set stringOptions(strOptions: string[]) {
+ this.options = strOptions.map((str) => {
+ return {
+ label: str,
+ value: str,
+ };
+ });
+ }
- return options.every((item) => typeof item === 'string')
- ? options.map((str) => {
- return {
- label: str,
- value: str,
- } satisfies EnumOption;
- })
- : options;
+ protected override mapToProps(
+ state: JsonFormsState
+ ): StatePropsOfControl & OwnPropsOfEnum {
+ return mapStateToEnumControlProps(state, this.getOwnProps());
}
}
+/**
+ * For {@link AutocompleteControlRenderer} class name backwards compatibility
+ */
+export { EnumControlRenderer as AutocompleteControlRenderer };
+
export const enumControlTester: RankedTester = rankWith(2, isEnumControl);
diff --git a/packages/angular-material/src/library/controls/index.ts b/packages/angular-material/src/library/controls/index.ts
index ec7666823..2a721313d 100644
--- a/packages/angular-material/src/library/controls/index.ts
+++ b/packages/angular-material/src/library/controls/index.ts
@@ -29,4 +29,4 @@ export * from './number.renderer';
export * from './range.renderer';
export * from './date.renderer';
export * from './toggle.renderer';
-export * from './autocomplete.renderer';
+export * from './enum.renderer';
diff --git a/packages/angular-material/src/library/index.ts b/packages/angular-material/src/library/index.ts
index 1e8f6e5ec..0035f8840 100644
--- a/packages/angular-material/src/library/index.ts
+++ b/packages/angular-material/src/library/index.ts
@@ -53,9 +53,11 @@ import {
ToggleControlRendererTester,
} from './controls/toggle.renderer';
import {
- AutocompleteControlRenderer,
+ EnumControlRenderer,
enumControlTester,
-} from './controls/autocomplete.renderer';
+ OneOfEnumControlRenderer,
+ oneOfEnumControlTester,
+} from './controls/enum.renderer';
import {
ObjectControlRenderer,
ObjectControlRendererTester,
@@ -105,7 +107,8 @@ export const angularMaterialRenderers: {
{ tester: RangeControlRendererTester, renderer: RangeControlRenderer },
{ tester: DateControlRendererTester, renderer: DateControlRenderer },
{ tester: ToggleControlRendererTester, renderer: ToggleControlRenderer },
- { tester: enumControlTester, renderer: AutocompleteControlRenderer },
+ { tester: enumControlTester, renderer: EnumControlRenderer },
+ { tester: oneOfEnumControlTester, renderer: OneOfEnumControlRenderer },
{ tester: ObjectControlRendererTester, renderer: ObjectControlRenderer },
// layouts
{ tester: verticalLayoutTester, renderer: VerticalLayoutRenderer },
diff --git a/packages/angular-material/src/library/module.ts b/packages/angular-material/src/library/module.ts
index bee96ef8f..f286658e1 100644
--- a/packages/angular-material/src/library/module.ts
+++ b/packages/angular-material/src/library/module.ts
@@ -45,9 +45,12 @@ import { MatTabsModule } from '@angular/material/tabs';
import { MatToolbarModule } from '@angular/material/toolbar';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { JsonFormsModule } from '@jsonforms/angular';
-import { AutocompleteControlRenderer } from './controls/autocomplete.renderer';
import { BooleanControlRenderer } from './controls/boolean.renderer';
import { DateControlRenderer } from './controls/date.renderer';
+import {
+ EnumControlRenderer,
+ OneOfEnumControlRenderer,
+} from './controls/enum.renderer';
import { NumberControlRenderer } from './controls/number.renderer';
import { RangeControlRenderer } from './controls/range.renderer';
import { TextAreaRenderer } from './controls/textarea.renderer';
@@ -104,7 +107,8 @@ import { LayoutChildrenRenderPropsPipe } from './layouts';
MasterListComponent,
JsonFormsDetailComponent,
ObjectControlRenderer,
- AutocompleteControlRenderer,
+ EnumControlRenderer,
+ OneOfEnumControlRenderer,
TableRenderer,
ArrayLayoutRenderer,
LayoutChildrenRenderPropsPipe,
@@ -144,7 +148,8 @@ import { LayoutChildrenRenderPropsPipe } from './layouts';
MasterListComponent,
JsonFormsDetailComponent,
ObjectControlRenderer,
- AutocompleteControlRenderer,
+ EnumControlRenderer,
+ OneOfEnumControlRenderer,
TableRenderer,
ArrayLayoutRenderer,
LayoutChildrenRenderPropsPipe,
diff --git a/packages/angular-material/src/library/other/master-detail/master.ts b/packages/angular-material/src/library/other/master-detail/master.ts
index 7e8ad9e49..ec865c9ef 100644
--- a/packages/angular-material/src/library/other/master-detail/master.ts
+++ b/packages/angular-material/src/library/other/master-detail/master.ts
@@ -101,7 +101,7 @@ export const removeSchemaKeywords = (path: string) => {
mat-icon-button
class="button item-button hide"
(click)="onDeleteClick(i)"
- [ngClass]="{ show: highlightedIdx == i }"
+ [ngClass]="{ show: highlightedIdx === i }"
*ngIf="isEnabled()"
>
delete
diff --git a/packages/angular-material/test/array-layout.spec.ts b/packages/angular-material/test/array-layout.spec.ts
index 47a94dd51..ac8aeef55 100644
--- a/packages/angular-material/test/array-layout.spec.ts
+++ b/packages/angular-material/test/array-layout.spec.ts
@@ -125,11 +125,11 @@ describe('Array layout', () => {
const arrayLayoutElement: HTMLElement = fixture.nativeElement;
const matBadgeElement =
- arrayLayoutElement.querySelector('.mat-badge-content')!;
+ arrayLayoutElement.querySelector('.mat-badge-content');
const noDataElement = arrayLayoutElement.children[0].children[1];
- expect(matBadgeElement.textContent).toBe('1');
+ expect(matBadgeElement?.textContent).toBe('1');
expect(noDataElement.textContent).toBe('No data');
});
});
@@ -149,9 +149,9 @@ describe('Array layout', () => {
const arrayLayoutElement: HTMLElement = fixture.nativeElement;
const matBadgeElement =
- arrayLayoutElement.querySelector('.mat-badge-content')!;
+ arrayLayoutElement.querySelector('.mat-badge-content');
- expect(matBadgeElement.textContent).toBe('2');
+ expect(matBadgeElement?.textContent).toBe('2');
});
});
@@ -170,9 +170,9 @@ describe('Array layout', () => {
const arrayLayoutElement: HTMLElement = fixture.nativeElement;
const matBadgeElement =
- arrayLayoutElement.querySelector('.mat-badge-content')!;
+ arrayLayoutElement.querySelector('.mat-badge-content');
- expect(matBadgeElement.textContent).toBe('4');
+ expect(matBadgeElement?.textContent).toBe('4');
});
});
});
diff --git a/packages/angular-material/test/autocomplete-control.spec.ts b/packages/angular-material/test/enum-control.spec.ts
similarity index 93%
rename from packages/angular-material/test/autocomplete-control.spec.ts
rename to packages/angular-material/test/enum-control.spec.ts
index fe685bf15..a99fc8837 100644
--- a/packages/angular-material/test/autocomplete-control.spec.ts
+++ b/packages/angular-material/test/enum-control.spec.ts
@@ -51,7 +51,7 @@ import {
JsonFormsCore,
EnumOption,
} from '@jsonforms/core';
-import { AutocompleteControlRenderer } from '../src';
+import { EnumControlRenderer } from '../src';
import { JsonFormsAngularService } from '@jsonforms/angular';
import { ErrorObject } from 'ajv';
import { HarnessLoader } from '@angular/cdk/testing';
@@ -81,16 +81,16 @@ const imports = [
ReactiveFormsModule,
];
const providers = [JsonFormsAngularService];
-const componentUT: any = AutocompleteControlRenderer;
+const componentUT: any = EnumControlRenderer;
const errorTest: ErrorTestExpectation = {
errorInstance: MatError,
numberOfElements: 1,
indexOfElement: 0,
};
-describe('Autocomplete control Base Tests', () => {
- let fixture: ComponentFixture;
- let component: AutocompleteControlRenderer;
+describe('Enum control Base Tests', () => {
+ let fixture: ComponentFixture;
+ let component: EnumControlRenderer;
let inputElement: HTMLInputElement;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
@@ -215,9 +215,9 @@ describe('Autocomplete control Base Tests', () => {
expect(inputElement.id).toBe('myId');
});
});
-describe('AutoComplete control Input Event Tests', () => {
- let fixture: ComponentFixture;
- let component: AutocompleteControlRenderer;
+describe('Enum control Input Event Tests', () => {
+ let fixture: ComponentFixture;
+ let component: EnumControlRenderer;
let loader: HarnessLoader;
let inputElement: HTMLInputElement;
beforeEach(waitForAsync(() => {
@@ -269,7 +269,7 @@ describe('AutoComplete control Input Event Tests', () => {
getJsonFormsService(component).updateCore(
Actions.init(data, schema, uischema)
);
- component.options = ['X', 'Y', 'Z'];
+ component.stringOptions = ['X', 'Y', 'Z'];
component.ngOnInit();
fixture.detectChanges();
@@ -339,9 +339,9 @@ describe('AutoComplete control Input Event Tests', () => {
expect(inputElement.value).toBe('Translated B');
}));
});
-describe('AutoComplete control Error Tests', () => {
- let fixture: ComponentFixture;
- let component: AutocompleteControlRenderer;
+describe('Enum control Error Tests', () => {
+ let fixture: ComponentFixture;
+ let component: EnumControlRenderer;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
imports: [componentUT, ...imports],
@@ -383,9 +383,9 @@ describe('AutoComplete control Error Tests', () => {
});
});
-describe('AutoComplete control updateFilter function', () => {
- let fixture: ComponentFixture;
- let component: AutocompleteControlRenderer;
+describe('Enum control updateFilter function', () => {
+ let fixture: ComponentFixture;
+ let component: EnumControlRenderer;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
@@ -401,7 +401,7 @@ describe('AutoComplete control updateFilter function', () => {
it('should not filter options on ENTER key press', () => {
component.shouldFilter = false;
- component.options = ['X', 'Y', 'Z'];
+ component.stringOptions = ['X', 'Y', 'Z'];
setupMockStore(fixture, { uischema, schema, data });
getJsonFormsService(component).updateCore(
Actions.init(data, schema, uischema)
@@ -415,7 +415,7 @@ describe('AutoComplete control updateFilter function', () => {
it('should filter options when a key other than ENTER is pressed', () => {
component.shouldFilter = false;
- component.options = ['X', 'Y', 'Z'];
+ component.stringOptions = ['X', 'Y', 'Z'];
setupMockStore(fixture, { uischema, schema, data });
getJsonFormsService(component).updateCore(
Actions.init(data, schema, uischema)
diff --git a/packages/angular-material/test/one-of-enum-control.spec.ts b/packages/angular-material/test/one-of-enum-control.spec.ts
new file mode 100644
index 000000000..1367265a0
--- /dev/null
+++ b/packages/angular-material/test/one-of-enum-control.spec.ts
@@ -0,0 +1,506 @@
+/*
+ The MIT License
+
+ Copyright (c) 2017-2019 EclipseSource Munich
+ https://github.com/eclipsesource/jsonforms
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+*/
+import {
+ MatAutocompleteModule,
+ MatAutocompleteSelectedEvent,
+} from '@angular/material/autocomplete';
+import { MatError, MatFormFieldModule } from '@angular/material/form-field';
+import { MatInputModule } from '@angular/material/input';
+import { DebugElement } from '@angular/core';
+import {
+ ComponentFixture,
+ fakeAsync,
+ TestBed,
+ tick,
+ waitForAsync,
+} from '@angular/core/testing';
+import { ReactiveFormsModule } from '@angular/forms';
+import { By } from '@angular/platform-browser';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+import {
+ ErrorTestExpectation,
+ getJsonFormsService,
+ setupMockStore,
+} from './common';
+import {
+ Actions,
+ ControlElement,
+ EnumOption,
+ JsonFormsCore,
+ JsonSchema,
+} from '@jsonforms/core';
+import { OneOfEnumControlRenderer } from '../src';
+import { JsonFormsAngularService } from '@jsonforms/angular';
+import { ErrorObject } from 'ajv';
+import { HarnessLoader } from '@angular/cdk/testing';
+import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
+import { MatAutocompleteHarness } from '@angular/material/autocomplete/testing';
+
+const data = {
+ oneOfEnum: 'foo',
+};
+const schema: JsonSchema = {
+ type: 'object',
+ properties: {
+ oneOfEnum: {
+ type: 'string',
+ oneOf: [
+ {
+ const: 'foo',
+ title: 'Foo',
+ },
+ {
+ const: 'bar',
+ title: 'Bar',
+ },
+ {
+ const: 'foobar',
+ title: 'FooBar',
+ },
+ ],
+ },
+ },
+};
+const uischema: ControlElement = {
+ type: 'Control',
+ scope: '#/properties/oneOfEnum',
+};
+
+const imports = [
+ MatAutocompleteModule,
+ MatInputModule,
+ MatFormFieldModule,
+ NoopAnimationsModule,
+ ReactiveFormsModule,
+];
+const providers = [JsonFormsAngularService];
+const componentUT: any = OneOfEnumControlRenderer;
+const errorTest: ErrorTestExpectation = {
+ errorInstance: MatError,
+ numberOfElements: 1,
+ indexOfElement: 0,
+};
+
+describe('OneOfEnum control Base Tests', () => {
+ let fixture: ComponentFixture;
+ let component: OneOfEnumControlRenderer;
+ let inputElement: HTMLInputElement;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ imports: [componentUT, ...imports],
+ providers: providers,
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(componentUT);
+ component = fixture.componentInstance;
+
+ inputElement = fixture.debugElement.query(By.css('input')).nativeElement;
+ });
+
+ it('should render', fakeAsync(() => {
+ setupMockStore(fixture, { uischema, schema, data });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+ component.ngOnInit();
+ fixture.detectChanges();
+ tick();
+ expect(component.data).toEqual('foo');
+ expect(inputElement.value).toBe('Foo');
+ expect(inputElement.disabled).toBe(false);
+ }));
+
+ it('should support updating the state', fakeAsync(() => {
+ setupMockStore(fixture, { uischema, schema, data });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+ component.ngOnInit();
+ fixture.detectChanges();
+ tick();
+ getJsonFormsService(component).updateCore(
+ Actions.update('oneOfEnum', () => 'bar')
+ );
+ tick();
+ fixture.detectChanges();
+ expect(component.data).toEqual('bar');
+ expect(inputElement.value).toBe('Bar');
+ }));
+
+ it('should update with undefined value', () => {
+ setupMockStore(fixture, { uischema, schema, data });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+ component.ngOnInit();
+ fixture.detectChanges();
+
+ getJsonFormsService(component).updateCore(
+ Actions.update('oneOfEnum', () => undefined)
+ );
+ fixture.detectChanges();
+ expect(component.data).toBe(undefined);
+ expect(inputElement.value).toBe('');
+ });
+
+ it('should update with null value', () => {
+ setupMockStore(fixture, { uischema, schema, data });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+ fixture.detectChanges();
+ component.ngOnInit();
+
+ getJsonFormsService(component).updateCore(
+ Actions.update('oneOfEnum', () => null)
+ );
+ fixture.detectChanges();
+ expect(component.data).toBe(null);
+ expect(inputElement.value).toBe('');
+ });
+
+ it('should not update with wrong ref', fakeAsync(() => {
+ setupMockStore(fixture, { uischema, schema, data });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+ component.ngOnInit();
+ fixture.detectChanges();
+ tick();
+ getJsonFormsService(component).updateCore(
+ Actions.update('oneOfEnum', () => 'foo')
+ );
+ getJsonFormsService(component).updateCore(
+ Actions.update('plainEnum', () => 'bar')
+ );
+ fixture.detectChanges();
+ tick();
+ expect(component.data).toEqual('foo');
+ expect(inputElement.value).toBe('Foo');
+ }));
+
+ // store needed as we evaluate the calculated enabled value to disable/enable the control
+ it('can be disabled', () => {
+ setupMockStore(fixture, { uischema, schema, data });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+ component.disabled = true;
+ component.ngOnInit();
+ fixture.detectChanges();
+ expect(inputElement.disabled).toBe(true);
+ });
+
+ it('can be hidden', () => {
+ setupMockStore(fixture, { uischema, schema, data });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+ component.visible = false;
+ component.ngOnInit();
+ fixture.detectChanges();
+ const hasDisplayNone =
+ 'none' === fixture.nativeElement.children[0].style.display;
+ const hasHidden = fixture.nativeElement.children[0].hidden;
+ expect(hasDisplayNone || hasHidden).toBeTruthy();
+ });
+
+ it('id should be present in output', () => {
+ setupMockStore(fixture, { uischema, schema, data });
+ component.id = 'myId';
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+
+ fixture.detectChanges();
+ component.ngOnInit();
+ expect(inputElement.id).toBe('myId');
+ });
+});
+
+describe('OneOfEnum control Input Event Tests', () => {
+ let fixture: ComponentFixture;
+ let component: OneOfEnumControlRenderer;
+ let loader: HarnessLoader;
+ let inputElement: HTMLInputElement;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ imports: [componentUT, ...imports],
+ providers: [...providers],
+ }).compileComponents();
+ }));
+
+ beforeEach(waitForAsync(() => {
+ fixture = TestBed.createComponent(componentUT);
+ component = fixture.componentInstance;
+ loader = TestbedHarnessEnvironment.loader(fixture);
+
+ inputElement = fixture.debugElement.query(By.css('input')).nativeElement;
+ }));
+
+ it('should update via input event', fakeAsync(async () => {
+ setupMockStore(fixture, { uischema, schema, data });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+
+ component.ngOnInit();
+ fixture.detectChanges();
+
+ const spy = spyOn(component, 'onSelect');
+
+ await (await loader.getHarness(MatAutocompleteHarness)).focus();
+ fixture.detectChanges();
+
+ await (
+ await loader.getHarness(MatAutocompleteHarness)
+ ).selectOption({ text: 'Bar' });
+ tick();
+ fixture.detectChanges();
+
+ expect(spy).toHaveBeenCalled();
+ const event = spy.calls.mostRecent()
+ .args[0] as MatAutocompleteSelectedEvent;
+
+ expect(event.option.value).toEqual({
+ label: 'Bar',
+ value: 'bar',
+ } satisfies EnumOption);
+ expect(inputElement.value).toBe('Bar');
+ }));
+
+ it('options should prefer own props', fakeAsync(async () => {
+ setupMockStore(fixture, { uischema, schema, data });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+ component.options = [
+ {
+ label: 'X',
+ value: 'x',
+ },
+ {
+ label: 'Y',
+ value: 'y',
+ },
+ {
+ label: 'Z',
+ value: 'z',
+ },
+ ];
+
+ component.ngOnInit();
+ fixture.detectChanges();
+ const spy = spyOn(component, 'onSelect');
+
+ await (await loader.getHarness(MatAutocompleteHarness)).focus();
+ fixture.detectChanges();
+
+ await (
+ await loader.getHarness(MatAutocompleteHarness)
+ ).selectOption({ text: 'Y' });
+ fixture.detectChanges();
+ tick();
+
+ const event = spy.calls.mostRecent()
+ .args[0] as MatAutocompleteSelectedEvent;
+ expect(event.option.value).toEqual({
+ label: 'Y',
+ value: 'y',
+ } satisfies EnumOption);
+ expect(inputElement.value).toBe('Y');
+ }));
+
+ it('should render translated enum correctly', fakeAsync(async () => {
+ setupMockStore(fixture, { uischema, schema, data });
+ const state: JsonFormsCore = {
+ data,
+ schema,
+ uischema,
+ };
+ getJsonFormsService(component).init({
+ core: state,
+ i18n: {
+ translate: (key, defaultMessage) => {
+ const translations: { [key: string]: string } = {
+ 'oneOfEnum.Foo': 'Translated Foo',
+ 'oneOfEnum.Bar': 'Translated Bar',
+ 'oneOfEnum.FooBar': 'Translated FooBar',
+ };
+ return translations[key] ?? defaultMessage;
+ },
+ },
+ });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+ component.ngOnInit();
+ fixture.detectChanges();
+ const spy = spyOn(component, 'onSelect');
+
+ await (await loader.getHarness(MatAutocompleteHarness)).focus();
+ fixture.detectChanges();
+
+ await (
+ await loader.getHarness(MatAutocompleteHarness)
+ ).selectOption({
+ text: 'Translated Bar',
+ });
+ fixture.detectChanges();
+ tick();
+
+ const event = spy.calls.mostRecent()
+ .args[0] as MatAutocompleteSelectedEvent;
+ expect(event.option.value).toEqual({
+ label: 'Translated Bar',
+ value: 'bar',
+ } satisfies EnumOption);
+ expect(inputElement.value).toBe('Translated Bar');
+ }));
+});
+
+describe('OneOfEnum control Error Tests', () => {
+ let fixture: ComponentFixture;
+ let component: OneOfEnumControlRenderer;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ imports: [componentUT, ...imports],
+ providers: providers,
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(componentUT);
+ component = fixture.componentInstance;
+ });
+
+ it('should display errors', () => {
+ const errors: ErrorObject[] = [
+ {
+ instancePath: '/oneOfEnum',
+ message: 'Hi, this is me, test error!',
+ params: {},
+ keyword: '',
+ schemaPath: '',
+ },
+ ];
+ setupMockStore(fixture, {
+ uischema,
+ schema,
+ data,
+ });
+ const formsService = getJsonFormsService(component);
+ formsService.updateCore(Actions.updateErrors(errors));
+ formsService.refresh();
+
+ component.ngOnInit();
+ fixture.detectChanges();
+ const debugErrors: DebugElement[] = fixture.debugElement.queryAll(
+ By.directive(errorTest.errorInstance)
+ );
+ expect(debugErrors.length).toBe(errorTest.numberOfElements);
+ expect(
+ debugErrors[errorTest.indexOfElement].nativeElement.textContent
+ ).toBe('Hi, this is me, test error!');
+ });
+});
+
+describe('OneOfEnum control updateFilter function', () => {
+ let fixture: ComponentFixture;
+ let component: OneOfEnumControlRenderer;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ imports: [componentUT, ...imports],
+ providers: providers,
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(componentUT);
+ component = fixture.componentInstance;
+ });
+
+ it('should not filter options on ENTER key press', () => {
+ component.shouldFilter = false;
+ component.options = [
+ {
+ label: 'X',
+ value: 'x',
+ },
+ {
+ label: 'Y',
+ value: 'y',
+ },
+ {
+ label: 'Z',
+ value: 'z',
+ },
+ ];
+ setupMockStore(fixture, { uischema, schema, data });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+ component.ngOnInit();
+ fixture.detectChanges();
+ component.updateFilter({ keyCode: 13 });
+ fixture.detectChanges();
+ expect(component.shouldFilter).toBe(false);
+ });
+
+ it('should filter options when a key other than ENTER is pressed', () => {
+ component.shouldFilter = false;
+ component.options = [
+ {
+ label: 'X',
+ value: 'x',
+ },
+ {
+ label: 'Y',
+ value: 'y',
+ },
+ {
+ label: 'Z',
+ value: 'z',
+ },
+ ];
+ setupMockStore(fixture, { uischema, schema, data });
+ getJsonFormsService(component).updateCore(
+ Actions.init(data, schema, uischema)
+ );
+ component.ngOnInit();
+ fixture.detectChanges();
+
+ component.updateFilter({ keyCode: 65 });
+ fixture.detectChanges();
+
+ expect(component.shouldFilter).toBe(true);
+ });
+});
From cec6ce5d79758b19b4d8118b604a33587c8b2a9c Mon Sep 17 00:00:00 2001
From: Lucas Koehler
Date: Tue, 5 May 2026 08:58:53 +0200
Subject: [PATCH 27/29] vue: add jest testing hints on imports (#2568)
Add documentation on import order for jest (or other) unit tests using CJS transformations
to the READMEs of all vue packages
Fix #2250
---
packages/vue-vanilla/README.md | 4 ++++
packages/vue-vuetify/README.md | 4 ++++
packages/vue/README.md | 21 +++++++++++++++++++++
3 files changed, 29 insertions(+)
diff --git a/packages/vue-vanilla/README.md b/packages/vue-vanilla/README.md
index ef704d3b2..6477e9f82 100644
--- a/packages/vue-vanilla/README.md
+++ b/packages/vue-vanilla/README.md
@@ -194,6 +194,10 @@ Attributes not specified here fall back to either the `defaultStyles` or provide
}
```
+### Testing in CJS-transformed environments
+
+When writing tests for custom renderers in a Jest/Vitest CJS-transformed environment, `vue` should be imported first in your custom renderers. See [Testing with Jest / Vitest](../vue/README.md#testing-with-jest--vitest) in the `@jsonforms/vue` README.
+
## License
The JSONForms project is licensed under the MIT License. See the [LICENSE file](https://github.com/eclipsesource/jsonforms/blob/master/LICENSE) for more information.
diff --git a/packages/vue-vuetify/README.md b/packages/vue-vuetify/README.md
index 5e8e171ee..e782a711d 100644
--- a/packages/vue-vuetify/README.md
+++ b/packages/vue-vuetify/README.md
@@ -174,6 +174,10 @@ provide(
);
```
+## Testing in CJS-transformed environments
+
+When writing tests for custom renderers in a Jest/Vitest CJS-transformed environment, `vue` should be imported first in your custom renderers. See [Testing with Jest / Vitest](../vue/README.md#testing-with-jest--vitest) in the `@jsonforms/vue` README.
+
## License
The JSONForms project is licensed under the MIT License. See the [LICENSE file](https://github.com/eclipsesource/jsonforms/blob/master/LICENSE) for more information.
diff --git a/packages/vue/README.md b/packages/vue/README.md
index a03c58463..3d97db659 100644
--- a/packages/vue/README.md
+++ b/packages/vue/README.md
@@ -289,6 +289,27 @@ const myComponent = defineComponent({
The injected `jsonforms` object is not meant to be modified directly.
Instead it should be modified via the provided `dispatch` and by changing the props of the `json-forms` component.
+### Testing with Jest / Vitest
+
+When testing custom renderers in a CJS-transformed test environment (Jest, or Vitest configured with CJS transforms), `vue` must be imported **before** `@jsonforms/vue` in your renderer files:
+
+```ts
+// Correct - import vue before @jsonforms/vue
+import { defineComponent } from 'vue';
+import { rendererProps, useJsonFormsControl } from '@jsonforms/vue';
+```
+
+```ts
+// May produce errors such as:
+// "Property '' was accessed during render but is not defined on instance"
+import { rendererProps, useJsonFormsControl } from '@jsonforms/vue';
+import { defineComponent } from 'vue';
+```
+
+The reason is that several components shipped by `@jsonforms/vue` (e.g. `JsonForms`, `DispatchRenderer`) call `defineComponent` at module load. When the package is consumed via `require()` and the test runner's CJS transform doesn't hoist imports, `vue` must already be evaluated at that point. Thus, importing `vue` first in renderer and test files is the safest default.
+
+Browser/dev builds using Webpack, Vite, or other ESM-aware bundlers are not affected.
+
## License
The JSON Forms project is licensed under the MIT License. See the [LICENSE file](https://github.com/eclipsesource/jsonforms/blob/master/LICENSE) for more information.
From 706fc4512bb9cfb31e4c988579d3e5d7d0c7bb94 Mon Sep 17 00:00:00 2001
From: Lucas Koehler
Date: Tue, 14 Apr 2026 17:33:48 +0200
Subject: [PATCH 28/29] angular: remove deprecated use of
ComponentFactoryResolver
- Replaced by using ViewContainerRef.createComponent directly with a component.
- Enables compatibility with Angular 22 which removes API access to
ComponentFactoryResolver
---
packages/angular/src/library/jsonforms.component.ts | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/packages/angular/src/library/jsonforms.component.ts b/packages/angular/src/library/jsonforms.component.ts
index fd35b81bc..203e2a1f7 100644
--- a/packages/angular/src/library/jsonforms.component.ts
+++ b/packages/angular/src/library/jsonforms.component.ts
@@ -24,7 +24,6 @@
*/
import maxBy from 'lodash/maxBy';
import {
- ComponentFactoryResolver,
Directive,
Input,
OnInit,
@@ -76,7 +75,6 @@ export class JsonFormsOutlet
constructor(
private viewContainerRef: ViewContainerRef,
- private componentFactoryResolver: ComponentFactoryResolver,
private jsonformsService: JsonFormsAngularService
) {
super();
@@ -128,11 +126,9 @@ export class JsonFormsOutlet
bestComponent = renderer.renderer;
}
- const componentFactory =
- this.componentFactoryResolver.resolveComponentFactory(bestComponent);
this.viewContainerRef.clear();
const currentComponentRef =
- this.viewContainerRef.createComponent(componentFactory);
+ this.viewContainerRef.createComponent(bestComponent);
if (currentComponentRef.instance instanceof JsonFormsBaseRenderer) {
const instance =
From 2d4eee920c75f84ff45a1f0c2172cedea35f8e1c Mon Sep 17 00:00:00 2001
From: "jsonforms-publish[bot]"
Date: Tue, 5 May 2026 07:32:29 +0000
Subject: [PATCH 29/29] v3.8.0-alpha.1
---
lerna.json | 2 +-
packages/angular-material/package.json | 6 +++---
packages/angular/package.json | 4 ++--
packages/core/package.json | 2 +-
packages/examples-app/package.json | 2 +-
packages/examples-react/package.json | 2 +-
packages/examples/package.json | 4 ++--
packages/material-renderers/package.json | 6 +++---
packages/react/package.json | 4 ++--
packages/vanilla-renderers/package.json | 6 +++---
packages/vue-vanilla/package.json | 6 +++---
packages/vue-vuetify/package.json | 6 +++---
packages/vue/package.json | 4 ++--
13 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/lerna.json b/lerna.json
index dd17ae631..ce857dd4c 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"npmClient": "pnpm",
"$schema": "node_modules/lerna/schemas/lerna-schema.json"
}
diff --git a/packages/angular-material/package.json b/packages/angular-material/package.json
index f04b4581f..fbf81a78f 100644
--- a/packages/angular-material/package.json
+++ b/packages/angular-material/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/angular-material",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"description": "Material Renderer Set for Angular module of JSON Forms",
"repository": {
"type": "git",
@@ -72,8 +72,8 @@
"@angular/material": "^19.0.0 || ^20.0.0 || ^21.0.0",
"@angular/platform-browser": "^19.0.0 || ^20.0.0 || ^21.0.0",
"@angular/router": "^19.0.0 || ^20.0.0 || ^21.0.0",
- "@jsonforms/angular": "3.8.0-alpha.0",
- "@jsonforms/core": "3.8.0-alpha.0",
+ "@jsonforms/angular": "3.8.0-alpha.1",
+ "@jsonforms/core": "3.8.0-alpha.1",
"dayjs": "^1.11.10",
"rxjs": "^6.6.0 || ^7.4.0"
},
diff --git a/packages/angular/package.json b/packages/angular/package.json
index b30bd8e33..1c2ab02e0 100644
--- a/packages/angular/package.json
+++ b/packages/angular/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/angular",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"description": "Angular module of JSON Forms",
"repository": {
"type": "git",
@@ -73,7 +73,7 @@
"peerDependencies": {
"@angular/core": "^19.0.0 || ^20.0.0 || ^21.0.0",
"@angular/forms": "^19.0.0 || ^20.0.0 || ^21.0.0",
- "@jsonforms/core": "3.8.0-alpha.0",
+ "@jsonforms/core": "3.8.0-alpha.1",
"rxjs": "^6.6.0 || ^7.4.0"
},
"devDependencies": {
diff --git a/packages/core/package.json b/packages/core/package.json
index 827db5c67..c3c0182fe 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/core",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"description": "Core module of JSON Forms",
"repository": {
"type": "git",
diff --git a/packages/examples-app/package.json b/packages/examples-app/package.json
index f533d8d4a..6bbed702c 100644
--- a/packages/examples-app/package.json
+++ b/packages/examples-app/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/examples-app",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"private": true,
"license": "MIT",
"type": "module",
diff --git a/packages/examples-react/package.json b/packages/examples-react/package.json
index 55ad85dfb..f4268229c 100644
--- a/packages/examples-react/package.json
+++ b/packages/examples-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/examples-react",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"private": true,
"dependencies": {
"@jsonforms/core": "workspace:*",
diff --git a/packages/examples/package.json b/packages/examples/package.json
index c9f4df08b..ce9652b13 100644
--- a/packages/examples/package.json
+++ b/packages/examples/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/examples",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"description": "JSON Forms Example Data",
"repository": {
"type": "git",
@@ -51,7 +51,7 @@
"lodash": "^4.17.21"
},
"peerDependencies": {
- "@jsonforms/core": "3.8.0-alpha.0"
+ "@jsonforms/core": "3.8.0-alpha.1"
},
"devDependencies": {
"@jsonforms/core": "workspace:*",
diff --git a/packages/material-renderers/package.json b/packages/material-renderers/package.json
index 632c6390f..e5c078b83 100644
--- a/packages/material-renderers/package.json
+++ b/packages/material-renderers/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/material-renderers",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"description": "Material Renderer Set for JSON Forms",
"repository": {
"type": "git",
@@ -93,8 +93,8 @@
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
- "@jsonforms/core": "3.8.0-alpha.0",
- "@jsonforms/react": "3.8.0-alpha.0",
+ "@jsonforms/core": "3.8.0-alpha.1",
+ "@jsonforms/react": "3.8.0-alpha.1",
"@mui/icons-material": "^7.0.0",
"@mui/material": "^7.0.0",
"@mui/x-date-pickers": "^8.0.0",
diff --git a/packages/react/package.json b/packages/react/package.json
index b72764e9f..d413b60b4 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/react",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"description": "React module of JSON Forms",
"repository": {
"type": "git",
@@ -90,7 +90,7 @@
"lodash": "^4.17.21"
},
"peerDependencies": {
- "@jsonforms/core": "3.8.0-alpha.0",
+ "@jsonforms/core": "3.8.0-alpha.1",
"react": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
},
"optionalPeerDependencies": {
diff --git a/packages/vanilla-renderers/package.json b/packages/vanilla-renderers/package.json
index f93f51977..ffd4881cc 100644
--- a/packages/vanilla-renderers/package.json
+++ b/packages/vanilla-renderers/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/vanilla-renderers",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"description": "Default Renderer Set for JSON Forms",
"repository": {
"type": "git",
@@ -54,8 +54,8 @@
"lodash": "^4.17.21"
},
"peerDependencies": {
- "@jsonforms/core": "3.8.0-alpha.0",
- "@jsonforms/react": "3.8.0-alpha.0",
+ "@jsonforms/core": "3.8.0-alpha.1",
+ "@jsonforms/react": "3.8.0-alpha.1",
"react": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
},
"devDependencies": {
diff --git a/packages/vue-vanilla/package.json b/packages/vue-vanilla/package.json
index fc68a41e1..d1f8a41a3 100644
--- a/packages/vue-vanilla/package.json
+++ b/packages/vue-vanilla/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/vue-vanilla",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"description": "Vue 3 Vanilla renderers for JSON Forms",
"repository": {
"type": "git",
@@ -97,8 +97,8 @@
"vue": "^3.5.17"
},
"peerDependencies": {
- "@jsonforms/core": "3.8.0-alpha.0",
- "@jsonforms/vue": "3.8.0-alpha.0",
+ "@jsonforms/core": "3.8.0-alpha.1",
+ "@jsonforms/vue": "3.8.0-alpha.1",
"vue": "^3.5.0"
}
}
diff --git a/packages/vue-vuetify/package.json b/packages/vue-vuetify/package.json
index 936093f30..3169ecbf6 100644
--- a/packages/vue-vuetify/package.json
+++ b/packages/vue-vuetify/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/vue-vuetify",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"description": "Vue Vuetify renderers for JSON Forms",
"repository": {
"type": "git",
@@ -62,8 +62,8 @@
"type-check": "vue-tsc --build --force"
},
"peerDependencies": {
- "@jsonforms/core": "3.8.0-alpha.0",
- "@jsonforms/vue": "3.8.0-alpha.0",
+ "@jsonforms/core": "3.8.0-alpha.1",
+ "@jsonforms/vue": "3.8.0-alpha.1",
"ajv": "^8.18.0",
"dayjs": "^1.10.6",
"lodash": "^4.17.21",
diff --git a/packages/vue/package.json b/packages/vue/package.json
index 483c510d8..393249c15 100644
--- a/packages/vue/package.json
+++ b/packages/vue/package.json
@@ -1,6 +1,6 @@
{
"name": "@jsonforms/vue",
- "version": "3.8.0-alpha.0",
+ "version": "3.8.0-alpha.1",
"description": "Vue 3 module of JSON Forms",
"repository": {
"type": "git",
@@ -90,7 +90,7 @@
"vue": "^3.5.17"
},
"peerDependencies": {
- "@jsonforms/core": "3.8.0-alpha.0",
+ "@jsonforms/core": "3.8.0-alpha.1",
"vue": "^3.5.0"
}
}
|