diff --git a/.betterer.results b/.betterer.results
index ef38d09552e..304db52d9ae 100644
--- a/.betterer.results
+++ b/.betterer.results
@@ -5429,8 +5429,7 @@ exports[`better eslint`] = {
[0, 0, 0, "Unexpected any. Specify a different type.", "8"],
[0, 0, 0, "Do not use any type assertions.", "9"],
[0, 0, 0, "Do not use any type assertions.", "10"],
- [0, 0, 0, "Do not use any type assertions.", "11"],
- [0, 0, 0, "Do not use any type assertions.", "12"]
+ [0, 0, 0, "Do not use any type assertions.", "11"]
],
"public/app/features/trails/ActionTabs/AddToFiltersGraphAction.tsx:5381": [
[0, 0, 0, "No untranslated strings. Wrap text with ", "0"]
@@ -6113,6 +6112,9 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not use any type assertions.", "0"],
[0, 0, 0, "Do not use any type assertions.", "1"]
],
+ "public/app/plugins/datasource/dashboard/datasource.ts:5381": [
+ [0, 0, 0, "Do not use any type assertions.", "0"]
+ ],
"public/app/plugins/datasource/dashboard/index.ts:5381": [
[0, 0, 0, "Do not re-export imported variable (\`./runSharedRequest\`)", "0"],
[0, 0, 0, "Do not re-export imported variable (\`./DashboardQueryEditor\`)", "1"],
diff --git a/public/app/features/templating/template_srv.ts b/public/app/features/templating/template_srv.ts
index e0618c7404d..babc6d2cbd4 100644
--- a/public/app/features/templating/template_srv.ts
+++ b/public/app/features/templating/template_srv.ts
@@ -15,7 +15,7 @@ import {
TemplateSrv as BaseTemplateSrv,
VariableInterpolation,
} from '@grafana/runtime';
-import { sceneGraph, VariableCustomFormatterFn, SafeSerializableSceneObject } from '@grafana/scenes';
+import { sceneGraph, VariableCustomFormatterFn, SceneObject } from '@grafana/scenes';
import { VariableFormatID } from '@grafana/schema';
import { getVariablesCompatibility } from '../dashboard-scene/utils/getVariablesCompatibility';
@@ -259,7 +259,8 @@ export class TemplateSrv implements BaseTemplateSrv {
): string {
// Scenes compatability (primary method) is via SceneObject inside scopedVars. This way we get a much more accurate "local" scope for the evaluation
if (scopedVars && scopedVars.__sceneObject) {
- const sceneObject = (scopedVars.__sceneObject.value as SafeSerializableSceneObject).valueOf();
+ // We are using valueOf here as __sceneObject can be after scenes 5.6.0 a SafeSerializableSceneObject that overrides valueOf to return the underlying SceneObject
+ const sceneObject: SceneObject = scopedVars.__sceneObject.value.valueOf();
return sceneGraph.interpolate(
sceneObject,
target,
diff --git a/public/app/plugins/datasource/dashboard/datasource.ts b/public/app/plugins/datasource/dashboard/datasource.ts
index d942b397478..d7fa857e98a 100644
--- a/public/app/plugins/datasource/dashboard/datasource.ts
+++ b/public/app/plugins/datasource/dashboard/datasource.ts
@@ -8,7 +8,7 @@ import {
TestDataSourceResponse,
ScopedVar,
} from '@grafana/data';
-import { SafeSerializableSceneObject, SceneDataProvider, SceneDataTransformer, SceneObject } from '@grafana/scenes';
+import { SceneDataProvider, SceneDataTransformer, SceneObject } from '@grafana/scenes';
import { findVizPanelByKey, getVizPanelKeyForPanelId } from 'app/features/dashboard-scene/utils/utils';
import { DashboardQuery } from './types';
@@ -27,13 +27,7 @@ export class DashboardDatasource extends DataSourceApi {
query(options: DataQueryRequest): Observable {
const sceneScopedVar: ScopedVar | undefined = options.scopedVars?.__sceneObject;
- let scene: SceneObject | undefined;
-
- if (!(sceneScopedVar instanceof SafeSerializableSceneObject)) {
- throw new Error('Scene object from scopedVars is not safe serializable.');
- }
-
- scene = sceneScopedVar.valueOf();
+ let scene: SceneObject | undefined = sceneScopedVar ? (sceneScopedVar.value.valueOf() as SceneObject) : undefined;
if (options.requestId.indexOf('mixed') > -1) {
throw new Error('Dashboard data source cannot be used with Mixed data source.');