@gooddata/sdk-backend-base 11.54.0-alpha.6 → 11.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { type IAnalyticalWorkspace, type IAttributeHierarchiesService, type IDataFiltersService, type IDateFilterConfigsQuery, type IExecutionFactory, type IGenAIService, type IReferencesService, type IWorkspaceAccessControlService, type IWorkspaceAgentsService, type IWorkspaceAttributesService, type IWorkspaceAutomationService, type IWorkspaceCatalogFactory, type IWorkspaceComputedAttributesService, type IWorkspaceDashboardsService, type IWorkspaceDatasetsService, type IWorkspaceDescriptor, type IWorkspaceExportDefinitionsService, type IWorkspaceExportTemplatesService, type IWorkspaceFactsService, type IWorkspaceInsightsService, type IWorkspaceKeyDriverAnalysisService, type IWorkspaceLogicalModelService, type IWorkspaceMeasuresService, type IWorkspaceObjectPermissionsService, type IWorkspaceParametersService, type IWorkspacePermissionsService, type IWorkspaceSettingsService, type IWorkspaceStylingService, type IWorkspaceUserGroupsQuery, type IWorkspaceUsersQuery } from "@gooddata/sdk-backend-spi";
1
+ import { type IAnalyticalWorkspace, type IAttributeHierarchiesService, type IDataFiltersService, type IDateFilterConfigsQuery, type IExecutionFactory, type IGenAIService, type IReferencesService, type IWorkspaceAccessControlService, type IWorkspaceAgentsService, type IWorkspaceAttributesService, type IWorkspaceAutomationService, type IWorkspaceCatalogFactory, type IWorkspaceComputedAttributesService, type IWorkspaceDashboardsService, type IWorkspaceDatasetsService, type IWorkspaceDescriptor, type IWorkspaceExportDefinitionsService, type IWorkspaceExportTemplatesService, type IWorkspaceFactsService, type IWorkspaceInsightsService, type IWorkspaceKeyDriverAnalysisService, type IWorkspaceLogicalModelService, type IWorkspaceMeasuresService, type IWorkspaceObjectPermissionsService, type IWorkspaceParametersService, type IWorkspacePermissionsService, type IWorkspaceReportsService, type IWorkspaceSettingsService, type IWorkspaceStylingService, type IWorkspaceUserGroupsQuery, type IWorkspaceUsersQuery } from "@gooddata/sdk-backend-spi";
2
2
  import { type CustomBackendConfig, type CustomBackendState } from "./config.js";
3
3
  /**
4
4
  * @internal
@@ -39,5 +39,6 @@ export declare class CustomWorkspace implements IAnalyticalWorkspace {
39
39
  genAI(): IGenAIService;
40
40
  references(): IReferencesService;
41
41
  exportTemplates(): IWorkspaceExportTemplatesService;
42
+ reports(): IWorkspaceReportsService;
42
43
  }
43
44
  //# sourceMappingURL=workspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/customBackend/workspace.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,mCAAmC,EACxC,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,kCAAkC,EACvC,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EAE5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGhF;;GAEG;AACH,qBAAa,eAAgB,YAAW,oBAAoB;aAEpC,SAAS,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAH1B,YACoB,SAAS,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,kBAAkB,EAC1C;IAEG,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAEpD;IAEM,gBAAgB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAEvD;IAEM,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAErE;IAEM,SAAS,IAAI,iBAAiB,CAEpC;IAOM,UAAU,IAAI,2BAA2B,CAE/C;IAGM,QAAQ,IAAI,yBAAyB,CAE3C;IAGM,OAAO,IAAI,wBAAwB,CAEzC;IAKM,WAAW,IAAI,4BAA4B,CAEjD;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,OAAO,IAAI,wBAAwB,CAEzC;IAEM,QAAQ,IAAI,yBAAyB,CAE3C;IAEM,UAAU,IAAI,2BAA2B,CAE/C;IAEM,kBAAkB,IAAI,mCAAmC,CAE/D;IAEM,KAAK,IAAI,sBAAsB,CAErC;IAEM,QAAQ,IAAI,yBAAyB,CAE3C;IAEM,QAAQ,IAAI,yBAAyB,CAE3C;IAEM,UAAU,IAAI,2BAA2B,CAE/C;IAEM,KAAK,IAAI,oBAAoB,CAEnC;IAEM,iBAAiB,IAAI,uBAAuB,CAElD;IAEM,UAAU,IAAI,yBAAyB,CAE7C;IAEM,aAAa,IAAI,8BAA8B,CAErD;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,oBAAoB,IAAI,4BAA4B,CAE1D;IAEM,MAAM,IAAI,uBAAuB,CAEvC;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,WAAW,IAAI,mBAAmB,CAExC;IAEM,YAAY,IAAI,6BAA6B,CAEnD;IAEM,WAAW,IAAI,2BAA2B,CAEhD;IAEM,KAAK,IAAI,aAAa,CAE5B;IAEM,UAAU,IAAI,kBAAkB,CAEtC;IAEM,eAAe,IAAI,gCAAgC,CAEzD;CACJ"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/customBackend/workspace.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,mCAAmC,EACxC,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,kCAAkC,EACvC,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EAE5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGhF;;GAEG;AACH,qBAAa,eAAgB,YAAW,oBAAoB;aAEpC,SAAS,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAH1B,YACoB,SAAS,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,kBAAkB,EAC1C;IAEG,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAEpD;IAEM,gBAAgB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAEvD;IAEM,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAErE;IAEM,SAAS,IAAI,iBAAiB,CAEpC;IAOM,UAAU,IAAI,2BAA2B,CAE/C;IAGM,QAAQ,IAAI,yBAAyB,CAE3C;IAGM,OAAO,IAAI,wBAAwB,CAEzC;IAKM,WAAW,IAAI,4BAA4B,CAEjD;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,OAAO,IAAI,wBAAwB,CAEzC;IAEM,QAAQ,IAAI,yBAAyB,CAE3C;IAEM,UAAU,IAAI,2BAA2B,CAE/C;IAEM,kBAAkB,IAAI,mCAAmC,CAE/D;IAEM,KAAK,IAAI,sBAAsB,CAErC;IAEM,QAAQ,IAAI,yBAAyB,CAE3C;IAEM,QAAQ,IAAI,yBAAyB,CAE3C;IAEM,UAAU,IAAI,2BAA2B,CAE/C;IAEM,KAAK,IAAI,oBAAoB,CAEnC;IAEM,iBAAiB,IAAI,uBAAuB,CAElD;IAEM,UAAU,IAAI,yBAAyB,CAE7C;IAEM,aAAa,IAAI,8BAA8B,CAErD;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,oBAAoB,IAAI,4BAA4B,CAE1D;IAEM,MAAM,IAAI,uBAAuB,CAEvC;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,WAAW,IAAI,mBAAmB,CAExC;IAEM,YAAY,IAAI,6BAA6B,CAEnD;IAEM,WAAW,IAAI,2BAA2B,CAEhD;IAEM,KAAK,IAAI,aAAa,CAE5B;IAEM,UAAU,IAAI,kBAAkB,CAEtC;IAEM,eAAe,IAAI,gCAAgC,CAEzD;IAEM,OAAO,IAAI,wBAAwB,CAEzC;CACJ"}
@@ -115,4 +115,7 @@ export class CustomWorkspace {
115
115
  exportTemplates() {
116
116
  throw new NotSupported("export templates are not supported");
117
117
  }
118
+ reports() {
119
+ throw new NotSupported("reports are not supported");
120
+ }
118
121
  }
@@ -1,4 +1,4 @@
1
- import { type IAnalyticalWorkspace, type IAttributeHierarchiesService, type IDataFiltersService, type IDateFilterConfigsQuery, type IExecutionFactory, type IGenAIService, type IReferencesService, type IWorkspaceAccessControlService, type IWorkspaceAgentsService, type IWorkspaceAttributesService, type IWorkspaceAutomationService, type IWorkspaceCatalogFactory, type IWorkspaceComputedAttributesService, type IWorkspaceDashboardsService, type IWorkspaceDatasetsService, type IWorkspaceDescriptor, type IWorkspaceDescriptorUpdate, type IWorkspaceExportDefinitionsService, type IWorkspaceExportTemplatesService, type IWorkspaceFactsService, type IWorkspaceInsightsService, type IWorkspaceKeyDriverAnalysisService, type IWorkspaceLogicalModelService, type IWorkspaceMeasuresService, type IWorkspaceObjectPermissionsService, type IWorkspaceParametersService, type IWorkspacePermissionsService, type IWorkspaceSettingsService, type IWorkspaceStylingService, type IWorkspaceUserGroupsQuery, type IWorkspaceUsersQuery } from "@gooddata/sdk-backend-spi";
1
+ import { type IAnalyticalWorkspace, type IAttributeHierarchiesService, type IDataFiltersService, type IDateFilterConfigsQuery, type IExecutionFactory, type IGenAIService, type IReferencesService, type IWorkspaceAccessControlService, type IWorkspaceAgentsService, type IWorkspaceAttributesService, type IWorkspaceAutomationService, type IWorkspaceCatalogFactory, type IWorkspaceComputedAttributesService, type IWorkspaceDashboardsService, type IWorkspaceDatasetsService, type IWorkspaceDescriptor, type IWorkspaceDescriptorUpdate, type IWorkspaceExportDefinitionsService, type IWorkspaceExportTemplatesService, type IWorkspaceFactsService, type IWorkspaceInsightsService, type IWorkspaceKeyDriverAnalysisService, type IWorkspaceLogicalModelService, type IWorkspaceMeasuresService, type IWorkspaceObjectPermissionsService, type IWorkspaceParametersService, type IWorkspacePermissionsService, type IWorkspaceReportsService, type IWorkspaceSettingsService, type IWorkspaceStylingService, type IWorkspaceUserGroupsQuery, type IWorkspaceUsersQuery } from "@gooddata/sdk-backend-spi";
2
2
  import { type DecoratorFactories } from "./types.js";
3
3
  export declare class AnalyticalWorkspaceDecorator implements IAnalyticalWorkspace {
4
4
  workspace: string;
@@ -36,5 +36,6 @@ export declare class AnalyticalWorkspaceDecorator implements IAnalyticalWorkspac
36
36
  genAI(): IGenAIService;
37
37
  references(): IReferencesService;
38
38
  exportTemplates(): IWorkspaceExportTemplatesService;
39
+ reports(): IWorkspaceReportsService;
39
40
  }
40
41
  //# sourceMappingURL=analyticalWorkspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyticalWorkspace.d.ts","sourceRoot":"","sources":["../../src/decoratedBackend/analyticalWorkspace.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,mCAAmC,EACxC,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,kCAAkC,EACvC,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EAC5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,qBAAa,4BAA6B,YAAW,oBAAoB;IAC9D,SAAS,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAE/C,YAAY,SAAS,EAAE,oBAAoB,EAAE,SAAS,EAAE,kBAAkB,EAIzE;IAEM,aAAa,CAAC,qBAAqB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAEnF;IAEM,gBAAgB,CAAC,UAAU,EAAE,0BAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAE7F;IAEM,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAErE;IAEM,UAAU,IAAI,2BAA2B,CAQ/C;IAEM,SAAS,IAAI,iBAAiB,CAQpC;IAEM,OAAO,IAAI,wBAAwB,CAQzC;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,QAAQ,IAAI,yBAAyB,CAQ3C;IAEM,UAAU,IAAI,2BAA2B,CAE/C;IAEM,kBAAkB,IAAI,mCAAmC,CAE/D;IAEM,KAAK,IAAI,sBAAsB,CAQrC;IAEM,QAAQ,IAAI,yBAAyB,CAQ3C;IAEM,UAAU,IAAI,2BAA2B,CAQ/C;IAEM,QAAQ,IAAI,yBAAyB,CAQ3C;IAEM,OAAO,IAAI,wBAAwB,CAEzC;IAEM,QAAQ,IAAI,yBAAyB,CAQ3C;IAEM,WAAW,IAAI,4BAA4B,CAEjD;IAEM,KAAK,IAAI,oBAAoB,CAEnC;IAEM,iBAAiB,IAAI,uBAAuB,CAElD;IAEM,UAAU,IAAI,yBAAyB,CAE7C;IAEM,aAAa,IAAI,8BAA8B,CAErD;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,oBAAoB,IAAI,4BAA4B,CAE1D;IAEM,MAAM,IAAI,uBAAuB,CAEvC;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,WAAW,IAAI,mBAAmB,CAExC;IAEM,YAAY,IAAI,6BAA6B,CAEnD;IAEM,WAAW,IAAI,2BAA2B,CAQhD;IAEM,KAAK,IAAI,aAAa,CAE5B;IAEM,UAAU,IAAI,kBAAkB,CAEtC;IAEM,eAAe,IAAI,gCAAgC,CAQzD;CACJ"}
1
+ {"version":3,"file":"analyticalWorkspace.d.ts","sourceRoot":"","sources":["../../src/decoratedBackend/analyticalWorkspace.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,mCAAmC,EACxC,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,kCAAkC,EACvC,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EAC5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,qBAAa,4BAA6B,YAAW,oBAAoB;IAC9D,SAAS,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAE/C,YAAY,SAAS,EAAE,oBAAoB,EAAE,SAAS,EAAE,kBAAkB,EAIzE;IAEM,aAAa,CAAC,qBAAqB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAEnF;IAEM,gBAAgB,CAAC,UAAU,EAAE,0BAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAE7F;IAEM,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAErE;IAEM,UAAU,IAAI,2BAA2B,CAQ/C;IAEM,SAAS,IAAI,iBAAiB,CAQpC;IAEM,OAAO,IAAI,wBAAwB,CAQzC;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,QAAQ,IAAI,yBAAyB,CAQ3C;IAEM,UAAU,IAAI,2BAA2B,CAE/C;IAEM,kBAAkB,IAAI,mCAAmC,CAE/D;IAEM,KAAK,IAAI,sBAAsB,CAQrC;IAEM,QAAQ,IAAI,yBAAyB,CAQ3C;IAEM,UAAU,IAAI,2BAA2B,CAQ/C;IAEM,QAAQ,IAAI,yBAAyB,CAQ3C;IAEM,OAAO,IAAI,wBAAwB,CAEzC;IAEM,QAAQ,IAAI,yBAAyB,CAQ3C;IAEM,WAAW,IAAI,4BAA4B,CAEjD;IAEM,KAAK,IAAI,oBAAoB,CAEnC;IAEM,iBAAiB,IAAI,uBAAuB,CAElD;IAEM,UAAU,IAAI,yBAAyB,CAE7C;IAEM,aAAa,IAAI,8BAA8B,CAErD;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,oBAAoB,IAAI,4BAA4B,CAE1D;IAEM,MAAM,IAAI,uBAAuB,CAEvC;IAEM,iBAAiB,IAAI,kCAAkC,CAE7D;IAEM,WAAW,IAAI,mBAAmB,CAExC;IAEM,YAAY,IAAI,6BAA6B,CAEnD;IAEM,WAAW,IAAI,2BAA2B,CAQhD;IAEM,KAAK,IAAI,aAAa,CAE5B;IAEM,UAAU,IAAI,kBAAkB,CAEtC;IAEM,eAAe,IAAI,gCAAgC,CAQzD;IAEM,OAAO,IAAI,wBAAwB,CAQzC;CACJ"}
@@ -145,4 +145,11 @@ export class AnalyticalWorkspaceDecorator {
145
145
  }
146
146
  return this.decorated.exportTemplates();
147
147
  }
148
+ reports() {
149
+ const { workspaceReports } = this.factories;
150
+ if (workspaceReports) {
151
+ return workspaceReports(this.decorated.reports(), this.workspace);
152
+ }
153
+ return this.decorated.reports();
154
+ }
148
155
  }
@@ -1,4 +1,4 @@
1
- import { type IExecutionFactory, type IGeoService, type IOrganizationExportTemplatesService, type ISecuritySettingsService, type IWorkspaceAttributesService, type IWorkspaceAutomationService, type IWorkspaceCatalogFactory, type IWorkspaceDashboardsService, type IWorkspaceDatasetsService, type IWorkspaceExportTemplatesService, type IWorkspaceFactsService, type IWorkspaceInsightsService, type IWorkspaceMeasuresService, type IWorkspaceSettingsService } from "@gooddata/sdk-backend-spi";
1
+ import { type IExecutionFactory, type IGeoService, type IOrganizationExportTemplatesService, type ISecuritySettingsService, type IWorkspaceAttributesService, type IWorkspaceAutomationService, type IWorkspaceCatalogFactory, type IWorkspaceDashboardsService, type IWorkspaceDatasetsService, type IWorkspaceExportTemplatesService, type IWorkspaceFactsService, type IWorkspaceInsightsService, type IWorkspaceMeasuresService, type IWorkspaceReportsService, type IWorkspaceSettingsService } from "@gooddata/sdk-backend-spi";
2
2
  /**
3
3
  * @alpha
4
4
  */
@@ -55,6 +55,10 @@ export type OrganizationExportTemplatesDecoratorFactory = (exportTemplates: IOrg
55
55
  * @alpha
56
56
  */
57
57
  export type WorkspaceExportTemplatesDecoratorFactory = (exportTemplates: IWorkspaceExportTemplatesService, workspace: string) => IWorkspaceExportTemplatesService;
58
+ /**
59
+ * @alpha
60
+ */
61
+ export type WorkspaceReportsDecoratorFactory = (reports: IWorkspaceReportsService, workspace: string) => IWorkspaceReportsService;
58
62
  /**
59
63
  * Provides factory functions for the different decorators (currently only supports execution
60
64
  * decorator). Input to each factory function is the original implementation from the wrapped backend, output
@@ -77,5 +81,6 @@ export type DecoratorFactories = {
77
81
  geo?: GeoDecoratorFactory;
78
82
  organizationExportTemplates?: OrganizationExportTemplatesDecoratorFactory;
79
83
  workspaceExportTemplates?: WorkspaceExportTemplatesDecoratorFactory;
84
+ workspaceReports?: WorkspaceReportsDecoratorFactory;
80
85
  };
81
86
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/decoratedBackend/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/decoratedBackend/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type IWorkspaceReportsService } from "@gooddata/sdk-backend-spi";
2
+ import { type IReport, type IReportDefinition, type IReportPageLayout, type IReportPageLayoutDefinition, type IReportTemplate, type IReportTemplateDefinition, type ObjRef } from "@gooddata/sdk-model";
3
+ /**
4
+ * Base class for report-service decorators. Delegates every method of the decorated
5
+ * `IWorkspaceReportsService`; subclasses override the methods they customize.
6
+ *
7
+ * @alpha
8
+ */
9
+ export declare abstract class DecoratedWorkspaceReportsService implements IWorkspaceReportsService {
10
+ protected readonly decorated: IWorkspaceReportsService;
11
+ protected constructor(decorated: IWorkspaceReportsService);
12
+ getReportPageLayouts(): Promise<IReportPageLayout[]>;
13
+ getReportPageLayout(ref: ObjRef): Promise<IReportPageLayout>;
14
+ createReportPageLayout(page: IReportPageLayoutDefinition): Promise<IReportPageLayout>;
15
+ updateReportPageLayout(page: IReportPageLayout): Promise<IReportPageLayout>;
16
+ deleteReportPageLayout(ref: ObjRef): Promise<void>;
17
+ getReportTemplates(): Promise<IReportTemplate[]>;
18
+ getReportTemplate(ref: ObjRef): Promise<IReportTemplate>;
19
+ createReportTemplate(template: IReportTemplateDefinition): Promise<IReportTemplate>;
20
+ updateReportTemplate(template: IReportTemplate): Promise<IReportTemplate>;
21
+ deleteReportTemplate(ref: ObjRef): Promise<void>;
22
+ getReports(): Promise<IReport[]>;
23
+ getReport(ref: ObjRef): Promise<IReport>;
24
+ createReport(report: IReportDefinition): Promise<IReport>;
25
+ updateReport(report: IReport): Promise<IReport>;
26
+ deleteReport(ref: ObjRef): Promise<void>;
27
+ }
28
+ //# sourceMappingURL=workspaceReports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceReports.d.ts","sourceRoot":"","sources":["../../src/decoratedBackend/workspaceReports.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;AAE7B;;;;;GAKG;AACH,8BAAsB,gCAAiC,YAAW,wBAAwB;IAChE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,wBAAwB;IAA5E,SAAS,aAAgC,SAAS,EAAE,wBAAwB,EAAI;IAEzE,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAE1D;IAEM,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAElE;IAEM,sBAAsB,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAE3F;IAEM,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAEjF;IAEM,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD;IAEM,kBAAkB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAEtD;IAEM,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAE9D;IAEM,oBAAoB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC,CAEzF;IAEM,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAE/E;IAEM,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtD;IAEM,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAEtC;IAEM,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9C;IAEM,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;IAEM,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAErD;IAEM,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9C;CACJ"}
@@ -0,0 +1,58 @@
1
+ // (C) 2026 GoodData Corporation
2
+ /**
3
+ * Base class for report-service decorators. Delegates every method of the decorated
4
+ * `IWorkspaceReportsService`; subclasses override the methods they customize.
5
+ *
6
+ * @alpha
7
+ */
8
+ export class DecoratedWorkspaceReportsService {
9
+ decorated;
10
+ constructor(decorated) {
11
+ this.decorated = decorated;
12
+ }
13
+ getReportPageLayouts() {
14
+ return this.decorated.getReportPageLayouts();
15
+ }
16
+ getReportPageLayout(ref) {
17
+ return this.decorated.getReportPageLayout(ref);
18
+ }
19
+ createReportPageLayout(page) {
20
+ return this.decorated.createReportPageLayout(page);
21
+ }
22
+ updateReportPageLayout(page) {
23
+ return this.decorated.updateReportPageLayout(page);
24
+ }
25
+ deleteReportPageLayout(ref) {
26
+ return this.decorated.deleteReportPageLayout(ref);
27
+ }
28
+ getReportTemplates() {
29
+ return this.decorated.getReportTemplates();
30
+ }
31
+ getReportTemplate(ref) {
32
+ return this.decorated.getReportTemplate(ref);
33
+ }
34
+ createReportTemplate(template) {
35
+ return this.decorated.createReportTemplate(template);
36
+ }
37
+ updateReportTemplate(template) {
38
+ return this.decorated.updateReportTemplate(template);
39
+ }
40
+ deleteReportTemplate(ref) {
41
+ return this.decorated.deleteReportTemplate(ref);
42
+ }
43
+ getReports() {
44
+ return this.decorated.getReports();
45
+ }
46
+ getReport(ref) {
47
+ return this.decorated.getReport(ref);
48
+ }
49
+ createReport(report) {
50
+ return this.decorated.createReport(report);
51
+ }
52
+ updateReport(report) {
53
+ return this.decorated.updateReport(report);
54
+ }
55
+ deleteReport(ref) {
56
+ return this.decorated.deleteReport(ref);
57
+ }
58
+ }
@@ -0,0 +1,54 @@
1
+ import { type IWorkspaceReportsService } from "@gooddata/sdk-backend-spi";
2
+ import { type IReport, type IReportDefinition, type IReportPageLayout, type IReportPageLayoutDefinition, type IReportTemplate, type IReportTemplateDefinition, type ObjRef } from "@gooddata/sdk-model";
3
+ /**
4
+ * Storage hook for {@link InMemoryWorkspaceReportsService}: where the serialized service
5
+ * state is loaded from on construction and saved to after every mutation.
6
+ *
7
+ * @alpha
8
+ */
9
+ export interface IWorkspaceReportsPersistence {
10
+ load(): string | null;
11
+ save(value: string): void;
12
+ }
13
+ /**
14
+ * In-memory implementation of the reports service.
15
+ *
16
+ * @remarks
17
+ * Serves the built-in report page layouts and stores created layouts, templates and reports in memory.
18
+ * Without a persistence hook the state lives only as long as the instance (dummy backend, tests);
19
+ * with one (e.g. localStorage) the state is rehydrated on construction and saved after every mutation.
20
+ *
21
+ * @alpha
22
+ */
23
+ export declare class InMemoryWorkspaceReportsService implements IWorkspaceReportsService {
24
+ private readonly persistence?;
25
+ private readonly pageLayouts;
26
+ private readonly templates;
27
+ private readonly reports;
28
+ private sequence;
29
+ private persistenceDisabled;
30
+ constructor(persistence?: IWorkspaceReportsPersistence | undefined);
31
+ private hydrate;
32
+ private persist;
33
+ private newRef;
34
+ private findBuiltInPageLayout;
35
+ getReportPageLayouts(): Promise<IReportPageLayout[]>;
36
+ getReportPageLayout(ref: ObjRef): Promise<IReportPageLayout>;
37
+ createReportPageLayout(layout: IReportPageLayoutDefinition): Promise<IReportPageLayout>;
38
+ updateReportPageLayout(layout: IReportPageLayout): Promise<IReportPageLayout>;
39
+ deleteReportPageLayout(ref: ObjRef): Promise<void>;
40
+ private assertPageLayoutEditable;
41
+ getReportTemplates(): Promise<IReportTemplate[]>;
42
+ getReportTemplate(ref: ObjRef): Promise<IReportTemplate>;
43
+ createReportTemplate(template: IReportTemplateDefinition): Promise<IReportTemplate>;
44
+ updateReportTemplate(template: IReportTemplate): Promise<IReportTemplate>;
45
+ deleteReportTemplate(ref: ObjRef): Promise<void>;
46
+ getReports(): Promise<IReport[]>;
47
+ getReport(ref: ObjRef): Promise<IReport>;
48
+ createReport(report: IReportDefinition): Promise<IReport>;
49
+ updateReport(report: IReport): Promise<IReport>;
50
+ deleteReport(ref: ObjRef): Promise<void>;
51
+ private store;
52
+ private assertExistsAndUnlocked;
53
+ }
54
+ //# sourceMappingURL=InMemoryWorkspaceReportsService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryWorkspaceReportsService.d.ts","sourceRoot":"","sources":["../../src/dummyBackend/InMemoryWorkspaceReportsService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,wBAAwB,EAAmB,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EAEH,KAAK,OAAO,EACZ,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,MAAM,EAMd,MAAM,qBAAqB,CAAC;AAkC7B;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IACzC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AASD;;;;;;;;;GASG;AACH,qBAAa,+BAAgC,YAAW,wBAAwB;IAUhE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IATzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IACpE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAK;IAIrB,OAAO,CAAC,mBAAmB,CAAS;IAEpC,YAA6B,WAAW,CAAC,0CAA8B,EAEtE;IAMD,OAAO,CAAC,OAAO;IAyBf,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,qBAAqB;IAItB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAG1D;IAEM,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAWlE;IAEM,sBAAsB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAc7F;IAEM,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAOnF;IAEM,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxD;IAED,OAAO,CAAC,wBAAwB;IASzB,kBAAkB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAGtD;IAEM,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAO9D;IAEM,oBAAoB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC,CASzF;IAEM,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAO/E;IAEM,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtD;IAEM,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAGtC;IAEM,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO9C;IAEM,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAS/D;IAEM,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrD;IAEM,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9C;IAED,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,uBAAuB;CAalC"}
@@ -0,0 +1,252 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { UnexpectedError } from "@gooddata/sdk-backend-spi";
3
+ import { BuiltInReportPageLayouts, areObjRefsEqual, idRef, isIdentifierRef, isObjRef, objRefToString, } from "@gooddata/sdk-model";
4
+ // Key ignores the identifier ref's optional object type (typed and untyped identifier
5
+ // refs are equivalent under areObjRefsEqual) but keeps the ref kind, so an identifier
6
+ // and a URI with the same string stay distinct.
7
+ function refKey(ref) {
8
+ return isIdentifierRef(ref) ? `id:${ref.identifier}` : `uri:${ref.uri}`;
9
+ }
10
+ // JSON round-trip detaches stored state from caller-held objects on both the
11
+ // write and the read side, the way a real backend's serialization does.
12
+ function deepClone(value) {
13
+ return JSON.parse(JSON.stringify(value));
14
+ }
15
+ function decode(value) {
16
+ const decoded = new Map();
17
+ if (!Array.isArray(value)) {
18
+ return decoded;
19
+ }
20
+ value.forEach((entry) => {
21
+ if (!isObjRef(entry?.ref)) {
22
+ throw new Error("Persisted report entry has no object reference.");
23
+ }
24
+ decoded.set(refKey(entry.ref), entry);
25
+ });
26
+ return decoded;
27
+ }
28
+ function replace(target, source) {
29
+ target.clear();
30
+ source.forEach((value, key) => target.set(key, value));
31
+ }
32
+ /**
33
+ * In-memory implementation of the reports service.
34
+ *
35
+ * @remarks
36
+ * Serves the built-in report page layouts and stores created layouts, templates and reports in memory.
37
+ * Without a persistence hook the state lives only as long as the instance (dummy backend, tests);
38
+ * with one (e.g. localStorage) the state is rehydrated on construction and saved after every mutation.
39
+ *
40
+ * @alpha
41
+ */
42
+ export class InMemoryWorkspaceReportsService {
43
+ persistence;
44
+ pageLayouts = new Map();
45
+ templates = new Map();
46
+ reports = new Map();
47
+ sequence = 0;
48
+ // Set when the storage rejected a write. Read-through would then restore the older
49
+ // persisted snapshot and silently discard the mutation, so the in-memory state
50
+ // becomes authoritative from that point on.
51
+ persistenceDisabled = false;
52
+ constructor(persistence) {
53
+ this.persistence = persistence;
54
+ this.hydrate();
55
+ }
56
+ // Persisted storage is read through on every operation, so no instance can act on a
57
+ // stale snapshot and overwrite state written by another instance, tab or process.
58
+ // Storage failures (sandboxed embeds, exhausted quota, corrupted value) degrade to
59
+ // the in-memory state rather than propagating to the caller.
60
+ hydrate() {
61
+ if (!this.persistence || this.persistenceDisabled) {
62
+ return;
63
+ }
64
+ try {
65
+ const serialized = this.persistence.load();
66
+ if (!serialized) {
67
+ return;
68
+ }
69
+ const state = JSON.parse(serialized);
70
+ // Decode into fresh maps first: a malformed entry must not leave the service
71
+ // with half-cleared state, so the swap happens only once everything decoded.
72
+ const pageLayouts = decode(state?.pageLayouts);
73
+ const templates = decode(state?.templates);
74
+ const reports = decode(state?.reports);
75
+ replace(this.pageLayouts, pageLayouts);
76
+ replace(this.templates, templates);
77
+ replace(this.reports, reports);
78
+ this.sequence = Math.max(this.sequence, typeof state?.sequence === "number" ? state.sequence : 0);
79
+ }
80
+ catch {
81
+ // unreadable, malformed or schema-incompatible state — keep the in-memory state
82
+ }
83
+ }
84
+ persist() {
85
+ if (!this.persistence || this.persistenceDisabled) {
86
+ return;
87
+ }
88
+ const state = {
89
+ pageLayouts: [...this.pageLayouts.values()],
90
+ templates: [...this.templates.values()],
91
+ reports: [...this.reports.values()],
92
+ sequence: this.sequence,
93
+ };
94
+ try {
95
+ this.persistence.save(JSON.stringify(state));
96
+ }
97
+ catch {
98
+ this.persistenceDisabled = true;
99
+ }
100
+ }
101
+ newRef(type, store) {
102
+ let ref;
103
+ do {
104
+ this.sequence += 1;
105
+ ref = idRef(`${type}_${this.sequence}`, type);
106
+ } while (store.has(refKey(ref)));
107
+ return ref;
108
+ }
109
+ findBuiltInPageLayout(ref) {
110
+ return BuiltInReportPageLayouts.find((layout) => areObjRefsEqual(layout.ref, ref));
111
+ }
112
+ getReportPageLayouts() {
113
+ this.hydrate();
114
+ return Promise.resolve([...BuiltInReportPageLayouts, ...deepClone([...this.pageLayouts.values()])]);
115
+ }
116
+ getReportPageLayout(ref) {
117
+ this.hydrate();
118
+ const builtIn = this.findBuiltInPageLayout(ref);
119
+ if (builtIn) {
120
+ return Promise.resolve(builtIn);
121
+ }
122
+ const layout = this.pageLayouts.get(refKey(ref));
123
+ if (!layout) {
124
+ throw new UnexpectedError(`Report page layout "${objRefToString(ref)}" does not exist.`);
125
+ }
126
+ return Promise.resolve(deepClone(layout));
127
+ }
128
+ createReportPageLayout(layout) {
129
+ this.hydrate();
130
+ if (layout.ref && this.findBuiltInPageLayout(layout.ref)) {
131
+ throw new UnexpectedError(`Report page layout "${objRefToString(layout.ref)}" is built-in and cannot be replaced.`);
132
+ }
133
+ const created = {
134
+ ...deepClone(layout),
135
+ ref: layout.ref ?? this.newRef("reportPageLayout", this.pageLayouts),
136
+ };
137
+ this.store(this.pageLayouts, created, "Report page layout");
138
+ this.persist();
139
+ return Promise.resolve(deepClone(created));
140
+ }
141
+ updateReportPageLayout(layout) {
142
+ this.hydrate();
143
+ this.assertPageLayoutEditable(layout.ref);
144
+ const updated = { ...deepClone(layout), isBuiltIn: undefined };
145
+ this.pageLayouts.set(refKey(layout.ref), updated);
146
+ this.persist();
147
+ return Promise.resolve(deepClone(updated));
148
+ }
149
+ deleteReportPageLayout(ref) {
150
+ this.hydrate();
151
+ this.assertPageLayoutEditable(ref);
152
+ this.pageLayouts.delete(refKey(ref));
153
+ this.persist();
154
+ return Promise.resolve();
155
+ }
156
+ assertPageLayoutEditable(ref) {
157
+ if (this.findBuiltInPageLayout(ref)) {
158
+ throw new UnexpectedError(`Report page layout "${objRefToString(ref)}" is built-in and cannot be changed.`);
159
+ }
160
+ this.assertExistsAndUnlocked(this.pageLayouts, ref, "Report page layout");
161
+ }
162
+ getReportTemplates() {
163
+ this.hydrate();
164
+ return Promise.resolve(deepClone([...this.templates.values()]));
165
+ }
166
+ getReportTemplate(ref) {
167
+ this.hydrate();
168
+ const template = this.templates.get(refKey(ref));
169
+ if (!template) {
170
+ throw new UnexpectedError(`Report template "${objRefToString(ref)}" does not exist.`);
171
+ }
172
+ return Promise.resolve(deepClone(template));
173
+ }
174
+ createReportTemplate(template) {
175
+ this.hydrate();
176
+ const created = {
177
+ ...deepClone(template),
178
+ ref: template.ref ?? this.newRef("reportTemplate", this.templates),
179
+ };
180
+ this.store(this.templates, created, "Report template");
181
+ this.persist();
182
+ return Promise.resolve(deepClone(created));
183
+ }
184
+ updateReportTemplate(template) {
185
+ this.hydrate();
186
+ this.assertExistsAndUnlocked(this.templates, template.ref, "Report template");
187
+ const updated = deepClone(template);
188
+ this.templates.set(refKey(template.ref), updated);
189
+ this.persist();
190
+ return Promise.resolve(deepClone(updated));
191
+ }
192
+ deleteReportTemplate(ref) {
193
+ this.hydrate();
194
+ this.assertExistsAndUnlocked(this.templates, ref, "Report template");
195
+ this.templates.delete(refKey(ref));
196
+ this.persist();
197
+ return Promise.resolve();
198
+ }
199
+ getReports() {
200
+ this.hydrate();
201
+ return Promise.resolve(deepClone([...this.reports.values()]));
202
+ }
203
+ getReport(ref) {
204
+ this.hydrate();
205
+ const report = this.reports.get(refKey(ref));
206
+ if (!report) {
207
+ throw new UnexpectedError(`Report "${objRefToString(ref)}" does not exist.`);
208
+ }
209
+ return Promise.resolve(deepClone(report));
210
+ }
211
+ createReport(report) {
212
+ this.hydrate();
213
+ const created = {
214
+ ...deepClone(report),
215
+ ref: report.ref ?? this.newRef("report", this.reports),
216
+ };
217
+ this.store(this.reports, created, "Report");
218
+ this.persist();
219
+ return Promise.resolve(deepClone(created));
220
+ }
221
+ updateReport(report) {
222
+ this.hydrate();
223
+ this.assertExistsAndUnlocked(this.reports, report.ref, "Report");
224
+ const updated = deepClone(report);
225
+ this.reports.set(refKey(report.ref), updated);
226
+ this.persist();
227
+ return Promise.resolve(deepClone(updated));
228
+ }
229
+ deleteReport(ref) {
230
+ this.hydrate();
231
+ this.assertExistsAndUnlocked(this.reports, ref, "Report");
232
+ this.reports.delete(refKey(ref));
233
+ this.persist();
234
+ return Promise.resolve();
235
+ }
236
+ store(store, object, what) {
237
+ const key = refKey(object.ref);
238
+ if (store.has(key)) {
239
+ throw new UnexpectedError(`${what} "${objRefToString(object.ref)}" already exists.`);
240
+ }
241
+ store.set(key, object);
242
+ }
243
+ assertExistsAndUnlocked(store, ref, what) {
244
+ const existing = store.get(refKey(ref));
245
+ if (!existing) {
246
+ throw new UnexpectedError(`${what} "${objRefToString(ref)}" does not exist.`);
247
+ }
248
+ if (existing.isLocked) {
249
+ throw new UnexpectedError(`${what} "${objRefToString(ref)}" is locked.`);
250
+ }
251
+ }
252
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dummyBackend/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAMH,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EA4B7B,KAAK,SAAS,EAYd,KAAK,gBAAgB,EA4FxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EA0CH,KAAK,oBAAoB,EA4C5B,MAAM,qBAAqB,CAAC;AAS7B;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GAAG;IACxD;;;;;;;;;;OAUG;IACH,qBAAqB,EAAE,KAAK,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;CACzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,kBAGvC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,MAAM,GAAE,kBAA8C,GAAG,kBAAkB,CAqFvG;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CACzB,UAAU,EAAE,oBAAoB,EAChC,MAAM,CAAC,EAAE,gBAAgB,EACzB,MAAM,GAAE,kBAA8C,GACvD,SAAS,CAwDX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dummyBackend/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAMH,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EA4B7B,KAAK,SAAS,EAYd,KAAK,gBAAgB,EA6FxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EA0CH,KAAK,oBAAoB,EA4C5B,MAAM,qBAAqB,CAAC;AAU7B;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GAAG;IACxD;;;;;;;;;;OAUG;IACH,qBAAqB,EAAE,KAAK,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;CACzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,kBAGvC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,MAAM,GAAE,kBAA8C,GAAG,kBAAkB,CA2FvG;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CACzB,UAAU,EAAE,oBAAoB,EAChC,MAAM,CAAC,EAAE,gBAAgB,EACzB,MAAM,GAAE,kBAA8C,GACvD,SAAS,CAwDX"}
@@ -7,6 +7,7 @@ import { DummyAnalyticsCatalogService } from "./DummyAnalyticsCatalogService.js"
7
7
  import { DummyChatConversations, DummyGenAIChatThread } from "./DummyGenAIChatThread.js";
8
8
  import { DummySemanticQualityService } from "./DummySemanticQualityService.js";
9
9
  import { DummySemanticSearchQueryBuilder } from "./DummySemanticSearch.js";
10
+ import { InMemoryWorkspaceReportsService } from "./InMemoryWorkspaceReportsService.js";
10
11
  /**
11
12
  *
12
13
  */
@@ -27,6 +28,7 @@ export const defaultDummyBackendConfig = {
27
28
  * @internal
28
29
  */
29
30
  export function dummyBackend(config = defaultDummyBackendConfig) {
31
+ const reportsServices = new Map();
30
32
  const noopBackend = {
31
33
  capabilities: {
32
34
  canCalculateTotals: true,
@@ -61,7 +63,12 @@ export function dummyBackend(config = defaultDummyBackendConfig) {
61
63
  throw new NotSupported("not supported");
62
64
  },
63
65
  workspace(id) {
64
- return dummyWorkspace(id, config);
66
+ let reportsService = reportsServices.get(id);
67
+ if (!reportsService) {
68
+ reportsService = new InMemoryWorkspaceReportsService();
69
+ reportsServices.set(id, reportsService);
70
+ }
71
+ return dummyWorkspace(id, config, reportsService);
65
72
  },
66
73
  entitlements() {
67
74
  throw new NotSupported("not supported");
@@ -194,7 +201,7 @@ export function dummyDataView(definition, result, config = defaultDummyBackendCo
194
201
  //
195
202
  // Internals
196
203
  //
197
- function dummyWorkspace(workspace, config) {
204
+ function dummyWorkspace(workspace, config, reportsService) {
198
205
  return {
199
206
  workspace,
200
207
  async getDescriptor() {
@@ -331,6 +338,9 @@ function dummyWorkspace(workspace, config) {
331
338
  deleteExportTemplate: () => Promise.resolve(),
332
339
  };
333
340
  },
341
+ reports() {
342
+ return reportsService;
343
+ },
334
344
  };
335
345
  }
336
346
  function dummyDescriptor(workspaceId) {
package/esm/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export { type DummyBackendConfig, dummyBackend, dummyBackendEmptyData, dummyData
12
12
  export { DummySemanticSearchQueryBuilder } from "./dummyBackend/DummySemanticSearch.js";
13
13
  export { DummyGenAIChatThread, DummyChatConversations } from "./dummyBackend/DummyGenAIChatThread.js";
14
14
  export { decoratedBackend } from "./decoratedBackend/index.js";
15
- export type { DecoratorFactories, CatalogDecoratorFactory, ExecutionDecoratorFactory, SecuritySettingsDecoratorFactory, WorkspaceSettingsDecoratorFactory, AutomationsDecoratorFactory, AttributesDecoratorFactory, InsightsDecoratorFactory, MeasuresDecoratorFactory, DatasetsDecoratorFactory, DashboardsDecoratorFactory, FactsDecoratorFactory, GeoDecoratorFactory, OrganizationExportTemplatesDecoratorFactory, WorkspaceExportTemplatesDecoratorFactory, } from "./decoratedBackend/types.js";
15
+ export type { DecoratorFactories, CatalogDecoratorFactory, ExecutionDecoratorFactory, SecuritySettingsDecoratorFactory, WorkspaceSettingsDecoratorFactory, AutomationsDecoratorFactory, AttributesDecoratorFactory, InsightsDecoratorFactory, MeasuresDecoratorFactory, DatasetsDecoratorFactory, DashboardsDecoratorFactory, FactsDecoratorFactory, GeoDecoratorFactory, OrganizationExportTemplatesDecoratorFactory, WorkspaceExportTemplatesDecoratorFactory, WorkspaceReportsDecoratorFactory, } from "./decoratedBackend/types.js";
16
16
  export { type PreparedExecutionWrapper, DecoratedExecutionFactory, DecoratedPreparedExecution, DecoratedExecutionResult, } from "./decoratedBackend/execution.js";
17
17
  export { DecoratedWorkspaceDashboardsService } from "./decoratedBackend/dashboards.js";
18
18
  export { DecoratedWorkspaceInsightsService } from "./decoratedBackend/insights.js";
@@ -20,6 +20,8 @@ export { type WorkspaceCatalogWrapper, DecoratedWorkspaceCatalogFactory, Decorat
20
20
  export { DecoratedSecuritySettingsService } from "./decoratedBackend/securitySettings.js";
21
21
  export { DecoratedOrganizationExportTemplatesService } from "./decoratedBackend/organizationExportTemplates.js";
22
22
  export { DecoratedWorkspaceExportTemplatesService } from "./decoratedBackend/workspaceExportTemplates.js";
23
+ export { DecoratedWorkspaceReportsService } from "./decoratedBackend/workspaceReports.js";
24
+ export { type IWorkspaceReportsPersistence, InMemoryWorkspaceReportsService, } from "./dummyBackend/InMemoryWorkspaceReportsService.js";
23
25
  export { DecoratedWorkspaceSettingsService } from "./decoratedBackend/workspaceSettings.js";
24
26
  export { type AnalyticalBackendCallbacks, withEventing } from "./eventingBackend/index.js";
25
27
  export { type CachingConfiguration, type CacheControl, withCaching, RecommendedCachingConfiguration, } from "./cachingBackend/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/esm/index.js CHANGED
@@ -21,6 +21,8 @@ export { DecoratedWorkspaceCatalogFactory, DecoratedWorkspaceCatalog, } from "./
21
21
  export { DecoratedSecuritySettingsService } from "./decoratedBackend/securitySettings.js";
22
22
  export { DecoratedOrganizationExportTemplatesService } from "./decoratedBackend/organizationExportTemplates.js";
23
23
  export { DecoratedWorkspaceExportTemplatesService } from "./decoratedBackend/workspaceExportTemplates.js";
24
+ export { DecoratedWorkspaceReportsService } from "./decoratedBackend/workspaceReports.js";
25
+ export { InMemoryWorkspaceReportsService, } from "./dummyBackend/InMemoryWorkspaceReportsService.js";
24
26
  export { DecoratedWorkspaceSettingsService } from "./decoratedBackend/workspaceSettings.js";
25
27
  export { withEventing } from "./eventingBackend/index.js";
26
28
  export { withCaching, RecommendedCachingConfiguration, } from "./cachingBackend/index.js";
@@ -143,6 +143,12 @@ import { IPostProcessing } from '@gooddata/sdk-model';
143
143
  import { IPreparedExecution } from '@gooddata/sdk-backend-spi';
144
144
  import { IPreparedExecutionOptions } from '@gooddata/sdk-backend-spi';
145
145
  import { IRawExportCustomOverrides } from '@gooddata/sdk-backend-spi';
146
+ import { IReport } from '@gooddata/sdk-model';
147
+ import { IReportDefinition } from '@gooddata/sdk-model';
148
+ import { IReportPageLayout } from '@gooddata/sdk-model';
149
+ import { IReportPageLayoutDefinition } from '@gooddata/sdk-model';
150
+ import { IReportTemplate } from '@gooddata/sdk-model';
151
+ import { IReportTemplateDefinition } from '@gooddata/sdk-model';
146
152
  import { IRequestCorrelationMetadata } from '@gooddata/sdk-backend-spi';
147
153
  import { IResultHeader } from '@gooddata/sdk-model';
148
154
  import { IScheduledMail } from '@gooddata/sdk-model';
@@ -174,6 +180,7 @@ import { IWorkspaceExportTemplatesService } from '@gooddata/sdk-backend-spi';
174
180
  import { IWorkspaceFactsService } from '@gooddata/sdk-backend-spi';
175
181
  import { IWorkspaceInsightsService } from '@gooddata/sdk-backend-spi';
176
182
  import { IWorkspaceMeasuresService } from '@gooddata/sdk-backend-spi';
183
+ import { IWorkspaceReportsService } from '@gooddata/sdk-backend-spi';
177
184
  import { IWorkspaceSettings } from '@gooddata/sdk-backend-spi';
178
185
  import { IWorkspaceSettingsService } from '@gooddata/sdk-backend-spi';
179
186
  import { KpiDrillDefinition } from '@gooddata/sdk-model';
@@ -1432,6 +1439,32 @@ export declare abstract class DecoratedWorkspaceInsightsService implements IWork
1432
1439
  getInsightWithAddedFilters<T extends IInsightDefinition>(insight: T, filters: IFilter[]): Promise<T>;
1433
1440
  }
1434
1441
 
1442
+ /**
1443
+ * Base class for report-service decorators. Delegates every method of the decorated
1444
+ * `IWorkspaceReportsService`; subclasses override the methods they customize.
1445
+ *
1446
+ * @alpha
1447
+ */
1448
+ export declare abstract class DecoratedWorkspaceReportsService implements IWorkspaceReportsService {
1449
+ protected readonly decorated: IWorkspaceReportsService;
1450
+ protected constructor(decorated: IWorkspaceReportsService);
1451
+ getReportPageLayouts(): Promise<IReportPageLayout[]>;
1452
+ getReportPageLayout(ref: ObjRef): Promise<IReportPageLayout>;
1453
+ createReportPageLayout(page: IReportPageLayoutDefinition): Promise<IReportPageLayout>;
1454
+ updateReportPageLayout(page: IReportPageLayout): Promise<IReportPageLayout>;
1455
+ deleteReportPageLayout(ref: ObjRef): Promise<void>;
1456
+ getReportTemplates(): Promise<IReportTemplate[]>;
1457
+ getReportTemplate(ref: ObjRef): Promise<IReportTemplate>;
1458
+ createReportTemplate(template: IReportTemplateDefinition): Promise<IReportTemplate>;
1459
+ updateReportTemplate(template: IReportTemplate): Promise<IReportTemplate>;
1460
+ deleteReportTemplate(ref: ObjRef): Promise<void>;
1461
+ getReports(): Promise<IReport[]>;
1462
+ getReport(ref: ObjRef): Promise<IReport>;
1463
+ createReport(report: IReportDefinition): Promise<IReport>;
1464
+ updateReport(report: IReport): Promise<IReport>;
1465
+ deleteReport(ref: ObjRef): Promise<void>;
1466
+ }
1467
+
1435
1468
  /**
1436
1469
  * @alpha
1437
1470
  */
@@ -1500,6 +1533,7 @@ export declare type DecoratorFactories = {
1500
1533
  geo?: GeoDecoratorFactory;
1501
1534
  organizationExportTemplates?: OrganizationExportTemplatesDecoratorFactory;
1502
1535
  workspaceExportTemplates?: WorkspaceExportTemplatesDecoratorFactory;
1536
+ workspaceReports?: WorkspaceReportsDecoratorFactory;
1503
1537
  };
1504
1538
 
1505
1539
  /**
@@ -1924,6 +1958,48 @@ export declare class InMemoryPaging<T> implements IPagedResource<T> {
1924
1958
  allSorted(compareFn: (a: T, b: T) => number): Promise<T[]>;
1925
1959
  }
1926
1960
 
1961
+ /**
1962
+ * In-memory implementation of the reports service.
1963
+ *
1964
+ * @remarks
1965
+ * Serves the built-in report page layouts and stores created layouts, templates and reports in memory.
1966
+ * Without a persistence hook the state lives only as long as the instance (dummy backend, tests);
1967
+ * with one (e.g. localStorage) the state is rehydrated on construction and saved after every mutation.
1968
+ *
1969
+ * @alpha
1970
+ */
1971
+ export declare class InMemoryWorkspaceReportsService implements IWorkspaceReportsService {
1972
+ private readonly persistence?;
1973
+ private readonly pageLayouts;
1974
+ private readonly templates;
1975
+ private readonly reports;
1976
+ private sequence;
1977
+ private persistenceDisabled;
1978
+ constructor(persistence?: IWorkspaceReportsPersistence | undefined);
1979
+ private hydrate;
1980
+ private persist;
1981
+ private newRef;
1982
+ private findBuiltInPageLayout;
1983
+ getReportPageLayouts(): Promise<IReportPageLayout[]>;
1984
+ getReportPageLayout(ref: ObjRef): Promise<IReportPageLayout>;
1985
+ createReportPageLayout(layout: IReportPageLayoutDefinition): Promise<IReportPageLayout>;
1986
+ updateReportPageLayout(layout: IReportPageLayout): Promise<IReportPageLayout>;
1987
+ deleteReportPageLayout(ref: ObjRef): Promise<void>;
1988
+ private assertPageLayoutEditable;
1989
+ getReportTemplates(): Promise<IReportTemplate[]>;
1990
+ getReportTemplate(ref: ObjRef): Promise<IReportTemplate>;
1991
+ createReportTemplate(template: IReportTemplateDefinition): Promise<IReportTemplate>;
1992
+ updateReportTemplate(template: IReportTemplate): Promise<IReportTemplate>;
1993
+ deleteReportTemplate(ref: ObjRef): Promise<void>;
1994
+ getReports(): Promise<IReport[]>;
1995
+ getReport(ref: ObjRef): Promise<IReport>;
1996
+ createReport(report: IReportDefinition): Promise<IReport>;
1997
+ updateReport(report: IReport): Promise<IReport>;
1998
+ deleteReport(ref: ObjRef): Promise<void>;
1999
+ private store;
2000
+ private assertExistsAndUnlocked;
2001
+ }
2002
+
1927
2003
  /**
1928
2004
  * @internal
1929
2005
  */
@@ -1987,6 +2063,17 @@ export declare interface IWidgetBaseBuilder<T extends IWidget> extends IBuilder<
1987
2063
  uri(valueOrUpdateCallback: ValueOrUpdateCallback<string>): this;
1988
2064
  }
1989
2065
 
2066
+ /**
2067
+ * Storage hook for {@link InMemoryWorkspaceReportsService}: where the serialized service
2068
+ * state is loaded from on construction and saved to after every mutation.
2069
+ *
2070
+ * @alpha
2071
+ */
2072
+ export declare interface IWorkspaceReportsPersistence {
2073
+ load(): string | null;
2074
+ save(value: string): void;
2075
+ }
2076
+
1990
2077
  /**
1991
2078
  * Specifies workspace settings and current user settings to be adjusted by the decorator.
1992
2079
  *
@@ -2593,6 +2680,11 @@ export declare type WorkspaceCatalogWrapper = (catalog: IWorkspaceCatalog) => IW
2593
2680
  */
2594
2681
  export declare type WorkspaceExportTemplatesDecoratorFactory = (exportTemplates: IWorkspaceExportTemplatesService, workspace: string) => IWorkspaceExportTemplatesService;
2595
2682
 
2683
+ /**
2684
+ * @alpha
2685
+ */
2686
+ export declare type WorkspaceReportsDecoratorFactory = (reports: IWorkspaceReportsService, workspace: string) => IWorkspaceReportsService;
2687
+
2596
2688
  /**
2597
2689
  * @alpha
2598
2690
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-backend-base",
3
- "version": "11.54.0-alpha.6",
3
+ "version": "11.54.0",
4
4
  "description": "GoodData.UI SDK - Base for backend implementations",
5
5
  "license": "MIT",
6
6
  "author": "GoodData",
@@ -29,15 +29,15 @@
29
29
  "ts-invariant": "0.10.3",
30
30
  "tslib": "2.8.1",
31
31
  "uuid": "11.1.1",
32
- "@gooddata/sdk-backend-spi": "11.54.0-alpha.6",
33
- "@gooddata/sdk-model": "11.54.0-alpha.6",
34
- "@gooddata/util": "11.54.0-alpha.6"
32
+ "@gooddata/sdk-backend-spi": "11.54.0",
33
+ "@gooddata/sdk-model": "11.54.0",
34
+ "@gooddata/util": "11.54.0"
35
35
  },
36
36
  "devDependencies": {
37
- "@microsoft/api-documenter": "^7.17.0",
37
+ "@microsoft/api-documenter": "7.30.10",
38
38
  "@microsoft/api-extractor": "^7.55.2",
39
39
  "@types/lodash-es": "^4.17.12",
40
- "@types/spark-md5": "^3.0.1",
40
+ "@types/spark-md5": "3.0.5",
41
41
  "@typescript-eslint/eslint-plugin": "8.58.0",
42
42
  "@typescript-eslint/parser": "8.58.0",
43
43
  "@typescript/native-preview": "7.0.0-dev.20260202.1",
@@ -56,9 +56,9 @@
56
56
  "oxlint-tsgolint": "0.15.0",
57
57
  "typescript": "5.9.3",
58
58
  "vitest": "4.1.8",
59
- "@gooddata/eslint-config": "11.54.0-alpha.6",
60
- "@gooddata/oxlint-config": "11.54.0-alpha.6",
61
- "@gooddata/reference-workspace": "11.54.0-alpha.6"
59
+ "@gooddata/oxlint-config": "11.54.0",
60
+ "@gooddata/eslint-config": "11.54.0",
61
+ "@gooddata/reference-workspace": "11.54.0"
62
62
  },
63
63
  "scripts": {
64
64
  "_phase:build": "npm run build",