I'm trying to make a wrapper for Chart.js. When there is data is passed as plain non-$state prop, it works fine. But when data is defined to be reactive with $state, the chart doesn't error due to the following error in the log section. This causes problem in Vitest and Storybook, making them unusable.
Chart.js on main [$] is 📦 1.1.0 via ⬢ v22.14.0
➜ bun run dev
$ vite dev
VITE v6.2.3 ready in 1301 ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose
➜ press h + enter to show help
{
labels: {
value: [
'January', 'February',
'March', 'April',
'May', 'June',
'July'
],
writable: true,
enumerable: true,
configurable: true
},
'labels.0': {
value: 'January',
writable: true,
enumerable: true,
configurable: true
},
'labels.1': {
value: 'February',
writable: true,
enumerable: true,
configurable: true
},
'labels.2': {
value: 'March',
writable: true,
enumerable: true,
configurable: true
},
'labels.3': {
value: 'April',
writable: true,
enumerable: true,
configurable: true
},
'labels.4': {
value: 'May',
writable: true,
enumerable: true,
configurable: true
},
'labels.5': {
value: 'June',
writable: true,
enumerable: true,
configurable: true
},
'labels.6': {
value: 'July',
writable: true,
enumerable: true,
configurable: true
},
'labels.length': { value: 7, writable: true, enumerable: false, configurable: false },
datasets: {
value: [ [Object] ],
writable: true,
enumerable: true,
configurable: true
},
'datasets.0': {
value: {
label: 'My First Dataset',
data: [Array],
backgroundColor: [Array],
borderColor: [Array],
borderWidth: 1
},
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.label': {
value: 'My First Dataset',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.data': {
value: [
65, 59, 80, 81,
56, 55, 40
],
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.data.0': { value: 65, writable: true, enumerable: true, configurable: true },
'datasets.0.data.1': { value: 59, writable: true, enumerable: true, configurable: true },
'datasets.0.data.2': { value: 80, writable: true, enumerable: true, configurable: true },
'datasets.0.data.3': { value: 81, writable: true, enumerable: true, configurable: true },
'datasets.0.data.4': { value: 56, writable: true, enumerable: true, configurable: true },
'datasets.0.data.5': { value: 55, writable: true, enumerable: true, configurable: true },
'datasets.0.data.6': { value: 40, writable: true, enumerable: true, configurable: true },
'datasets.0.data.length': { value: 7, writable: true, enumerable: false, configurable: false },
'datasets.0.backgroundColor': {
value: [
'rgba(255, 99, 132, 0.2)',
'rgba(255, 159, 64, 0.2)',
'rgba(255, 205, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(201, 203, 207, 0.2)'
],
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.backgroundColor.0': {
value: 'rgba(255, 99, 132, 0.2)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.backgroundColor.1': {
value: 'rgba(255, 159, 64, 0.2)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.backgroundColor.2': {
value: 'rgba(255, 205, 86, 0.2)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.backgroundColor.3': {
value: 'rgba(75, 192, 192, 0.2)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.backgroundColor.4': {
value: 'rgba(54, 162, 235, 0.2)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.backgroundColor.5': {
value: 'rgba(153, 102, 255, 0.2)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.backgroundColor.6': {
value: 'rgba(201, 203, 207, 0.2)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.backgroundColor.length': { value: 7, writable: true, enumerable: false, configurable: false },
'datasets.0.borderColor': {
value: [
'rgb(255, 99, 132)',
'rgb(255, 159, 64)',
'rgb(255, 205, 86)',
'rgb(75, 192, 192)',
'rgb(54, 162, 235)',
'rgb(153, 102, 255)',
'rgb(201, 203, 207)'
],
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.borderColor.0': {
value: 'rgb(255, 99, 132)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.borderColor.1': {
value: 'rgb(255, 159, 64)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.borderColor.2': {
value: 'rgb(255, 205, 86)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.borderColor.3': {
value: 'rgb(75, 192, 192)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.borderColor.4': {
value: 'rgb(54, 162, 235)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.borderColor.5': {
value: 'rgb(153, 102, 255)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.borderColor.6': {
value: 'rgb(201, 203, 207)',
writable: true,
enumerable: true,
configurable: true
},
'datasets.0.borderColor.length': { value: 7, writable: true, enumerable: false, configurable: false },
'datasets.0.borderWidth': { value: 1, writable: true, enumerable: true, configurable: true },
'datasets.length': { value: 1, writable: true, enumerable: false, configurable: false }
}
Describe the bug
I'm trying to make a wrapper for Chart.js. When there is data is passed as plain non-$state prop, it works fine. But when data is defined to be reactive with $state, the chart doesn't error due to the following error in the log section. This causes problem in Vitest and Storybook, making them unusable.
Reproduction
Clone https://github.com/sveltejs-labs/Chart.js and run
npm run devwith browser developer console opened. It will print the properties of data object and printLogs
System Info
System: OS: macOS 15.3.2 CPU: (8) arm64 Apple M2 Memory: 655.97 MB / 24.00 GB Shell: 5.9 - /bin/zsh Binaries: Node: 22.14.0 - ~/.local/state/fnm_multishells/75553_1742872528675/bin/node Yarn: 1.22.22 - ~/.local/state/fnm_multishells/75553_1742872528675/bin/yarn npm: 10.9.2 - ~/.local/state/fnm_multishells/75553_1742872528675/bin/npm bun: 1.2.5 - ~/.bun/bin/bun Browsers: Chrome: 134.0.6998.165 Safari: 18.3.1 npmPackages: svelte: ^5.25.3 => 5.25.3Severity
blocking all usage of svelte