@gooddata/sdk-backend-tiger 11.56.0-alpha.7 → 11.56.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.
- package/esm/__version.d.ts +1 -1
- package/esm/__version.d.ts.map +1 -1
- package/esm/__version.js +1 -1
- package/esm/backend/workspace/attributes/index.d.ts +2 -2
- package/esm/backend/workspace/attributes/index.d.ts.map +1 -1
- package/esm/backend/workspace/attributes/index.js +6 -3
- package/esm/backend/workspace/genAI/index.js +2 -2
- package/esm/backend/workspace/measures/index.d.ts +2 -2
- package/esm/backend/workspace/measures/index.d.ts.map +1 -1
- package/esm/backend/workspace/measures/index.js +6 -3
- package/esm/backend/workspace/objectPermissions/index.d.ts.map +1 -1
- package/esm/backend/workspace/objectPermissions/index.js +12 -1
- package/esm/convertors/fromBackend/KdaConverter.d.ts.map +1 -1
- package/esm/convertors/fromBackend/KdaConverter.js +7 -2
- package/esm/convertors/fromBackend/afm/dimensions.d.ts.map +1 -1
- package/esm/convertors/fromBackend/afm/dimensions.js +14 -6
- package/esm/convertors/fromBackend/genAIConvertor.js +2 -1
- package/package.json +11 -11
package/esm/__version.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "11.56.0
|
|
1
|
+
export declare const LIB_VERSION = "11.56.0";
|
|
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.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"__version.d.ts","sourceRoot":"","sources":["../src/__version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"__version.d.ts","sourceRoot":"","sources":["../src/__version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,eAAO,MAAM,eAAe,2EAA2E,CAAC;AAExG,eAAO,MAAM,QAAQ,gCAAgC,CAAC"}
|
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
|
|
3
|
+
export const LIB_VERSION = "11.56.0";
|
|
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,
|
|
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
|
-
|
|
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 {
|
|
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) =>
|
|
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,
|
|
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
|
-
|
|
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":"
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
|
3
|
+
"version": "11.56.0",
|
|
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
|
|
38
|
-
"@gooddata/sdk-backend-
|
|
39
|
-
"@gooddata/sdk-backend-
|
|
40
|
-
"@gooddata/sdk-code-convertors": "11.56.0
|
|
41
|
-
"@gooddata/sdk-model": "11.56.0
|
|
42
|
-
"@gooddata/util": "11.56.0
|
|
37
|
+
"@gooddata/api-client-tiger": "11.56.0",
|
|
38
|
+
"@gooddata/sdk-backend-spi": "11.56.0",
|
|
39
|
+
"@gooddata/sdk-backend-base": "11.56.0",
|
|
40
|
+
"@gooddata/sdk-code-convertors": "11.56.0",
|
|
41
|
+
"@gooddata/sdk-model": "11.56.0",
|
|
42
|
+
"@gooddata/util": "11.56.0"
|
|
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
|
|
67
|
-
"@gooddata/eslint-config": "11.56.0
|
|
68
|
-
"@gooddata/oxlint-config": "11.56.0
|
|
69
|
-
"@gooddata/reference-workspace": "11.56.0
|
|
66
|
+
"@gooddata/catalog-export": "11.56.0",
|
|
67
|
+
"@gooddata/eslint-config": "11.56.0",
|
|
68
|
+
"@gooddata/oxlint-config": "11.56.0",
|
|
69
|
+
"@gooddata/reference-workspace": "11.56.0"
|
|
70
70
|
},
|
|
71
71
|
"scripts": {
|
|
72
72
|
"_phase:build": "npm run build",
|