@gooddata/sdk-backend-tiger 11.57.0-alpha.0 → 11.57.0-alpha.2

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.57.0-alpha.0";
1
+ export declare const LIB_VERSION = "11.57.0-alpha.2";
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.57.0-alpha.0";
3
+ export const LIB_VERSION = "11.57.0-alpha.2";
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 +1 @@
1
- {"version":3,"file":"dashboardSideloads.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/dashboards/dashboardSideloads.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,+CAA+C,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAElF,KAAK,gBAAgB,GAAG,WAAW,CAAC,+CAA+C,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAgBxG;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,gCAAgC,EAAE,GAAG,gBAAgB,EAAE,CAOvG"}
1
+ {"version":3,"file":"dashboardSideloads.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/dashboards/dashboardSideloads.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,+CAA+C,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAElF,KAAK,gBAAgB,GAAG,WAAW,CAAC,+CAA+C,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAkBxG;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,gCAAgC,EAAE,GAAG,gBAAgB,EAAE,CAOvG"}
@@ -4,12 +4,14 @@ const SIDELOADED_REFERENCE_TYPES = [
4
4
  "dataSet",
5
5
  "dashboardPlugin",
6
6
  "analyticalDashboard",
7
+ "measure",
7
8
  ];
8
9
  const SIDELOAD_INCLUDE_BY_TYPE = {
9
10
  insight: "visualizationObjects",
10
11
  dataSet: "datasets",
11
12
  dashboardPlugin: "dashboardPlugins",
12
13
  analyticalDashboard: "analyticalDashboards",
14
+ measure: "metrics",
13
15
  };
14
16
  /**
15
17
  * Side-loads for a dashboard GET. Filter contexts are always side-loaded because dashboard
@@ -33,7 +33,7 @@ export declare class TigerWorkspaceDashboards implements IWorkspaceDashboardsSer
33
33
  timezoneId?: string;
34
34
  } | null>;
35
35
  private getDashboardWithSideloads;
36
- createDashboard: (dashboard: IDashboardDefinition) => Promise<IDashboard>;
36
+ createDashboard: (dashboard: IDashboardDefinition, generateId?: boolean) => Promise<IDashboard>;
37
37
  updateDashboard: (originalDashboard: IDashboard, updatedDashboard: IDashboardDefinition) => Promise<IDashboard>;
38
38
  /**
39
39
  * Starts AI dashboard summary workflow.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/dashboards/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/dashboards/index.ts"],"names":[],"mappings":"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"}
@@ -251,7 +251,7 @@ export class TigerWorkspaceDashboards {
251
251
  metaInclude: ["accessInfo"],
252
252
  }).then((result) => result.data));
253
253
  };
254
- createDashboard = async (dashboard) => {
254
+ createDashboard = async (dashboard, generateId = true) => {
255
255
  // Process filter contexts for each tab first
256
256
  const dashboardWithTabFilterContexts = await this.processDashboardTabsFilterContexts(dashboard);
257
257
  // For the root-level filter context (backward compatibility):
@@ -270,6 +270,11 @@ export class TigerWorkspaceDashboards {
270
270
  workspaceId: this.workspace,
271
271
  jsonApiAnalyticalDashboardPostOptionalIdDocument: {
272
272
  data: {
273
+ ...(generateId
274
+ ? {}
275
+ : {
276
+ id: dashboard.identifier,
277
+ }),
273
278
  type: "analyticalDashboard",
274
279
  attributes: {
275
280
  content: dashboardContent,
@@ -1 +1 @@
1
- {"version":3,"file":"referenceAvailability.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/dashboards/referenceAvailability.ts"],"names":[],"mappings":"AAEA,OAAO,EAGH,KAAK,qCAAqC,EAC1C,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACR,8BAA8B,EAC9B,gCAAgC,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,UAAU,EAA0B,MAAM,qBAAqB,CAAC;AAE9E,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AA6H3E;;GAEG;AACH,wBAAgB,4BAA4B,CACxC,QAAQ,EAAE,qCAAqC,EAC/C,KAAK,EAAE,gCAAgC,EAAE,GAC1C,8BAA8B,EAAE,CAGlC;AAED;;;;;;GAMG;AACH,wBAAgB,qCAAqC,CACjD,QAAQ,EAAE,qCAAqC,EAC/C,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,gCAAgC,EAAE,GAC1C,8BAA8B,EAAE,CAWlC;AAED;;;;GAIG;AACH,wBAAgB,yCAAyC,CACrD,OAAO,EAAE,uBAAuB,EAChC,UAAU,CAAC,EAAE,gBAAgB,EAAE,GAChC,8BAA8B,EAAE,CAIlC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kCAAkC,CACpD,QAAQ,EAAE,2BAA2B,EACrC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,gCAAgC,EAAE,GAC1C,OAAO,CAAC,8BAA8B,EAAE,CAAC,CAwB3C;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,EAAE,CAQ3E"}
1
+ {"version":3,"file":"referenceAvailability.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/dashboards/referenceAvailability.ts"],"names":[],"mappings":"AAEA,OAAO,EAGH,KAAK,qCAAqC,EAC1C,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACR,8BAA8B,EAC9B,gCAAgC,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,UAAU,EAA0B,MAAM,qBAAqB,CAAC;AAE9E,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAoI3E;;GAEG;AACH,wBAAgB,4BAA4B,CACxC,QAAQ,EAAE,qCAAqC,EAC/C,KAAK,EAAE,gCAAgC,EAAE,GAC1C,8BAA8B,EAAE,CAGlC;AAED;;;;;;GAMG;AACH,wBAAgB,qCAAqC,CACjD,QAAQ,EAAE,qCAAqC,EAC/C,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,gCAAgC,EAAE,GAC1C,8BAA8B,EAAE,CAWlC;AAED;;;;GAIG;AACH,wBAAgB,yCAAyC,CACrD,OAAO,EAAE,uBAAuB,EAChC,UAAU,CAAC,EAAE,gBAAgB,EAAE,GAChC,8BAA8B,EAAE,CAIlC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kCAAkC,CACpD,QAAQ,EAAE,2BAA2B,EACrC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,gCAAgC,EAAE,GAC1C,OAAO,CAAC,8BAA8B,EAAE,CAAC,CAwB3C;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,EAAE,CAQ3E"}
@@ -12,6 +12,7 @@ const RELATIONSHIP_KEYS = {
12
12
  dashboardPlugin: "dashboardPlugins",
13
13
  filterContext: "filterContexts",
14
14
  displayForm: "labels",
15
+ measure: "metrics",
15
16
  analyticalDashboard: "analyticalDashboards",
16
17
  };
17
18
  function isLinkage(value) {
@@ -1 +1 @@
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
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/objectPermissions/index.ts"],"names":[],"mappings":"AA6BA,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;AAa3E,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"}
@@ -107,38 +107,38 @@ const fetchPermissionsByKind = (client, kind, workspaceId, objectId) => {
107
107
  });
108
108
  }
109
109
  };
110
- const manageByKind = (client, kind, workspaceId, objectId, manageLabelPermissionsRequestInner) => {
110
+ const manageByKind = (client, kind, workspaceId, objectId, assignments) => {
111
111
  const { axios, basePath } = client;
112
112
  switch (kind) {
113
113
  case "attribute":
114
114
  return ActionsApi_ManageAttributePermissions(axios, basePath, {
115
115
  workspaceId,
116
116
  attributeId: objectId,
117
- manageAttributePermissionsRequestInner: manageLabelPermissionsRequestInner,
117
+ manageAttributePermissionsRequestInner: assignments,
118
118
  });
119
119
  case "fact":
120
120
  return ActionsApi_ManageFactPermissions(axios, basePath, {
121
121
  workspaceId,
122
122
  factId: objectId,
123
- manageFactPermissionsRequestInner: manageLabelPermissionsRequestInner,
123
+ manageFactPermissionsRequestInner: assignments,
124
124
  });
125
125
  case "label":
126
126
  return ActionsApi_ManageLabelPermissions(axios, basePath, {
127
127
  workspaceId,
128
128
  labelId: objectId,
129
- manageLabelPermissionsRequestInner,
129
+ manageLabelPermissionsRequestInner: assignments,
130
130
  });
131
131
  case "measure":
132
132
  return ActionsApi_ManageMetricPermissions(axios, basePath, {
133
133
  workspaceId,
134
134
  metricId: objectId,
135
- manageMetricPermissionsRequestInner: manageLabelPermissionsRequestInner,
135
+ manageMetricPermissionsRequestInner: assignments,
136
136
  });
137
137
  case "computedAttribute":
138
138
  return ActionsApi_ManageComputedAttributePermissions(axios, basePath, {
139
139
  workspaceId,
140
140
  computedAttributeId: objectId,
141
- manageComputedAttributePermissionsRequestInner: manageLabelPermissionsRequestInner,
141
+ manageComputedAttributePermissionsRequestInner: assignments,
142
142
  });
143
143
  }
144
144
  };
@@ -1 +1 @@
1
- {"version":3,"file":"genAIConvertor.d.ts","sourceRoot":"","sources":["../../../src/convertors/fromBackend/genAIConvertor.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAI/B,KAAK,yBAAyB,EAI9B,KAAK,aAAa,EAQrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEH,KAAK,iBAAiB,EAGtB,KAAK,sBAAsB,EAE3B,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAGhC,KAAK,gBAAgB,EAExB,MAAM,2BAA2B,CAAC;AAuCnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,wBAAgB,kCAAkC,CAAC,YAAY,EAAE,sBAAsB,GAAG,iBAAiB,CAS1G;AAED,wBAAgB,sCAAsC,CAClD,IAAI,EAAE,0BAA0B,EAChC,SAAS,EAAE,0BAA0B,CAAC,WAAW,CAAC,GAAG,SAAS,EAC9D,OAAO,EAAE,qBAAqB,EAAE,EAChC,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,gBAAgB,EACzB,QAAQ,CAAC,EAAE,MAAM,GAClB,qBAAqB,GAAG,SAAS,CA6BnC;AAED,wBAAgB,uCAAuC,CACnD,KAAK,EAAE,0BAA0B,EAAE,EACnC,SAAS,EAAE,0BAA0B,CAAC,WAAW,CAAC,GAAG,SAAS,EAC9D,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,gBAAgB,EACzB,QAAQ,CAAC,EAAE,MAAM,GAClB,qBAAqB,EAAE,CAkBzB;AAoJD,wBAAgB,uCAAuC,CACnD,IAAI,EAAE,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,OAAO,CAAC,EAAE,MAAM,GACjB,sBAAsB,CAQxB;AAED;;;GAGG;AACH,wBAAgB,iDAAiD,CAC7D,IAAI,EAAE,yBAAyB,EAC/B,OAAO,CAAC,EAAE,MAAM,GACjB,gCAAgC,CAgBlC;AAED;;;;GAIG;AACH,wBAAgB,4CAA4C,CACxD,MAAM,EAAE,gCAAgC,GAAG,IAAI,GAAG,SAAS,GAC5D,2BAA2B,GAAG,SAAS,CAgEzC;AA2FD,wBAAgB,oCAAoC,CAChD,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GACvC,gBAAgB,CAQlB"}
1
+ {"version":3,"file":"genAIConvertor.d.ts","sourceRoot":"","sources":["../../../src/convertors/fromBackend/genAIConvertor.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAI/B,KAAK,yBAAyB,EAK9B,KAAK,aAAa,EAQrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEH,KAAK,iBAAiB,EAGtB,KAAK,sBAAsB,EAE3B,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAGhC,KAAK,gBAAgB,EAExB,MAAM,2BAA2B,CAAC;AAuCnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,wBAAgB,kCAAkC,CAAC,YAAY,EAAE,sBAAsB,GAAG,iBAAiB,CAS1G;AAED,wBAAgB,sCAAsC,CAClD,IAAI,EAAE,0BAA0B,EAChC,SAAS,EAAE,0BAA0B,CAAC,WAAW,CAAC,GAAG,SAAS,EAC9D,OAAO,EAAE,qBAAqB,EAAE,EAChC,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,gBAAgB,EACzB,QAAQ,CAAC,EAAE,MAAM,GAClB,qBAAqB,GAAG,SAAS,CA6BnC;AAED,wBAAgB,uCAAuC,CACnD,KAAK,EAAE,0BAA0B,EAAE,EACnC,SAAS,EAAE,0BAA0B,CAAC,WAAW,CAAC,GAAG,SAAS,EAC9D,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,gBAAgB,EACzB,QAAQ,CAAC,EAAE,MAAM,GAClB,qBAAqB,EAAE,CAkBzB;AAsMD,wBAAgB,uCAAuC,CACnD,IAAI,EAAE,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,OAAO,CAAC,EAAE,MAAM,GACjB,sBAAsB,CAQxB;AAED;;;GAGG;AACH,wBAAgB,iDAAiD,CAC7D,IAAI,EAAE,yBAAyB,EAC/B,OAAO,CAAC,EAAE,MAAM,GACjB,gCAAgC,CAgBlC;AAED;;;;GAIG;AACH,wBAAgB,4CAA4C,CACxD,MAAM,EAAE,gCAAgC,GAAG,IAAI,GAAG,SAAS,GAC5D,2BAA2B,GAAG,SAAS,CAgEzC;AA2FD,wBAAgB,oCAAoC,CAChD,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GACvC,gBAAgB,CAQlB"}
@@ -81,73 +81,7 @@ function convertChatConversationContentFromBackend(content, history, dateNormali
81
81
  case "multipart":
82
82
  return {
83
83
  type: "multipart",
84
- // Unknown parts are dropped rather than failing the whole item, so the rest
85
- // of the message (known parts) keeps rendering normally.
86
- parts: content.parts
87
- .map((part) => {
88
- switch (part.type) {
89
- case "text":
90
- return {
91
- type: "text",
92
- text: part.text,
93
- };
94
- case "alertProposal":
95
- return {
96
- type: "alertProposal",
97
- alertProposal: convertAlertProposalFrom(part.alertProposal),
98
- };
99
- case "visualization":
100
- return {
101
- type: "visualization",
102
- visualization: part.visualization
103
- ? visualizationObjectsItemToInsight(yamlVisualisationToMetadataObject([], part.visualization))
104
- : null,
105
- };
106
- case "dashboard": {
107
- return {
108
- type: "dashboard",
109
- ...applyDashboardDefinition(part),
110
- };
111
- }
112
- case "dashboardPatch": {
113
- if (!part.patch) {
114
- return undefined;
115
- }
116
- return {
117
- type: "dashboard",
118
- ...applyDashboardPatch(history, part.patch),
119
- };
120
- }
121
- case "kda":
122
- return {
123
- type: "kda",
124
- kda: convertKda(part.kda, dateNormalizer, locale, timezone),
125
- };
126
- case "whatIf":
127
- return {
128
- type: "whatIf",
129
- whatIf: convertWhatIf(part.whatIf),
130
- };
131
- case "searchResults":
132
- return {
133
- type: "searchResults",
134
- keywords: part.keywords,
135
- searchResults: convertSearchResults(part.objects),
136
- relationships: convertSearchRelationships(part.relationships),
137
- };
138
- case "clarifyingQuestions":
139
- return {
140
- type: "clarifyingQuestions",
141
- questions: part.questions,
142
- };
143
- default:
144
- // Unknown part type (e.g. sent by a newer backend): log and drop
145
- // it, do not fail the whole item.
146
- assertNever(part);
147
- return undefined;
148
- }
149
- })
150
- .filter((part) => part !== undefined),
84
+ parts: convertMultipartParts(content.parts, history, dateNormalizer, locale, timezone),
151
85
  suggestions: convertChatSuggestionItemFromBackend(content.suggestions),
152
86
  };
153
87
  case "toolCall":
@@ -171,6 +105,103 @@ function convertChatConversationContentFromBackend(content, history, dateNormali
171
105
  return undefined;
172
106
  }
173
107
  }
108
+ /**
109
+ * Converts the parts of a single multipart message.
110
+ *
111
+ * Parts are converted in order, and each one sees the siblings converted before it. That matters
112
+ * for `dashboardPatch`: the base document it applies to arrives as a `dashboard` part next to it
113
+ * in the same message, and `history` only holds the previous messages - the current item is
114
+ * appended to it after it has been converted, in both the replay and the SSE path.
115
+ *
116
+ * A `dashboard` part that only carries the base for a sibling patch is folded into that patch: it
117
+ * is used as the base but not emitted, so the message renders a single card showing the patched
118
+ * draft instead of a second card offering the unchanged dashboard.
119
+ */
120
+ function convertMultipartParts(rawParts, history, dateNormalizer, locale, timezone) {
121
+ const patchedDashboardIds = new Set(rawParts.flatMap((part) => part.type === "dashboardPatch" && part.patch?.dashboard_id ? [part.patch.dashboard_id] : []));
122
+ const siblings = [];
123
+ const parts = [];
124
+ rawParts.forEach((rawPart) => {
125
+ const part = convertMultipartPart(rawPart, history, siblings, dateNormalizer, locale, timezone);
126
+ // Unknown parts are dropped rather than failing the whole item, so the rest
127
+ // of the message (known parts) keeps rendering normally.
128
+ if (!part) {
129
+ return;
130
+ }
131
+ siblings.push(part);
132
+ const isPatchBase = rawPart.type === "dashboard" &&
133
+ part.type === "dashboard" &&
134
+ !!part.dashboard &&
135
+ patchedDashboardIds.has(part.dashboard.identifier);
136
+ if (!isPatchBase) {
137
+ parts.push(part);
138
+ }
139
+ });
140
+ return parts;
141
+ }
142
+ function convertMultipartPart(part, history, siblings, dateNormalizer, locale, timezone) {
143
+ switch (part.type) {
144
+ case "text":
145
+ return {
146
+ type: "text",
147
+ text: part.text,
148
+ };
149
+ case "alertProposal":
150
+ return {
151
+ type: "alertProposal",
152
+ alertProposal: convertAlertProposalFrom(part.alertProposal),
153
+ };
154
+ case "visualization":
155
+ return {
156
+ type: "visualization",
157
+ visualization: part.visualization
158
+ ? visualizationObjectsItemToInsight(yamlVisualisationToMetadataObject([], part.visualization))
159
+ : null,
160
+ };
161
+ case "dashboard": {
162
+ return {
163
+ type: "dashboard",
164
+ ...applyDashboardDefinition(part),
165
+ };
166
+ }
167
+ case "dashboardPatch": {
168
+ if (!part.patch) {
169
+ return undefined;
170
+ }
171
+ return {
172
+ type: "dashboard",
173
+ ...applyDashboardPatch(history, siblings, part.patch),
174
+ };
175
+ }
176
+ case "kda":
177
+ return {
178
+ type: "kda",
179
+ kda: convertKda(part.kda, dateNormalizer, locale, timezone),
180
+ };
181
+ case "whatIf":
182
+ return {
183
+ type: "whatIf",
184
+ whatIf: convertWhatIf(part.whatIf),
185
+ };
186
+ case "searchResults":
187
+ return {
188
+ type: "searchResults",
189
+ keywords: part.keywords,
190
+ searchResults: convertSearchResults(part.objects),
191
+ relationships: convertSearchRelationships(part.relationships),
192
+ };
193
+ case "clarifyingQuestions":
194
+ return {
195
+ type: "clarifyingQuestions",
196
+ questions: part.questions,
197
+ };
198
+ default:
199
+ // Unknown part type (e.g. sent by a newer backend): log and drop
200
+ // it, do not fail the whole item.
201
+ assertNever(part);
202
+ return undefined;
203
+ }
204
+ }
174
205
  function tryParseJson(jsonString) {
175
206
  try {
176
207
  return JSON.parse(jsonString);
@@ -477,20 +508,21 @@ function asNonPersistedFilterContext(fc) {
477
508
  };
478
509
  }
479
510
  // Apply dashboard patch to the items
480
- function applyDashboardPatch(items, patch) {
511
+ function applyDashboardPatch(items, siblings, patch) {
481
512
  if (!patch?.dashboard_id) {
482
513
  return {
483
514
  dashboard: null,
484
515
  insights: null,
485
516
  };
486
517
  }
487
- const related = collectRelatedItems(items, {
518
+ const related = collectRelatedItems(items, siblings, {
488
519
  identifier: patch.dashboard_id,
489
520
  type: "analyticalDashboard",
490
521
  });
491
- const last = related[related.length - 1];
522
+ // The most recent card for this dashboard need not carry a base - a patch that failed to
523
+ // apply resolves to one without. Rebase on the last card that actually has one.
524
+ const last = related.filter((part) => !!part.base).pop();
492
525
  const base = last?.base;
493
- const saved = last?.saved;
494
526
  const previousInsights = last?.insights ?? [];
495
527
  if (!base) {
496
528
  return {
@@ -511,23 +543,34 @@ function applyDashboardPatch(items, patch) {
511
543
  patchError: e,
512
544
  };
513
545
  }
514
- const { dashboard, insights } = buildDashboardReferences(newDocument, patch.references, saved);
546
+ const { dashboard, insights } = buildDashboardReferences(newDocument, patch.references, patch.dashboard_id);
547
+ // `base` is carried over unchanged: the operations are defined against the relayed document,
548
+ // not against the result of a previous proposal, so a follow-up patch - which arrives without
549
+ // a base of its own as long as the relayed document has not changed - rebases on the same one.
550
+ //
551
+ // `saved` deliberately stays unset. The dashboard does exist saved, but this card describes a
552
+ // change the user has not accepted yet, so it has to offer the draft and not the saved copy.
515
553
  return {
554
+ base,
516
555
  dashboard: convertToTemporaryFilterContexts(dashboard),
517
556
  insights: [...previousInsights, ...insights],
518
557
  };
519
558
  }
520
- function collectRelatedItems(items, ref) {
559
+ function collectRelatedItems(items, siblings, ref) {
521
560
  const related = [];
561
+ const collect = (part) => {
562
+ if (part.type === "dashboard" && part.dashboard && areObjRefsEqual(part.dashboard.ref, ref)) {
563
+ related.push(part);
564
+ }
565
+ };
522
566
  items.forEach((item) => {
523
567
  if (item.content.type === "multipart") {
524
- item.content.parts.forEach((part) => {
525
- if (part.type === "dashboard" && part.dashboard && areObjRefsEqual(part.dashboard.ref, ref)) {
526
- related.push(part);
527
- }
528
- });
568
+ item.content.parts.forEach(collect);
529
569
  }
530
570
  });
571
+ // Siblings come last: a base resent in the current message wins over anything in history,
572
+ // which is exactly what happens when the user edited the dashboard since the last proposal.
573
+ siblings.forEach(collect);
531
574
  return related;
532
575
  }
533
576
  // Apply dashboard definition
@@ -81,7 +81,7 @@ function handleAttributeSort(sortItem, dims, sorting) {
81
81
  };
82
82
  const dimIdx = dims.findIndex((dim) => dim.itemIdentifiers.includes(attributeIdentifier));
83
83
  if (dimIdx < 0) {
84
- // eslint-disable-next-line no-console
84
+ // oxlint-disable-next-line eslint-js/no-console
85
85
  console.log(`attempting to sort by attribute with localId ${attributeIdentifier} but this attribute is not in any dimension.`);
86
86
  return;
87
87
  }
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // (C) 2019-2026 GoodData Corporation
2
- /* oxlint-disable no-barrel-files/no-barrel-files */
2
+ // oxlint-disable no-barrel-files/no-barrel-files
3
3
  /**
4
4
  * This package provides the Analytical Backend implementation for GoodData Cloud and GoodData.CN.
5
5
  *
@@ -53,5 +53,5 @@ export { convertInsightToVisualizationContent } from "./convertors/toBackend/Ins
53
53
  /**
54
54
  * @deprecated This will be removed in the next major release, please use the named export "tigerFactory" instead
55
55
  */
56
- // eslint-disable-next-line no-restricted-exports
56
+ // oxlint-disable-next-line eslint-js/no-restricted-exports
57
57
  export default tigerFactory;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-backend-tiger",
3
- "version": "11.57.0-alpha.0",
3
+ "version": "11.57.0-alpha.2",
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/sdk-backend-base": "11.57.0-alpha.0",
38
- "@gooddata/api-client-tiger": "11.57.0-alpha.0",
39
- "@gooddata/sdk-model": "11.57.0-alpha.0",
40
- "@gooddata/sdk-backend-spi": "11.57.0-alpha.0",
41
- "@gooddata/sdk-code-convertors": "11.57.0-alpha.0",
42
- "@gooddata/util": "11.57.0-alpha.0"
37
+ "@gooddata/sdk-backend-spi": "11.57.0-alpha.2",
38
+ "@gooddata/api-client-tiger": "11.57.0-alpha.2",
39
+ "@gooddata/sdk-code-convertors": "11.57.0-alpha.2",
40
+ "@gooddata/util": "11.57.0-alpha.2",
41
+ "@gooddata/sdk-backend-base": "11.57.0-alpha.2",
42
+ "@gooddata/sdk-model": "11.57.0-alpha.2"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@gooddata/fixtures": "3.7.0",
@@ -59,14 +59,15 @@
59
59
  "eslint-plugin-sonarjs": "3.0.6",
60
60
  "npm-run-all": "4.1.5",
61
61
  "oxfmt": "0.66.0",
62
- "oxlint": "1.57.0",
63
- "oxlint-tsgolint": "0.15.0",
62
+ "oxlint": "1.66.0",
63
+ "oxlint-plugin-eslint": "1.82.0",
64
+ "oxlint-tsgolint": "0.18.1",
64
65
  "typescript": "7.0.2",
65
66
  "vitest": "4.1.8",
66
- "@gooddata/catalog-export": "11.57.0-alpha.0",
67
- "@gooddata/oxlint-config": "11.57.0-alpha.0",
68
- "@gooddata/eslint-config": "11.57.0-alpha.0",
69
- "@gooddata/reference-workspace": "11.57.0-alpha.0"
67
+ "@gooddata/catalog-export": "11.57.0-alpha.2",
68
+ "@gooddata/oxlint-config": "11.57.0-alpha.2",
69
+ "@gooddata/eslint-config": "11.57.0-alpha.2",
70
+ "@gooddata/reference-workspace": "11.57.0-alpha.2"
70
71
  },
71
72
  "scripts": {
72
73
  "_phase:build": "npm run build",