@gooddata/sdk-backend-tiger 11.56.0-alpha.7 → 11.56.0-alpha.8

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
- export declare const LIB_VERSION = "11.56.0-alpha.7";
1
+ export declare const LIB_VERSION = "11.56.0-alpha.8";
2
2
  export declare const LIB_DESCRIPTION = "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN";
3
3
  export declare const LIB_NAME = "@gooddata/sdk-backend-tiger";
4
4
  //# sourceMappingURL=__version.d.ts.map
package/esm/__version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // (C) 2021 GoodData Corporation
2
2
  // DO NOT CHANGE THIS FILE, IT IS RE-GENERATED ON EVERY BUILD
3
- export const LIB_VERSION = "11.56.0-alpha.7";
3
+ export const LIB_VERSION = "11.56.0-alpha.8";
4
4
  export const LIB_DESCRIPTION = "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN";
5
5
  export const LIB_NAME = "@gooddata/sdk-backend-tiger";
@@ -1,4 +1,4 @@
1
- import { type IAttributeWithReferences, type IElementsQueryFactory, type IWorkspaceAttributesService } from "@gooddata/sdk-backend-spi";
1
+ import { type IAttributeWithReferences, type IConnectedAttributesOptions, type IElementsQueryFactory, type IWorkspaceAttributesService } from "@gooddata/sdk-backend-spi";
2
2
  import { type IAttributeDisplayFormMetadataObject, type IAttributeMetadataObject, type IMetadataObject, type IMetadataObjectIdentity, type ObjRef } from "@gooddata/sdk-model";
3
3
  import { type DateFormatter } from "../../../convertors/fromBackend/dateFormatting/types.js";
4
4
  import { type TigerAuthenticatedCallGuard } from "../../../types/index.js";
@@ -22,6 +22,6 @@ export declare class TigerWorkspaceAttributes implements IWorkspaceAttributesSer
22
22
  getCommonAttributesBatch(): Promise<ObjRef[][]>;
23
23
  getAttributeDatasetMeta(ref: ObjRef): Promise<IMetadataObject>;
24
24
  getAttributesWithReferences(refs: ObjRef[]): Promise<IAttributeWithReferences[]>;
25
- getConnectedAttributesByDisplayForm(ref: ObjRef): Promise<ObjRef[]>;
25
+ getConnectedAttributesByDisplayForm(ref: ObjRef, options?: IConnectedAttributesOptions): Promise<ObjRef[]>;
26
26
  }
27
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/attributes/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAGnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,mCAAmC,EACxC,KAAK,wBAAwB,EAE7B,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAE5B,KAAK,MAAM,EAKd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAY7F,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,qBAAa,wBAAyB,YAAW,2BAA2B;IAEpE,OAAO,CAAC,QAAQ,CAAC,QAAQ;aACT,SAAS,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHlC,YACqB,QAAQ,EAAE,2BAA2B,EACtC,SAAS,EAAE,MAAM,EAChB,aAAa,EAAE,aAAa,EAC7C;IAEG,QAAQ,IAAI,qBAAqB,CAEvC;IAEM,uBAAuB,QAAe,MAAM,KAAG,OAAO,CAAC,mCAAmC,CAAC,CAIhG;IAEK,YAAY,QACV,MAAM,SACL;QAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;KAAE,KAChC,OAAO,CAAC,wBAAwB,CAAC,CAIlC;IAEK,mBAAmB,qBACJ,OAAO,CAAC,wBAAwB,CAAC,GAAG,uBAAuB,KAC9E,OAAO,CAAC,wBAAwB,CAAC,CAgClC;IAEK,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mCAAmC,EAAE,CAAC,CAqC9F;IAEM,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAE/E;IAEM,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAMxE;IAEM,kBAAkB,IAAI,eAAe,CAE3C;IAED,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAEvC;IAED,wBAAwB,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAE9C;IAGD,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAI7D;IAED,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAuC/E;IAEY,mCAAmC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyB/E;CACJ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/attributes/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAGnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,mCAAmC,EACxC,KAAK,wBAAwB,EAE7B,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAE5B,KAAK,MAAM,EAKd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAY7F,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,qBAAa,wBAAyB,YAAW,2BAA2B;IAEpE,OAAO,CAAC,QAAQ,CAAC,QAAQ;aACT,SAAS,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHlC,YACqB,QAAQ,EAAE,2BAA2B,EACtC,SAAS,EAAE,MAAM,EAChB,aAAa,EAAE,aAAa,EAC7C;IAEG,QAAQ,IAAI,qBAAqB,CAEvC;IAEM,uBAAuB,QAAe,MAAM,KAAG,OAAO,CAAC,mCAAmC,CAAC,CAIhG;IAEK,YAAY,QACV,MAAM,SACL;QAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;KAAE,KAChC,OAAO,CAAC,wBAAwB,CAAC,CAIlC;IAEK,mBAAmB,qBACJ,OAAO,CAAC,wBAAwB,CAAC,GAAG,uBAAuB,KAC9E,OAAO,CAAC,wBAAwB,CAAC,CAgClC;IAEK,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mCAAmC,EAAE,CAAC,CAqC9F;IAEM,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAE/E;IAEM,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAMxE;IAEM,kBAAkB,IAAI,eAAe,CAE3C;IAED,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAEvC;IAED,wBAAwB,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAE9C;IAGD,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAI7D;IAED,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAuC/E;IAEY,mCAAmC,CAC5C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,2BAA2B,GACtC,OAAO,CAAC,MAAM,EAAE,CAAC,CA4BnB;CACJ"}
@@ -158,13 +158,16 @@ export class TigerWorkspaceAttributes {
158
158
  });
159
159
  });
160
160
  }
161
- async getConnectedAttributesByDisplayForm(ref) {
161
+ async getConnectedAttributesByDisplayForm(ref, options) {
162
162
  const attributeItem = {
163
163
  localIdentifier: objRefToString(ref),
164
164
  label: toLabelQualifier(ref),
165
165
  };
166
166
  const afmValidObjectsQuery = {
167
- types: ["attributes"],
167
+ // computed attributes are attribute-like: they can sit in dashboard filters, so they
168
+ // count among the connected attributes when the caller opts in (the option keeps the
169
+ // request unchanged for callers unaware of computed attributes)
170
+ types: options?.includeComputedAttributes ? ["attributes", "computedAttributes"] : ["attributes"],
168
171
  afm: {
169
172
  attributes: [attributeItem],
170
173
  measures: [],
@@ -176,7 +179,7 @@ export class TigerWorkspaceAttributes {
176
179
  afmValidObjectsQuery,
177
180
  }));
178
181
  return connectedItemsResponse.data.items
179
- .filter((item) => item.type === "attribute")
182
+ .filter((item) => item.type === "attribute" || item.type === "computedAttribute")
180
183
  .map(jsonApiIdToObjRef);
181
184
  }
182
185
  }
@@ -1,5 +1,5 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
- import { ActionsApi_ResolveLlmProviders } from "@gooddata/api-client-tiger/endpoints/actions";
2
+ import { SmartFunctionsAi_ResolveLlmProviders } from "@gooddata/api-client-tiger";
3
3
  import { GenAiApi_SummarizeDashboard, } from "@gooddata/api-client-tiger/endpoints/genAI";
4
4
  import { AnalyticsCatalogService } from "./AnalyticsCatalogService.js";
5
5
  import { ChatConversationsService } from "./ChatConversations.js";
@@ -27,7 +27,7 @@ export class GenAIService {
27
27
  return new SemanticSearchQuery(this.authCall, this.workspaceId);
28
28
  }
29
29
  async getLlmConfigured() {
30
- const result = await this.authCall((client) => ActionsApi_ResolveLlmProviders(client.axios, client.basePath, {
30
+ const result = await this.authCall((client) => SmartFunctionsAi_ResolveLlmProviders(client.axios, client.basePath, {
31
31
  workspaceId: this.workspaceId,
32
32
  }));
33
33
  return Boolean(result.data.data);
@@ -1,4 +1,4 @@
1
- import type { IGetMeasureOptions, IMeasureExpressionToken, IMeasureKeyDrivers, IMeasureReferencing, ISaveMeasureOptions, IUpdateMeasureMetaPayload, IWorkspaceMeasuresService } from "@gooddata/sdk-backend-spi";
1
+ import type { IConnectedAttributesOptions, IGetMeasureOptions, IMeasureExpressionToken, IMeasureKeyDrivers, IMeasureReferencing, ISaveMeasureOptions, IUpdateMeasureMetaPayload, IWorkspaceMeasuresService } from "@gooddata/sdk-backend-spi";
2
2
  import { type IMeasure, type IMeasureMetadataObject, type IMeasureMetadataObjectDefinition, type IObjectCertificationWrite, type ObjRef } from "@gooddata/sdk-model";
3
3
  import { type TigerAuthenticatedCallGuard } from "../../../types/index.js";
4
4
  import { MeasuresQuery } from "./measuresQuery.js";
@@ -18,6 +18,6 @@ export declare class TigerWorkspaceMeasures implements IWorkspaceMeasuresService
18
18
  getMeasureReferencingObjects: (ref: ObjRef) => Promise<IMeasureReferencing>;
19
19
  getMeasuresQuery(): MeasuresQuery;
20
20
  getMeasure(ref: ObjRef, options?: IGetMeasureOptions): Promise<IMeasureMetadataObject>;
21
- getConnectedAttributes(definition: IMeasure, auxMeasures?: IMeasure[]): Promise<ObjRef[]>;
21
+ getConnectedAttributes(definition: IMeasure, auxMeasures?: IMeasure[], options?: IConnectedAttributesOptions): Promise<ObjRef[]>;
22
22
  }
23
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/measures/index.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACR,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,gCAAgC,EACrC,KAAK,yBAAyB,EAC9B,KAAK,MAAM,EAEd,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAI3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQnD,qBAAa,sBAAuB,YAAW,yBAAyB;IAEhE,OAAO,CAAC,QAAQ,CAAC,QAAQ;aACT,SAAS,EAAE,MAAM;IAFrC,YACqB,QAAQ,EAAE,2BAA2B,EACtC,SAAS,EAAE,MAAM,EACjC;IAES,iBAAiB,CAC1B,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE;QAAE,aAAa,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,kBAAkB,CAAC,CAwC7B;IAEY,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CA2BvF;IAEK,aAAa,CACf,OAAO,EAAE,gCAAgC,EACzC,OAAO,GAAE,mBAAwB,GAClC,OAAO,CAAC,sBAAsB,CAAC,CAiBjC;IAEK,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAkBpF;IAEK,iBAAiB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAkC3F;IAEK,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY5F;IAEK,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASrD;IAEM,4BAA4B,QAAe,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAAC,CAqCrF;IAEK,gBAAgB,IAAI,aAAa,CAEvC;IAEY,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAYtG;IAEY,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuBrG;CACJ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/measures/index.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACR,2BAA2B,EAC3B,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,gCAAgC,EACrC,KAAK,yBAAyB,EAC9B,KAAK,MAAM,EAEd,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAI3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQnD,qBAAa,sBAAuB,YAAW,yBAAyB;IAEhE,OAAO,CAAC,QAAQ,CAAC,QAAQ;aACT,SAAS,EAAE,MAAM;IAFrC,YACqB,QAAQ,EAAE,2BAA2B,EACtC,SAAS,EAAE,MAAM,EACjC;IAES,iBAAiB,CAC1B,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE;QAAE,aAAa,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,kBAAkB,CAAC,CAwC7B;IAEY,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CA2BvF;IAEK,aAAa,CACf,OAAO,EAAE,gCAAgC,EACzC,OAAO,GAAE,mBAAwB,GAClC,OAAO,CAAC,sBAAsB,CAAC,CAiBjC;IAEK,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAkBpF;IAEK,iBAAiB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAkC3F;IAEK,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY5F;IAEK,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASrD;IAEM,4BAA4B,QAAe,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAAC,CAqCrF;IAEK,gBAAgB,IAAI,aAAa,CAEvC;IAEY,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAYtG;IAEY,sBAAsB,CAC/B,UAAU,EAAE,QAAQ,EACpB,WAAW,CAAC,EAAE,QAAQ,EAAE,EACxB,OAAO,CAAC,EAAE,2BAA2B,GACtC,OAAO,CAAC,MAAM,EAAE,CAAC,CA0BnB;CACJ"}
@@ -195,10 +195,13 @@ export class TigerWorkspaceMeasures {
195
195
  }));
196
196
  return convertMetricFromBackend(result.data, result.data.included);
197
197
  }
198
- async getConnectedAttributes(definition, auxMeasures) {
198
+ async getConnectedAttributes(definition, auxMeasures, options) {
199
199
  const measureItem = convertMeasure(definition);
200
200
  const afmValidObjectsQuery = {
201
- types: ["attributes"],
201
+ // computed attributes are attribute-like: they can sit in dashboard filters and slice
202
+ // a metric, so they count among the connected attributes when the caller opts in (the
203
+ // option keeps the request unchanged for callers unaware of computed attributes)
204
+ types: options?.includeComputedAttributes ? ["attributes", "computedAttributes"] : ["attributes"],
202
205
  afm: {
203
206
  attributes: [],
204
207
  measures: [measureItem],
@@ -211,7 +214,7 @@ export class TigerWorkspaceMeasures {
211
214
  afmValidObjectsQuery,
212
215
  }));
213
216
  return connectedItemsResponse.data.items
214
- .filter((item) => item.type === "attribute")
217
+ .filter((item) => item.type === "attribute" || item.type === "computedAttribute")
215
218
  .map(jsonApiIdToObjRef);
216
219
  }
217
220
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/objectPermissions/index.ts"],"names":[],"mappings":"AAuBA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,kCAAkC,EAC1C,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EAGzB,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAK3E,qBAAa,sCAAuC,YAAW,kCAAkC;IAEzF,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAF9B,YACqB,QAAQ,EAAE,2BAA2B,EACrC,SAAS,EAAE,MAAM,EAClC;IAES,aAAa,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAevF;IAEY,uBAAuB,CAChC,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,sBAAsB,EAAE,GACnC,OAAO,CAAC,IAAI,CAAC,CAmBf;IAEY,qBAAqB,CAC9B,OAAO,CAAC,EAAE,wBAAwB,GACnC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAgBpC;IAED,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,2BAA2B;CActC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/objectPermissions/index.ts"],"names":[],"mappings":"AAyBA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,kCAAkC,EAC1C,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EAGzB,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAK3E,qBAAa,sCAAuC,YAAW,kCAAkC;IAEzF,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAF9B,YACqB,QAAQ,EAAE,2BAA2B,EACrC,SAAS,EAAE,MAAM,EAClC;IAES,aAAa,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAevF;IAEY,uBAAuB,CAChC,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,sBAAsB,EAAE,GACnC,OAAO,CAAC,IAAI,CAAC,CAmBf;IAEY,qBAAqB,CAC9B,OAAO,CAAC,EAAE,wBAAwB,GACnC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAgBpC;IAED,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,2BAA2B;CActC"}
@@ -1,5 +1,5 @@
1
1
  // (C) 2026 GoodData Corporation
2
- import { ActionsApi_AttributePermissions, ActionsApi_FactPermissions, ActionsApi_LabelPermissions, ActionsApi_ListWorkspaceUserGroups, ActionsApi_ListWorkspaceUsers, ActionsApi_ManageAttributePermissions, ActionsApi_ManageFactPermissions, ActionsApi_ManageLabelPermissions, ActionsApi_ManageMetricPermissions, ActionsApi_MetricPermissions, } from "@gooddata/api-client-tiger/endpoints/actions";
2
+ import { ActionsApi_AttributePermissions, ActionsApi_ComputedAttributePermissions, ActionsApi_FactPermissions, ActionsApi_LabelPermissions, ActionsApi_ListWorkspaceUserGroups, ActionsApi_ListWorkspaceUsers, ActionsApi_ManageAttributePermissions, ActionsApi_ManageComputedAttributePermissions, ActionsApi_ManageFactPermissions, ActionsApi_ManageLabelPermissions, ActionsApi_ManageMetricPermissions, ActionsApi_MetricPermissions, } from "@gooddata/api-client-tiger/endpoints/actions";
3
3
  import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/profile";
4
4
  import { isGranularUserAccessGrantee, } from "@gooddata/sdk-model";
5
5
  import { convertRulesPermission, convertUserAssignee, convertUserGroupAssignee, convertUserGroupPermission, convertUserPermission, } from "../../../convertors/fromBackend/AccessControlConverter.js";
@@ -100,6 +100,11 @@ const fetchPermissionsByKind = (client, kind, workspaceId, objectId) => {
100
100
  return ActionsApi_LabelPermissions(axios, basePath, { workspaceId, labelId: objectId });
101
101
  case "measure":
102
102
  return ActionsApi_MetricPermissions(axios, basePath, { workspaceId, metricId: objectId });
103
+ case "computedAttribute":
104
+ return ActionsApi_ComputedAttributePermissions(axios, basePath, {
105
+ workspaceId,
106
+ computedAttributeId: objectId,
107
+ });
103
108
  }
104
109
  };
105
110
  const manageByKind = (client, kind, workspaceId, objectId, manageLabelPermissionsRequestInner) => {
@@ -129,6 +134,12 @@ const manageByKind = (client, kind, workspaceId, objectId, manageLabelPermission
129
134
  metricId: objectId,
130
135
  manageMetricPermissionsRequestInner: manageLabelPermissionsRequestInner,
131
136
  });
137
+ case "computedAttribute":
138
+ return ActionsApi_ManageComputedAttributePermissions(axios, basePath, {
139
+ workspaceId,
140
+ computedAttributeId: objectId,
141
+ manageComputedAttributePermissionsRequestInner: manageLabelPermissionsRequestInner,
142
+ });
132
143
  }
133
144
  };
134
145
  // WorkspaceUser and UserAssignee carry the same fields. Same for groups. Pass through
@@ -1 +1 @@
1
- {"version":3,"file":"KdaConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/fromBackend/KdaConverter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAgBvF"}
1
+ {"version":3,"file":"KdaConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/fromBackend/KdaConverter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAqBvF"}
@@ -1,4 +1,4 @@
1
- // (C) 2025 GoodData Corporation
1
+ // (C) 2025-2026 GoodData Corporation
2
2
  export function convertChangeAnalyzeToKeyDriver(value) {
3
3
  return {
4
4
  value: value.attributeValue,
@@ -7,9 +7,14 @@ export function convertChangeAnalyzeToKeyDriver(value) {
7
7
  to: value.metricValueInAnalyzedPeriod,
8
8
  delta: value.metricValueDelta,
9
9
  },
10
+ // The response identifies the driver only by id: it may be a label or a computed
11
+ // attribute's fabricated display form, and there is no discriminator to resolve which. The
12
+ // ref is therefore left untyped, making ref comparisons fall back to identifier equality.
13
+ // Known limitation: if a label and a computed attribute share the same id, the consumer
14
+ // cannot tell them apart; fixing that needs a type discriminator in the changeAnalysis
15
+ // response.
10
16
  displayForm: {
11
17
  identifier: value.attributeName,
12
- type: "displayForm",
13
18
  },
14
19
  std: value.attributeValuesChangeStd,
15
20
  mean: value.attributeValuesChangeMean,
@@ -1 +1 @@
1
- {"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../../../src/convertors/fromBackend/afm/dimensions.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAEH,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EAS5B,MAAM,qBAAqB,CAAC;AAiG7B;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACrC,UAAU,EAAE,eAAe,EAAE,EAC7B,GAAG,EAAE,oBAAoB,GAC1B,oBAAoB,EAAE,CAOxB"}
1
+ {"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../../../src/convertors/fromBackend/afm/dimensions.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAEH,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EAW5B,MAAM,qBAAqB,CAAC;AA4G7B;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACrC,UAAU,EAAE,eAAe,EAAE,EAC7B,GAAG,EAAE,oBAAoB,GAC1B,oBAAoB,EAAE,CAYxB"}
@@ -1,10 +1,10 @@
1
1
  // (C) 2019-2026 GoodData Corporation
2
2
  import { groupBy, keyBy, mapValues, uniqBy } from "lodash-es";
3
3
  import { isAttributeHeader } from "@gooddata/api-client-tiger";
4
- import { idRef, isIdentifierRef, isSimpleMeasure, measureItem, measureLocalId, } from "@gooddata/sdk-model";
4
+ import { attributeLocalId, idRef, isComputedAttribute, isIdentifierRef, isSimpleMeasure, measureItem, measureLocalId, } from "@gooddata/sdk-model";
5
5
  import { convertLabelType } from "../LabelTypeConverter.js";
6
6
  const DEFAULT_FORMAT = "#,#.##";
7
- function transformDimension(dim, simpleMeasureRefs, attrTotals) {
7
+ function transformDimension(dim, simpleMeasureRefs, attrTotals, computedAttributeLocalIds) {
8
8
  return {
9
9
  headers: dim.headers.map((header) => {
10
10
  const h = header;
@@ -16,18 +16,25 @@ function transformDimension(dim, simpleMeasureRefs, attrTotals) {
16
16
  kind: h.attributeHeader.geoAreaConfig.collection.kind,
17
17
  }
18
18
  : undefined;
19
+ // A computed attribute has no real labels; its fabricated display form shares the
20
+ // computed attribute's own ref. The descriptor refs must keep the honest
21
+ // `computedAttribute` type so consumers (filters, cross-filtering, drills) resolve
22
+ // them through the computedAttributes service instead of labels.
23
+ const isComputedAttributeHeader = computedAttributeLocalIds.has(h.attributeHeader.localIdentifier);
24
+ const labelRefType = isComputedAttributeHeader ? "computedAttribute" : "displayForm";
25
+ const attributeRefType = isComputedAttributeHeader ? "computedAttribute" : "attribute";
19
26
  return {
20
27
  attributeHeader: {
21
28
  // TODO: TIGER-HACK: Tiger provides no uri
22
29
  uri: "",
23
30
  identifier: h.attributeHeader.label.id,
24
- ref: idRef(h.attributeHeader.label.id, "displayForm"),
31
+ ref: idRef(h.attributeHeader.label.id, labelRefType),
25
32
  formOf: {
26
33
  identifier: h.attributeHeader.attribute.id,
27
34
  name: h.attributeHeader.attributeName,
28
35
  // TODO: TIGER-HACK: Tiger provides no uri
29
36
  uri: "",
30
- ref: idRef(h.attributeHeader.attribute.id, "attribute"),
37
+ ref: idRef(h.attributeHeader.attribute.id, attributeRefType),
31
38
  },
32
39
  localIdentifier: h.attributeHeader.localIdentifier,
33
40
  name: h.attributeHeader.labelName,
@@ -35,7 +42,7 @@ function transformDimension(dim, simpleMeasureRefs, attrTotals) {
35
42
  granularity: h.attributeHeader.granularity,
36
43
  format: h.attributeHeader.format,
37
44
  labelType: convertLabelType(h.attributeHeader.valueType),
38
- primaryLabel: idRef(h.attributeHeader.primaryLabel.id, "displayForm"),
45
+ primaryLabel: idRef(h.attributeHeader.primaryLabel.id, labelRefType),
39
46
  geoAreaConfig,
40
47
  },
41
48
  };
@@ -97,5 +104,6 @@ function getAttrTotals(def) {
97
104
  export function transformResultDimensions(dimensions, def) {
98
105
  const simpleMeasures = def.measures.filter(isSimpleMeasure);
99
106
  const measureRefs = mapValues(keyBy(simpleMeasures, measureLocalId), (m) => measureItem(m));
100
- return dimensions.map((dim) => transformDimension(dim, measureRefs, getAttrTotals(def)));
107
+ const computedAttributeLocalIds = new Set(def.attributes.filter(isComputedAttribute).map(attributeLocalId));
108
+ return dimensions.map((dim) => transformDimension(dim, measureRefs, getAttrTotals(def), computedAttributeLocalIds));
101
109
  }
@@ -566,7 +566,8 @@ function buildDashboardReferences(aacDashboard, references, savedDashboardId) {
566
566
  const filters = data?.filterContext
567
567
  ? convertFilterContextFromBackend(buildFilterContextWrapper(data.filterContext))
568
568
  : undefined;
569
- const insights = references?.visualizations.map((vis) => {
569
+ const vis = [...(references?.visualizations ?? []), ...(references?.new_visualizations ?? [])];
570
+ const insights = vis.map((vis) => {
570
571
  return visualizationObjectsItemToInsight(yamlVisualisationToMetadataObject(entities, vis));
571
572
  }) ?? [];
572
573
  const dashboard = data
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-backend-tiger",
3
- "version": "11.56.0-alpha.7",
3
+ "version": "11.56.0-alpha.8",
4
4
  "description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN",
5
5
  "license": "MIT",
6
6
  "author": "GoodData",
@@ -34,12 +34,12 @@
34
34
  "ts-invariant": "0.10.3",
35
35
  "tslib": "2.8.1",
36
36
  "uuid": "11.1.1",
37
- "@gooddata/api-client-tiger": "11.56.0-alpha.7",
38
- "@gooddata/sdk-backend-base": "11.56.0-alpha.7",
39
- "@gooddata/sdk-backend-spi": "11.56.0-alpha.7",
40
- "@gooddata/sdk-code-convertors": "11.56.0-alpha.7",
41
- "@gooddata/sdk-model": "11.56.0-alpha.7",
42
- "@gooddata/util": "11.56.0-alpha.7"
37
+ "@gooddata/sdk-backend-spi": "11.56.0-alpha.8",
38
+ "@gooddata/sdk-backend-base": "11.56.0-alpha.8",
39
+ "@gooddata/sdk-model": "11.56.0-alpha.8",
40
+ "@gooddata/api-client-tiger": "11.56.0-alpha.8",
41
+ "@gooddata/sdk-code-convertors": "11.56.0-alpha.8",
42
+ "@gooddata/util": "11.56.0-alpha.8"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@gooddata/fixtures": "3.7.0",
@@ -63,10 +63,10 @@
63
63
  "oxlint-tsgolint": "0.15.0",
64
64
  "typescript": "7.0.2",
65
65
  "vitest": "4.1.8",
66
- "@gooddata/catalog-export": "11.56.0-alpha.7",
67
- "@gooddata/eslint-config": "11.56.0-alpha.7",
68
- "@gooddata/oxlint-config": "11.56.0-alpha.7",
69
- "@gooddata/reference-workspace": "11.56.0-alpha.7"
66
+ "@gooddata/catalog-export": "11.56.0-alpha.8",
67
+ "@gooddata/eslint-config": "11.56.0-alpha.8",
68
+ "@gooddata/reference-workspace": "11.56.0-alpha.8",
69
+ "@gooddata/oxlint-config": "11.56.0-alpha.8"
70
70
  },
71
71
  "scripts": {
72
72
  "_phase:build": "npm run build",